diff options
author | Bruno Haible <bruno@clisp.org> | 2008-10-21 01:05:43 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2008-10-21 01:05:43 +0200 |
commit | e9e4f97f438cb507be7c24b7624de7ec81e7c2a5 (patch) | |
tree | 3475ca3dad7753e7ccbfc099c32d7f88ee54690d /lib/lstat.c | |
parent | 0153b9171b1b4592f27bd5ce664a3b390d5c17f6 (diff) | |
download | gnulib-e9e4f97f438cb507be7c24b7624de7ec81e7c2a5.tar.gz |
Move the lstat() declaration to <sys/stat.h>.
Diffstat (limited to 'lib/lstat.c')
-rw-r--r-- | lib/lstat.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/lstat.c b/lib/lstat.c index 9dcb4cdc5b..3e07270801 100644 --- a/lib/lstat.c +++ b/lib/lstat.c @@ -1,7 +1,6 @@ /* Work around a bug of lstat on some systems - Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free - Software Foundation, Inc. + Copyright (C) 1997-1999, 2000-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 @@ -20,13 +19,21 @@ #include <config.h> -/* The specification of these functions is in sys_stat.h. But we cannot - include this include file here, because on some systems, a - "#define lstat lstat64" is being used, and sys_stat.h deletes this - definition. */ - +/* Get the original definition of open. It might be defined as a macro. */ +#define __need_system_sys_stat_h #include <sys/types.h> #include <sys/stat.h> +#undef __need_system_sys_stat_h + +static inline int +orig_lstat (const char *filename, struct stat *buf) +{ + return lstat (filename, buf); +} + +/* Specification. */ +#include <sys/stat.h> + #include <string.h> #include <errno.h> @@ -47,7 +54,7 @@ int rpl_lstat (const char *file, struct stat *sbuf) { size_t len; - int lstat_result = lstat (file, sbuf); + int lstat_result = orig_lstat (file, sbuf); if (lstat_result != 0 || !S_ISLNK (sbuf->st_mode)) return lstat_result; |