X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fpath-concat.c;h=e6f44d3e88f43e3cbc6eaba7bac2291723f1ed10;hb=7e3abbd47249138beefb283c6f63126c0eb46412;hp=d6dafc939850ad1467f2612f88649364313e642a;hpb=8d447ad210177980a4747a2208a00d001fc7ccee;p=gnulib.git diff --git a/lib/path-concat.c b/lib/path-concat.c index d6dafc939..e6f44d3e8 100644 --- a/lib/path-concat.c +++ b/lib/path-concat.c @@ -1,5 +1,5 @@ /* path-concat.c -- concatenate two arbitrary pathnames - Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 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 @@ -26,12 +26,31 @@ #endif #include + #if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif # include +#else +# if HAVE_STRINGS_H +# include +# endif +#endif +#if HAVE_STDLIB_H +# include +#endif +#if HAVE_UNISTD_H +# include #endif -#include +#ifndef HAVE_DECL_MALLOC +"this configure-time declaration test was not run" +#endif +#if !HAVE_DECL_MALLOC char *malloc (); +#endif + #ifndef strdup char *strdup (); #endif @@ -40,6 +59,10 @@ char *strdup (); # define DIRECTORY_SEPARATOR '/' #endif +#ifndef FILESYSTEM_PREFIX_LEN +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +#endif + #ifndef ISSLASH # define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) #endif @@ -86,11 +109,11 @@ path_concat (const char *dir, const char *base, char **base_in_result) p = mempcpy (p_concat, dir, dir_len); - if (dir_len > 0) + if (dir_len > FILESYSTEM_PREFIX_LEN (dir)) { - if (ISSLASH (*(p - 1)) && ISSLASH(*base)) + if (ISSLASH (*(p - 1)) && ISSLASH (*base)) --p; - else if (!ISSLASH (*(p - 1)) && !ISSLASH(*base)) + else if (!ISSLASH (*(p - 1)) && !ISSLASH (*base)) *p++ = DIRECTORY_SEPARATOR; }