This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH,HURD] Fix f?chflags prototypes, declare them and their flags.


Although they are defined on GNU/Hurd, f?chflags were never declared. It
seems the BSD prototype actually uses an unsigned long, so we can take
the opportunity to fix the prototype, while adding an actual
declaration.

Fix f?chflags prototypes, declare them and their flags.

* misc/chflags.c (chflags): Set flags parameter type to unsigned long instead of
int.
* misc/fchflags.c (fchflags): Likewise.
* sysdeps/mach/hurd/chflags.c (chflags): Likewise.
* sysdeps/mach/hurd/fchflags.c (fchflags): Likewise.
* sysdeps/mach/hurd/bits/stat.h (UF_SETTABLE, UF_NODUMP, UF_IMMUTABLE,
UF_APPEND, UF_OPAQUE, UF_NOUNLINK, SF_SETTABLE, SF_ARCHIVED, SF_IMMUTABLE,
SF_APPEND, SF_NOUNLINK, SF_SNAPSHOT): Declare macros.
(chflags, fchflags): Declare functions.

diff --git a/misc/chflags.c b/misc/chflags.c
index b678121..12bdb8f 100644
--- a/misc/chflags.c
+++ b/misc/chflags.c
@@ -22,12 +22,12 @@
 
 /* Change the flags of FILE to FLAGS.  */
 
-int chflags (const char *file, int flags) __THROW;
+int chflags (const char *file, unsigned long int flags) __THROW;
 
 int
 chflags (file, flags)
      const char *file;
-     int flags;
+     unsigned long int flags;
 {
   if (file == NULL)
     {
diff --git a/misc/fchflags.c b/misc/fchflags.c
index 9e252a8..f74bd6a 100644
--- a/misc/fchflags.c
+++ b/misc/fchflags.c
@@ -22,12 +22,12 @@
 
 /* Change the flags of the file referenced by FD to FLAGS.  */
 
-int fchflags (int fd, int flags) __THROW;
+int fchflags (int fd, unsigned long int flags) __THROW;
 
 int
 fchflags (fd, flags)
      int fd;
-     int flags;
+     unsigned long int flags;
 {
   if (fd < 0)
     {
diff --git a/sysdeps/mach/hurd/chflags.c b/sysdeps/mach/hurd/chflags.c
index a0b427c..0d42274 100644
--- a/sysdeps/mach/hurd/chflags.c
+++ b/sysdeps/mach/hurd/chflags.c
@@ -25,7 +25,7 @@
 
 /* XXX shouldn't this be __chflags? */
 int
-chflags (const char *file, int flags)
+chflags (const char *file, unsigned long int flags)
 {
   error_t err;
   file_t port = __file_name_lookup (file, 0, 0);
diff --git a/sysdeps/mach/hurd/fchflags.c b/sysdeps/mach/hurd/fchflags.c
index dbf19ba..0baeb56 100644
--- a/sysdeps/mach/hurd/fchflags.c
+++ b/sysdeps/mach/hurd/fchflags.c
@@ -26,7 +26,7 @@
 
 /* XXX should be __fchflags? */
 int
-fchflags (int fd, int flags)
+fchflags (int fd, unsigned long int flags)
 {
   error_t err;
 
diff --git a/sysdeps/mach/hurd/bits/stat.h b/sysdeps/mach/hurd/bits/stat.h
index b64a658..a0f9aba 100644
--- a/sysdeps/mach/hurd/bits/stat.h
+++ b/sysdeps/mach/hurd/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-1994,1996,1997,1999,2000,2005,2010
+/* Copyright (C) 1992-1994,1996,1997,1999,2000,2002,2005,2010
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -194,9 +194,40 @@ struct stat64
 			   S_IUSEUNK|S_IUNKNOWN|07777))
 #endif
 
-/* Default file creation mask (umask).  */
 #ifdef	__USE_BSD
+
+/* Default file creation mask (umask).  */
 # define CMASK		0022
+
+
+/* Definitions of flags stored in file flags word.  */
+
+/* Super-user and owner changeable flags.  */
+# define UF_SETTABLE	0x0000ffff	/* mask of owner changeable flags */
+# define UF_NODUMP	0x00000001	/* do not dump file */
+# define UF_IMMUTABLE	0x00000002	/* file may not be changed */
+# define UF_APPEND	0x00000004	/* writes to file may only append */
+# define UF_OPAQUE	0x00000008	/* directory is opaque wrt. union */
+# define UF_NOUNLINK	0x00000010	/* file may not be removed or renamed */
+
+/* Super-user changeable flags.  */
+# define SF_SETTABLE	0xffff0000	/* mask of superuser changeable flags */
+# define SF_ARCHIVED	0x00010000	/* file is archived */
+# define SF_IMMUTABLE	0x00020000	/* file may not be changed */
+# define SF_APPEND	0x00040000	/* writes to file may only append */
+# define SF_NOUNLINK	0x00100000	/* file may not be removed or renamed */
+# define SF_SNAPSHOT	0x00200000	/* snapshot inode */
+
+__BEGIN_DECLS
+
+/* Set file flags for FILE to FLAGS.  */
+extern int chflags (__const char *__file, unsigned long int __flags) __THROW;
+
+/* Set file flags of the file referred to by FD to FLAGS.  */
+extern int fchflags (int __fd, unsigned long int __flags) __THROW;
+
+__END_DECLS
+
 #endif
 
 #endif	/* bits/stat.h */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]