New module 'xconcat-filename', split off from module 'concat-filename'.
authorBruno Haible <bruno@clisp.org>
Mon, 1 Sep 2008 23:34:21 +0000 (01:34 +0200)
committerBruno Haible <bruno@clisp.org>
Mon, 1 Sep 2008 23:34:21 +0000 (01:34 +0200)
13 files changed:
ChangeLog
NEWS
lib/concat-filename.c
lib/concat-filename.h
lib/findprog.c
lib/javacomp.c
lib/javaexec.c
lib/xconcat-filename.c [new file with mode: 0644]
modules/concat-filename
modules/findprog
modules/javacomp
modules/javaexec
modules/xconcat-filename [new file with mode: 0644]

index cf0e638..26251f9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,35 @@
 2008-09-01  Bruno Haible  <bruno@clisp.org>
 
+       Split module 'concat-filename' into 'concat-filename' (LGPL) and
+       'xconcat-filename' (GPL).
+       * modules/concat-filename (Depends-on): Add malloc-posix, remove xalloc.
+       (License): Change to LGPLv2+.
+       * modules/xconcat-filename: New file.
+       * lib/concat-filename.h (concatenated_filename): Change specification.
+       (xconcatenated_filename): New declaration.
+       * lib/concat-filename.c: Include errno.h, stdlib.h, not xalloc.h.
+       (concatenated_filename): Use malloc instead of xalloc. Handle out-of-
+       memory situations.
+       * lib/xconcat-filename.c: New file.
+       * NEWS: Mention the change.
+       * lib/findprog.c: Include concat-filename.h, not filename.h.
+       (find_in_path): Use xconcatenated_filename instead of
+       concatenated_filename.
+       * lib/javacomp.c: Include concat-filename.h, not filename.h.
+       (is_envjavac_gcj43_usable, is_envjavac_oldgcj_14_14_usable,
+       is_envjavac_oldgcj_14_13_usable, is_envjavac_nongcj_usable,
+       is_gcj_present, is_gcj43_usable, is_oldgcj_14_14_usable,
+       is_oldgcj_14_13_usable, is_javac_usable): Use xconcatenated_filename
+       instead of concatenated_filename.
+       * lib/javaexec.c: Include concat-filename.h, not filename.h.
+       (execute_java_class): Use xconcatenated_filename instead of
+       concatenated_filename.
+       * modules/findprog (Depends-on): Add xconcat-filename, remove filename.
+       * modules/javacomp (Depends-on): Likewise.
+       * modules/javaexec (Depends-on): Likewise.
+
+2008-09-01  Bruno Haible  <bruno@clisp.org>
+
        Split module 'filename' into 'filename' and 'concat-filename'.
        * modules/filename: Keep only lib/filename.h.
        (License): Change to LGPLv2+.
diff --git a/NEWS b/NEWS
index 4a01c1f..0c45735 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,9 +7,10 @@ User visible incompatible changes
 Date        Modules         Changes
 
 2008-09-01  filename        The module does not define the function
-                            concatenated_filename any more. To get this
-                            function, use module 'concat-filename' and the
-                            include file "concat-filename.h".
+                            concatenated_filename any more. To get an
+                            equivalent function, use function
+                            xconcatenated_filename from module
+                            'xconcat-filename'.
 
 2008-08-31  havelib         On Solaris, when searching for 64-bit mode
                             libraries the directory $prefix/lib is now ignored.
index 94532d0..a1d22fa 100644 (file)
 /* Specification.  */
 #include "concat-filename.h"
 
+#include <errno.h>
+#include <stdlib.h>
 #include <string.h>
 
 #include "filename.h"
-#include "xalloc.h"
 
 /* Concatenate a directory filename, a relative filename and an optional
    suffix.  The directory may end with the directory separator.  The second
    argument may not start with the directory separator (it is relative).
-   Return a freshly allocated filename.  */
+   Return a freshly allocated filename.  Return NULL and set errno
+   upon memory allocation failure.  */
 char *
 concatenated_filename (const char *directory, const char *filename,
                       const char *suffix)
