X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fxstat.in;h=90d1bcb03f584473ee0c5bc11ee1e5f6a14e72b1;hb=93f20861d0ef8383725ceb95772aee532c2c26ff;hp=04fe0fbf271b8e69305d910a628dadeef63a2b3d;hpb=7745004baa6900046558737f248ed1dca87c39a6;p=gnulib.git diff --git a/lib/xstat.in b/lib/xstat.in index 04fe0fbf2..90d1bcb03 100644 --- a/lib/xstat.in +++ b/lib/xstat.in @@ -4,7 +4,7 @@ /* Work around the bug in some systems whereby @xstat@ succeeds when given the zero-length file name argument. The @xstat@ from SunOS4.1.4 has this bug. - Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1997-2002 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 @@ -32,16 +32,32 @@ extern int errno; #endif @BEGIN_LSTAT_ONLY@ +#if HAVE_STDLIB_H +# include +#endif + #ifdef STAT_MACROS_BROKEN # undef S_ISLNK #endif -#if !defined(S_ISLNK) && defined(S_IFLNK) -# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) + +#ifndef S_ISLNK +# ifdef S_IFLNK +# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) +# else +# define S_ISLNK(m) 0 +# endif +#endif + +#ifndef HAVE_DECL_FREE +"this configure-time declaration test was not run" +#endif +#if !HAVE_DECL_FREE +void free (); #endif char *xmalloc (); -/* lstat works different on Linux and Solaris systems. POSIX (see +/* lstat works differently on Linux and Solaris systems. POSIX (see `pathname resolution' in the glossary) requires that programs like `ls' take into consideration the fact that FILE has a trailing slash when FILE is a symbolic link. On Linux systems, the lstat function already @@ -69,8 +85,7 @@ slash_aware_lstat (const char *file, struct stat *sbuf) /* FILE refers to a symbolic link and the name ends with a slash. Append a `.' to FILE and repeat the lstat call. */ - /* Add one for the `.' we might have to append, and one more - for the trailing NUL. */ + /* Add one for the `.' we'll append, and one more for the trailing NUL. */ new_file = xmalloc (len + 1 + 1); memcpy (new_file, file, len); new_file[len] = '.';