X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnulib%2Fsys_stat.in.h;h=da965d02704c21ccbf0389a81febb9217f23b8fb;hb=fd48f3e498442f0cbff5f3606c7c403d0566150e;hp=b60e32298c5a5d967349b21d521b995d01af03e6;hpb=96f35b20267e8b1a1c846d476f27fcd330e0b018;p=debian%2Famanda diff --git a/gnulib/sys_stat.in.h b/gnulib/sys_stat.in.h index b60e322..da965d0 100644 --- a/gnulib/sys_stat.in.h +++ b/gnulib/sys_stat.in.h @@ -1,9 +1,9 @@ /* Provide a more complete sys/stat header file. - Copyright (C) 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2005-2009 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, or (at your option) + the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -21,14 +21,37 @@ incomplete. It is intended to provide definitions and prototypes needed by an application. Start with what the system provides. */ +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + +#if defined __need_system_sys_stat_h +/* Special invocation convention. */ + +#@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ + +#else +/* Normal invocation convention. */ + #ifndef _GL_SYS_STAT_H +/* Get nlink_t. */ +#include + /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #ifndef _GL_SYS_STAT_H #define _GL_SYS_STAT_H +/* The definition of GL_LINK_WARNING is copied here. */ + +/* Before doing "#define mkdir rpl_mkdir" below, we need to include all + headers that may declare mkdir(). */ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +# include +#endif + #ifndef S_IFMT # define S_IFMT 0170000 #endif @@ -255,17 +278,40 @@ # define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) #endif + +#ifdef __cplusplus +extern "C" { +#endif + + +#if @GNULIB_LSTAT@ +# if ! @HAVE_LSTAT@ /* mingw does not support symlinks, therefore it does not have lstat. But without links, stat does just fine. */ -#if ! @HAVE_LSTAT@ -# define lstat stat +# define lstat stat +# elif @REPLACE_LSTAT@ +# undef lstat +# define lstat rpl_lstat +extern int rpl_lstat (const char *name, struct stat *buf); +# endif +#elif defined GNULIB_POSIXCHECK +# undef lstat +# define lstat(p,b) \ + (GL_LINK_WARNING ("lstat is unportable - " \ + "use gnulib module lstat for portability"), \ + lstat (p, b)) #endif + +#if @REPLACE_MKDIR@ +# undef mkdir +# define mkdir rpl_mkdir +extern int mkdir (char const *name, mode_t mode); +#else /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. Additionally, it declares _mkdir (and depending on compile flags, an - alias mkdir), only in the nonstandard io.h. */ -#if ! @HAVE_DECL_MKDIR@ && @HAVE_IO_H@ -# include + alias mkdir), only in the nonstandard , which is included above. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ static inline int rpl_mkdir (char const *name, mode_t mode) @@ -273,8 +319,43 @@ rpl_mkdir (char const *name, mode_t mode) return _mkdir (name); } -# define mkdir rpl_mkdir +# define mkdir rpl_mkdir +# endif +#endif + + +/* Declare BSD extensions. */ + +#if @GNULIB_LCHMOD@ +/* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME + denotes a symbolic link. */ +# if !@HAVE_LCHMOD@ +/* The lchmod replacement follows symbolic links. Callers should take + this into account; lchmod should be applied only to arguments that + are known to not be symbolic links. On hosts that lack lchmod, + this can lead to race conditions between the check and the + invocation of lchmod, but we know of no workarounds that are + reliable in general. You might try requesting support for lchmod + from your operating system supplier. */ +# define lchmod chmod +# endif +# if 0 /* assume already declared */ +extern int lchmod (const char *filename, mode_t mode); +# endif +#elif defined GNULIB_POSIXCHECK +# undef lchmod +# define lchmod(f,m) \ + (GL_LINK_WARNING ("lchmod is unportable - " \ + "use gnulib module lchmod for portability"), \ + lchmod (f, m)) +#endif + + +#ifdef __cplusplus +} #endif + #endif /* _GL_SYS_STAT_H */ #endif /* _GL_SYS_STAT_H */ +#endif