@@ -40,10 +42,11 @@ concatenated_filename (const char *directory, const char *filename,
   if (strcmp (directory, ".") == 0)
     {
       /* No need to prepend the directory.  */
-      result = XNMALLOC (strlen (filename)
-                        + (suffix != NULL ? strlen (suffix) : 0)
-                        + 1,
-                        char);
+      result = (char *) malloc (strlen (filename)
+                               + (suffix != NULL ? strlen (suffix) : 0)
+                               + 1);
+      if (result == NULL)
+       return NULL; /* errno is set here */
       p = result;
     }
   else
@@ -52,11 +55,12 @@ concatenated_filename (const char *directory, const char *filename,
       int need_slash =
        (directory_len > FILE_SYSTEM_PREFIX_LEN (directory)
         && !ISSLASH (directory[directory_len - 1]));
-      result = XNMALLOC (directory_len + need_slash
-                        + strlen (filename)
-                        + (suffix != NULL ? strlen (suffix) : 0)
-                        + 1,
-                        char);
+      result = (char *) malloc (directory_len + need_slash
+                               + strlen (filename)
+                               + (suffix != NULL ? strlen (suffix) : 0)
+                               + 1);
+      if (result == NULL)
+       return NULL; /* errno is set here */
       memcpy (result, directory, directory_len);
       p = result + directory_len;
       if (need_slash)
index d7dafb0..1f02ead 100644 (file)
@@ -23,10 +23,16 @@ extern "C" {
 
 
 /* Concatenate a directory filename, a relative filename and an optional
-   suffix.  Return a freshly allocated filename.  */
+   suffix.  Return a freshly allocated filename.  Return NULL and set errno
+   upon memory allocation failure.  */
 extern char *concatenated_filename (const char *directory,
                                    const char *filename, const char *suffix);
 
+/* Concatenate a directory filename, a relative filename and an optional
+   suffix.  Return a freshly allocated filename.  */
+extern char *xconcatenated_filename (const char *directory,
+                                    const char *filename, const char *suffix);
+
 
 #ifdef __cplusplus
 }
index 3b8cd39..468b334 100644 (file)
@@ -1,5 +1,5 @@
 /* Locating a program in PATH.
-   Copyright (C) 2001-2004, 2006-2007 Free Software Foundation, Inc.
+   Copyright (C) 2001-2004, 2006-2008 Free Software Foundation, Inc.
    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 
    This program is free software: you can redistribute it and/or modify
@@ -27,7 +27,7 @@
 #include <unistd.h>
 
 #include "xalloc.h"
-#include "filename.h"
+#include "concat-filename.h"
 
 
 const char *
@@ -75,7 +75,7 @@ find_in_path (const char *progname)
        dir = ".";
 
       /* Concatenate dir and progname.  */
-      progpathname = concatenated_filename (dir, progname, NULL);
+      progpathname = xconcatenated_filename (dir, progname, NULL);
 
       /* On systems which have the eaccess() system call, let's use it.
         On other systems, let's hope that this program is not installed
@@ -88,7 +88,7 @@ find_in_path (const char *progname)
            {
              free (progpathname);
 
-             /* Add the "./" prefix for real, that concatenated_filename()
+             /* Add the "./" prefix for real, that xconcatenated_filename()
                 optimized away.  This avoids a second PATH search when the
                 caller uses execlp/execvp.  */
              progpathname = XNMALLOC (2 + strlen (progname) + 1, char);
index b3ec627..7d0a942 100644 (file)
@@ -41,7 +41,7 @@
 #include "safe-read.h"
 #include "xalloc.h"
 #include "xmalloca.h"
-#include "filename.h"
+#include "concat-filename.h"
 #include "fwriteerror.h"
 #include "clean-temp.h"
 #include "error.h"
@@ -741,7 +741,7 @@ is_envjavac_gcj43_usable (const char *javac,
        return true;
 
       conftest_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
       if (write_temp_file (tmpdir, conftest_file_name,
                           get_goodcode_snippet (source_version)))
        {
@@ -751,7 +751,7 @@ is_envjavac_gcj43_usable (const char *javac,
        }
 
       compiled_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
       register_temp_file (tmpdir, compiled_file_name);
 
       java_sources[0] = conftest_file_name;
@@ -785,9 +785,9 @@ is_envjavac_gcj43_usable (const char *javac,
                  free (conftest_file_name);
 
                  conftest_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestfail.java",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestfail.java",
+                                           NULL);
                  if (write_temp_file (tmpdir, conftest_file_name, failcode))
                    {
                      free (conftest_file_name);
@@ -797,9 +797,9 @@ is_envjavac_gcj43_usable (const char *javac,
                    }
 
                  compiled_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestfail.class",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestfail.class",
+                                           NULL);
                  register_temp_file (tmpdir, compiled_file_name);
 
                  java_sources[0] = conftest_file_name;
@@ -890,7 +890,7 @@ is_envjavac_oldgcj_14_14_usable (const char *javac, bool *usablep)
        return true;
 
       conftest_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
       if (write_temp_file (tmpdir, conftest_file_name,
                           get_goodcode_snippet ("1.4")))
        {
@@ -900,7 +900,7 @@ is_envjavac_oldgcj_14_14_usable (const char *javac, bool *usablep)
        }
 
       compiled_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
       register_temp_file (tmpdir, compiled_file_name);
 
       java_sources[0] = conftest_file_name;
@@ -951,7 +951,7 @@ is_envjavac_oldgcj_14_13_usable (const char *javac,
        return true;
 
       conftest_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
       if (write_temp_file (tmpdir, conftest_file_name,
                           get_goodcode_snippet ("1.3")))
        {
@@ -961,7 +961,7 @@ is_envjavac_oldgcj_14_13_usable (const char *javac,
        }
 
       compiled_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
       register_temp_file (tmpdir, compiled_file_name);
 
       java_sources[0] = conftest_file_name;
@@ -994,8 +994,8 @@ is_envjavac_oldgcj_14_13_usable (const char *javac,
       if (javac_works && javac_noassert_works)
        {
          conftest_file_name =
-           concatenated_filename (tmpdir->dir_name, "conftestfail.java",
-                                  NULL);
+           xconcatenated_filename (tmpdir->dir_name, "conftestfail.java",
+                                   NULL);
          if (write_temp_file (tmpdir, conftest_file_name,
                               get_failcode_snippet ("1.3")))
            {
@@ -1006,8 +1006,8 @@ is_envjavac_oldgcj_14_13_usable (const char *javac,
            }
 
          compiled_file_name =
-           concatenated_filename (tmpdir->dir_name, "conftestfail.class",
-                                  NULL);
+           xconcatenated_filename (tmpdir->dir_name, "conftestfail.class",
+                                   NULL);
          register_temp_file (tmpdir, compiled_file_name);
 
          java_sources[0] = conftest_file_name;
@@ -1091,7 +1091,7 @@ is_envjavac_nongcj_usable (const char *javac,
        return true;
 
       conftest_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
       if (write_temp_file (tmpdir, conftest_file_name,
                           get_goodcode_snippet (source_version)))
        {
@@ -1101,7 +1101,7 @@ is_envjavac_nongcj_usable (const char *javac,
        }
 
       compiled_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
       register_temp_file (tmpdir, compiled_file_name);
 
       java_sources[0] = conftest_file_name;
@@ -1135,9 +1135,9 @@ is_envjavac_nongcj_usable (const char *javac,
                  free (conftest_file_name);
 
                  conftest_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestfail.java",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestfail.java",
+                                           NULL);
                  if (write_temp_file (tmpdir, conftest_file_name, failcode))
                    {
                      free (conftest_file_name);
@@ -1147,9 +1147,9 @@ is_envjavac_nongcj_usable (const char *javac,
                    }
 
                  compiled_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestfail.class",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestfail.class",
+                                           NULL);
                  register_temp_file (tmpdir, compiled_file_name);
 
                  java_sources[0] = conftest_file_name;
@@ -1219,9 +1219,9 @@ is_envjavac_nongcj_usable (const char *javac,
                      free (conftest_file_name);
 
                      conftest_file_name =
-                       concatenated_filename (tmpdir->dir_name,
-                                              "conftestfail.java",
-                                              NULL);
+                       xconcatenated_filename (tmpdir->dir_name,
+                                               "conftestfail.java",
+                                               NULL);
                      if (write_temp_file (tmpdir, conftest_file_name,
                                           failcode))
                        {
@@ -1233,9 +1233,9 @@ is_envjavac_nongcj_usable (const char *javac,
                        }
 
                      compiled_file_name =
-                       concatenated_filename (tmpdir->dir_name,
-                                              "conftestfail.class",
-                                              NULL);
+                       xconcatenated_filename (tmpdir->dir_name,
+                                               "conftestfail.class",
+                                               NULL);
                      register_temp_file (tmpdir, compiled_file_name);
 
                      java_sources[0] = conftest_file_name;
@@ -1387,8 +1387,8 @@ is_gcj_present (void)
              char *conftest_file_name;
 
              conftest_file_name =
-               concatenated_filename (tmpdir->dir_name, "conftestlib.java",
-                                      NULL);
+               xconcatenated_filename (tmpdir->dir_name, "conftestlib.java",
+                                       NULL);
              if (write_temp_file (tmpdir, conftest_file_name,
 "public class conftestlib {\n"
 "  public static void main (String[] args) {\n"
@@ -1401,9 +1401,9 @@ is_gcj_present (void)
                  const char *java_sources[1];
 
                  compiled_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestlib.class",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestlib.class",
+                                           NULL);
                  register_temp_file (tmpdir, compiled_file_name);
 
                  java_sources[0] = conftest_file_name;
@@ -1531,7 +1531,7 @@ is_gcj43_usable (const char *source_version,
        return true;
 
       conftest_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
       if (write_temp_file (tmpdir, conftest_file_name,
                           get_goodcode_snippet (source_version)))
        {
@@ -1541,7 +1541,7 @@ is_gcj43_usable (const char *source_version,
        }
 
       compiled_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
       register_temp_file (tmpdir, compiled_file_name);
 
       java_sources[0] = conftest_file_name;
@@ -1571,9 +1571,9 @@ is_gcj43_usable (const char *source_version,
                  free (conftest_file_name);
 
                  conftest_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestfail.java",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestfail.java",
+                                           NULL);
                  if (write_temp_file (tmpdir, conftest_file_name, failcode))
                    {
                      free (conftest_file_name);
@@ -1582,9 +1582,9 @@ is_gcj43_usable (const char *source_version,
                    }
 
                  compiled_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestfail.class",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestfail.class",
+                                           NULL);
                  register_temp_file (tmpdir, compiled_file_name);
 
                  java_sources[0] = conftest_file_name;
@@ -1670,7 +1670,7 @@ is_oldgcj_14_14_usable (bool *usablep)
        return true;
 
       conftest_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
       if (write_temp_file (tmpdir, conftest_file_name,
                           get_goodcode_snippet ("1.4")))
        {
@@ -1680,7 +1680,7 @@ is_oldgcj_14_14_usable (bool *usablep)
        }
 
       compiled_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
       register_temp_file (tmpdir, compiled_file_name);
 
       java_sources[0] = conftest_file_name;
@@ -1727,7 +1727,7 @@ is_oldgcj_14_13_usable (bool *usablep, bool *need_no_assert_option_p)
        return true;
 
       conftest_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
       if (write_temp_file (tmpdir, conftest_file_name,
                           get_goodcode_snippet ("1.3")))
        {
@@ -1737,7 +1737,7 @@ is_oldgcj_14_13_usable (bool *usablep, bool *need_no_assert_option_p)
        }
 
       compiled_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
       register_temp_file (tmpdir, compiled_file_name);
 
       java_sources[0] = conftest_file_name;
@@ -1835,7 +1835,7 @@ is_javac_usable (const char *source_version, const char *target_version,
        return true;
 
       conftest_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
       if (write_temp_file (tmpdir, conftest_file_name,
                           get_goodcode_snippet (source_version)))
        {
@@ -1845,7 +1845,7 @@ is_javac_usable (const char *source_version, const char *target_version,
        }
 
       compiled_file_name =
-       concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+       xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
       register_temp_file (tmpdir, compiled_file_name);
 
       java_sources[0] = conftest_file_name;
@@ -1878,9 +1878,9 @@ is_javac_usable (const char *source_version, const char *target_version,
                  free (conftest_file_name);
 
                  conftest_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestfail.java",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestfail.java",
+                                           NULL);
                  if (write_temp_file (tmpdir, conftest_file_name, failcode))
                    {
                      free (conftest_file_name);
@@ -1889,9 +1889,9 @@ is_javac_usable (const char *source_version, const char *target_version,
                    }
 
                  compiled_file_name =
-                   concatenated_filename (tmpdir->dir_name,
-                                          "conftestfail.class",
-                                          NULL);
+                   xconcatenated_filename (tmpdir->dir_name,
+                                           "conftestfail.class",
+                                           NULL);
                  register_temp_file (tmpdir, compiled_file_name);
 
                  java_sources[0] = conftest_file_name;
@@ -1959,9 +1959,9 @@ is_javac_usable (const char *source_version, const char *target_version,
                      free (conftest_file_name);
 
                      conftest_file_name =
-                       concatenated_filename (tmpdir->dir_name,
-                                              "conftestfail.java",
-                                              NULL);
+                       xconcatenated_filename (tmpdir->dir_name,
+                                               "conftestfail.java",
+                                               NULL);
                      if (write_temp_file (tmpdir, conftest_file_name,
                                           failcode))
                        {
@@ -1971,9 +1971,9 @@ is_javac_usable (const char *source_version, const char *target_version,
                        }
 
                      compiled_file_name =
-                       concatenated_filename (tmpdir->dir_name,
-                                              "conftestfail.class",
-                                              NULL);
+                       xconcatenated_filename (tmpdir->dir_name,
+                                               "conftestfail.class",
+                                               NULL);
                      register_temp_file (tmpdir, compiled_file_name);
 
                      java_sources[0] = conftest_file_name;
index 8235b2d..8bcd6de 100644 (file)
@@ -29,7 +29,7 @@
 #include "classpath.h"
 #include "xsetenv.h"
 #include "sh-quote.h"
-#include "filename.h"
+#include "concat-filename.h"
 #include "xalloc.h"
 #include "xmalloca.h"
 #include "error.h"
@@ -94,7 +94,7 @@ execute_java_class (const char *class_name,
   /* First, try a class compiled to a native code executable.  */
   if (exe_dir != NULL)
     {
-      char *exe_pathname = concatenated_filename (exe_dir, class_name, EXEEXT);
+      char *exe_pathname = xconcatenated_filename (exe_dir, class_name, EXEEXT);
       char *old_classpath;
       char **argv = (char **) xmalloca ((1 + nargs + 1) * sizeof (char *));
       unsigned int i;
diff --git a/lib/xconcat-filename.c b/lib/xconcat-filename.c
new file mode 100644 (file)
index 0000000..2726036
--- /dev/null
@@ -0,0 +1,41 @@
+/* Construct a full filename from a directory and a relative filename.
+   Copyright (C) 2001-2004, 2006-2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 3 of the License, or any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <haible@clisp.cons.org>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "concat-filename.h"
+
+#include "xalloc.h"
+
+/* Concatenate a directory filename, a relative filename and an optional
+   suffix.  The directory may end with the directory separator.  The second
+   argument may not start with the directory separator (it is relative).
+   Return a freshly allocated filename.  */
+char *
+xconcatenated_filename (const char *directory, const char *filename,
+                       const char *suffix)
+{
+  char *result;
+
+  result = concatenated_filename (directory, filename, suffix);
+  if (result == NULL)
+    xalloc_die ();
+
+  return result;
+}
index 4aade38..70ad9f6 100644 (file)
@@ -8,7 +8,7 @@ lib/concat-filename.c
 
 Depends-on:
 filename
-xalloc
+malloc-posix
 stpcpy
 
 configure.ac:
@@ -20,7 +20,7 @@ Include:
 "concat-filename.h"
 
 License:
-GPL
+LGPLv2+
 
 Maintainer:
 Bruno Haible
index 0fffcf3..7ed99e9 100644 (file)
@@ -10,7 +10,7 @@ m4/eaccess.m4
 Depends-on:
 stdbool
 xalloc
-filename
+xconcat-filename
 unistd
 
 configure.ac:
index a42589d..3bc33b8 100644 (file)
@@ -20,7 +20,7 @@ safe-read
 xalloc
 xmalloca
 getline
-filename
+xconcat-filename
 fwriteerror
 clean-temp
 error
index ca53910..1e397a0 100644 (file)
@@ -11,7 +11,7 @@ execute
 classpath
 xsetenv
 sh-quote
-filename
+xconcat-filename
 xalloc
 xmalloca
 error
diff --git a/modules/xconcat-filename b/modules/xconcat-filename
new file mode 100644 (file)
index 0000000..b8cb087
--- /dev/null
@@ -0,0 +1,26 @@
+Description:
+Construct a full filename by concatenating a directory name, a relative
+filename, and a suffix, with out-of-memory checking.
+
+Files:
+lib/concat-filename.h
+lib/xconcat-filename.c
+
+Depends-on:
+concat-filename
+xalloc-die
+
+configure.ac:
+
+Makefile.am:
+lib_SOURCES += xconcat-filename.c
+
+Include:
+"concat-filename.h"
+
+License:
+GPL
+
+Maintainer:
+Bruno Haible
+