This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH,HURD] Fix f?chflags prototypes, declare them and their flags.
- From: Samuel Thibault <samuel dot thibault at ens-lyon dot org>
- To: roland at hack dot frob dot com
- Cc: libc-alpha at sources dot redhat dot com
- Date: Fri, 27 Apr 2012 03:21:30 +0200
- Subject: [PATCH,HURD] Fix f?chflags prototypes, declare them and their flags.
- References: <20110329220143.GB5425@const.famille.thibault.fr>
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 */