-/* Construct a full pathname from a directory and a filename.
- Copyright (C) 2001-2004, 2006-2007 Free Software Foundation, Inc.
+/* 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
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
/* 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).
/* 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).
if (strcmp (directory, ".") == 0)
{
/* No need to prepend the directory. */
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 */
- 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)
memcpy (result, directory, directory_len);
p = result + directory_len;
if (need_slash)