diff options
author | Michael Lauer <mickey@vanille-media.de> | 2006-09-29 09:52:58 +0000 |
---|---|---|
committer | Michael Lauer <mickey@vanille-media.de> | 2006-09-29 09:52:58 +0000 |
commit | 4449cfbd00ef251965535e1d53cca33f36683657 (patch) | |
tree | 8782d53374ab4f7f3e02d2626e0f782562cffef5 /packages/glibc/glibc-2.4 | |
parent | 00e47f7b0eec8c3ad8b16d64b47ac9a9f558f2ba (diff) |
glibc* 2.4 add proper fix for building against recent linux userland headers
repairs breakage introduce by previous patches. thanks Jamie Lenehan.
Diffstat (limited to 'packages/glibc/glibc-2.4')
-rw-r--r-- | packages/glibc/glibc-2.4/fix-fchownat-20060808.patch | 415 | ||||
-rw-r--r-- | packages/glibc/glibc-2.4/glibc-2.4-openat-3.patch | 133 | ||||
-rw-r--r-- | packages/glibc/glibc-2.4/openat-bugzilla-fix-1220.patch | 37 |
3 files changed, 133 insertions, 452 deletions
diff --git a/packages/glibc/glibc-2.4/fix-fchownat-20060808.patch b/packages/glibc/glibc-2.4/fix-fchownat-20060808.patch deleted file mode 100644 index 057cb779c3..0000000000 --- a/packages/glibc/glibc-2.4/fix-fchownat-20060808.patch +++ /dev/null @@ -1,415 +0,0 @@ -From libc-hacker-return-8994-listarch-libc-hacker=sources dot redhat dot com at sourceware dot org Tue Aug 08 11:49:18 2006 -Return-Path: <libc-hacker-return-8994-listarch-libc-hacker=sources dot redhat dot com at sourceware dot org> -Delivered-To: listarch-libc-hacker at sources dot redhat dot com -Received: (qmail 21223 invoked by alias); 8 Aug 2006 11:49:17 -0000 -Received: (qmail 21202 invoked by uid 22791); 8 Aug 2006 11:49:15 -0000 -X-Spam-Check-By: sourceware.org -Received: from sunsite.ms.mff.cuni.cz (HELO sunsite.mff.cuni.cz) (195.113.15.26) - by sourceware dot org (qpsmtpd/0 dot 31) with ESMTP; Tue, 08 Aug 2006 11:49:13 +0000 -Received: from sunsite.mff.cuni.cz (sunsite.mff.cuni.cz [127.0.0.1]) - by sunsite dot mff dot cuni dot cz (8 dot 13 dot 1/8 dot 13 dot 1) with ESMTP id k78Bn8f9003038; - Tue, 8 Aug 2006 13:49:08 +0200 -Received: (from jj@localhost) - by sunsite dot mff dot cuni dot cz (8 dot 13 dot 1/8 dot 13 dot 1/Submit) id k78Bn82P003037; - Tue, 8 Aug 2006 13:49:08 +0200 -Date: Tue, 8 Aug 2006 13:49:07 +0200 -From: Jakub Jelinek <jakub at redhat dot com> -To: Ulrich Drepper <drepper at redhat dot com> -Cc: Glibc hackers <libc-hacker at sources dot redhat dot com> -Subject: [PATCH] Fix fchownat -Message-ID: <20060808114907.GA4556@sunsite.mff.cuni.cz> -Reply-To: Jakub Jelinek <jakub at redhat dot com> -Mime-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -User-Agent: Mutt/1.4.1i -Mailing-List: contact libc-hacker-help at sourceware dot org; run by ezmlm -Precedence: bulk -List-Subscribe: <mailto:libc-hacker-subscribe at sourceware dot org> -List-Archive: <http://sourceware.org/ml/libc-hacker/> -List-Post: <mailto:libc-hacker at sourceware dot org> -List-Help: <mailto:libc-hacker-help at sourceware dot org>, <http://sourceware dot org/ml/#faqs> -Sender: libc-hacker-owner at sourceware dot org -Delivered-To: mailing list libc-hacker at sourceware dot org - -Hi! - -Apparently fchownat was only changed to use the direct syscall if available -in the generic linux version, not in the various arch specializations. - -2006-08-08 Jakub Jelinek <jakub@redhat.com> - - * sysdeps/unix/sysv/linux/s390/s390-32/fchownat.c (fchownat): Use - fchownat syscall if available. - * sysdeps/unix/sysv/linux/powerpc/fchownat.c (fchownat): Likewise. - * sysdeps/unix/sysv/linux/sh/fchownat.c (fchownat): Likewise. - * sysdeps/unix/sysv/linux/i386/fchownat.c (fchownat): Likewise. - ---- libc/sysdeps/unix/sysv/linux/s390/s390-32/fchownat.c.jj 2006-01-11 16:55:32.000000000 +0100 -+++ libc/sysdeps/unix/sysv/linux/s390/s390-32/fchownat.c 2006-08-08 11:11:23.000000000 +0200 -@@ -53,6 +53,24 @@ extern int __libc_missing_32bit_uids; - int - fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag) - { -+ int result; -+ -+#ifdef __NR_fchownat -+# ifndef __ASSUME_ATFCTS -+ if (__have_atfcts >= 0) -+# endif -+ { -+ result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag); -+# ifndef __ASSUME_ATFCTS -+ if (result == -1 && errno == ENOSYS) -+ __have_atfcts = -1; -+ else -+# endif -+ return result; -+ } -+#endif -+ -+#ifndef __ASSUME_ATFCTS - if (flag & ~AT_SYMLINK_NOFOLLOW) - { - __set_errno (EINVAL); -@@ -79,16 +97,15 @@ fchownat (int fd, const char *file, uid_ - file = buf; - } - -- int result; - INTERNAL_SYSCALL_DECL (err); - --#if __ASSUME_32BITUIDS > 0 -+# if __ASSUME_32BITUIDS > 0 - result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, - group); --#else -+# else - static int __libc_old_chown; - --# ifdef __NR_chown32 -+# ifdef __NR_chown32 - if (__libc_missing_32bit_uids <= 0) - { - if (flag & AT_SYMLINK_NOFOLLOW) -@@ -105,7 +122,7 @@ fchownat (int fd, const char *file, uid_ - - __libc_missing_32bit_uids = 1; - } --# endif /* __NR_chown32 */ -+# endif /* __NR_chown32 */ - if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U)) - || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U))) - { -@@ -128,7 +145,7 @@ fchownat (int fd, const char *file, uid_ - - result = INTERNAL_SYSCALL (lchown, err, 3, CHECK_STRING (file), owner, - group); --#endif -+# endif - - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0)) - { -@@ -138,4 +155,5 @@ fchownat (int fd, const char *file, uid_ - } - - return result; -+#endif - } ---- libc/sysdeps/unix/sysv/linux/powerpc/fchownat.c.jj 2005-11-11 20:43:35.000000000 +0100 -+++ libc/sysdeps/unix/sysv/linux/powerpc/fchownat.c 2006-08-08 11:14:52.000000000 +0200 -@@ -37,6 +37,24 @@ - int - fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag) - { -+ int result; -+ -+#ifdef __NR_fchownat -+# ifndef __ASSUME_ATFCTS -+ if (__have_atfcts >= 0) -+# endif -+ { -+ result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag); -+# ifndef __ASSUME_ATFCTS -+ if (result == -1 && errno == ENOSYS) -+ __have_atfcts = -1; -+ else -+# endif -+ return result; -+ } -+#endif -+ -+#ifndef __ASSUME_ATFCTS - if (flag & ~AT_SYMLINK_NOFOLLOW) - { - __set_errno (EINVAL); -@@ -63,15 +81,14 @@ fchownat (int fd, const char *file, uid_ - file = buf; - } - -- int result; - INTERNAL_SYSCALL_DECL (err); - --#if __ASSUME_LCHOWN_SYSCALL -+# if __ASSUME_LCHOWN_SYSCALL - if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lchown, err, 3, file, owner, group); - else - result = INTERNAL_SYSCALL (chown, err, 3, file, owner, group); --#else -+# else - char link[PATH_MAX + 2]; - char path[2 * PATH_MAX + 4]; - int loopct; -@@ -89,7 +106,7 @@ fchownat (int fd, const char *file, uid_ - goto out; - } - --# ifdef __NR_lchown -+# ifdef __NR_lchown - if (flag & AT_SYMLINK_NOFOLLOW) - { - result = INTERNAL_SYSCALL (lchown, err, 3, __ptrvalue (file), owner, -@@ -110,25 +127,25 @@ fchownat (int fd, const char *file, uid_ - } - libc_old_chown = -1; - } --# else -+# else - if (flag & AT_SYMLINK_NOFOLLOW) - { - result = INTERNAL_SYSCALL (chown, err, 3, __ptrvalue (file), owner, - group); - goto out; - } --# endif -+# endif - - result = __readlink (file, link, PATH_MAX + 1); - if (result == -1) - { --# ifdef __NR_lchown -+# ifdef __NR_lchown - result = INTERNAL_SYSCALL (lchown, err, 3, __ptrvalue (file), owner, - group); --# else -+# else - result = INTERNAL_SYSCALL (chown, err, 3, __ptrvalue (file), owner, - group); --# endif -+# endif - goto out; - } - -@@ -178,11 +195,11 @@ fchownat (int fd, const char *file, uid_ - - if (result == -1) - { --# ifdef __NR_lchown -+# ifdef __NR_lchown - result = INTERNAL_SYSCALL (lchown, err, 3, path, owner, group); --# else -+# else - result = INTERNAL_SYSCALL (chown, err, 3, path, owner, group); --# endif -+# endif - goto out; - } - } -@@ -190,16 +207,17 @@ fchownat (int fd, const char *file, uid_ - return -1; - - out: --#endif -+# endif - - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0)) - { --#if !__ASSUME_LCHOWN_SYSCALL -+# if !__ASSUME_LCHOWN_SYSCALL - fail: --#endif -+# endif - __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf); - result = -1; - } - - return result; -+#endif - } ---- libc/sysdeps/unix/sysv/linux/sh/fchownat.c.jj 2006-03-05 14:32:42.000000000 +0100 -+++ libc/sysdeps/unix/sysv/linux/sh/fchownat.c 2006-08-08 11:19:28.000000000 +0200 -@@ -40,6 +40,24 @@ extern int __libc_missing_32bit_uids; - int - fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag) - { -+ int result; -+ -+#ifdef __NR_fchownat -+# ifndef __ASSUME_ATFCTS -+ if (__have_atfcts >= 0) -+# endif -+ { -+ result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag); -+# ifndef __ASSUME_ATFCTS -+ if (result == -1 && errno == ENOSYS) -+ __have_atfcts = -1; -+ else -+# endif -+ return result; -+ } -+#endif -+ -+#ifndef __ASSUME_ATFCTS - if (flag & ~AT_SYMLINK_NOFOLLOW) - { - __set_errno (EINVAL); -@@ -66,18 +84,17 @@ fchownat (int fd, const char *file, uid_ - file = buf; - } - -- int result; - INTERNAL_SYSCALL_DECL (err); - --#if __ASSUME_32BITUIDS > 0 -+# if __ASSUME_32BITUIDS > 0 - if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lchown32, err, 3, CHECK_STRING (file), owner, - group); - else - result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, - group); --#else --# ifdef __NR_chown32 -+# else -+# ifdef __NR_chown32 - if (__libc_missing_32bit_uids <= 0) - { - if (flag & AT_SYMLINK_NOFOLLOW) -@@ -94,7 +111,7 @@ fchownat (int fd, const char *file, uid_ - - __libc_missing_32bit_uids = 1; - } --# endif /* __NR_chown32 */ -+# endif /* __NR_chown32 */ - - if (((owner + 1) > (gid_t) ((__kernel_uid_t) -1U)) - || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U))) -@@ -109,7 +126,7 @@ fchownat (int fd, const char *file, uid_ - else - result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, - group); --#endif -+# endif - - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0)) - { -@@ -119,4 +136,5 @@ fchownat (int fd, const char *file, uid_ - } - - return result; -+#endif - } ---- libc/sysdeps/unix/sysv/linux/i386/fchownat.c.jj 2006-02-27 18:31:00.000000000 +0100 -+++ libc/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-08-08 11:20:49.000000000 +0200 -@@ -61,6 +61,24 @@ extern int __libc_missing_32bit_uids; - int - fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag) - { -+ int result; -+ -+#ifdef __NR_fchownat -+# ifndef __ASSUME_ATFCTS -+ if (__have_atfcts >= 0) -+# endif -+ { -+ result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag); -+# ifndef __ASSUME_ATFCTS -+ if (result == -1 && errno == ENOSYS) -+ __have_atfcts = -1; -+ else -+# endif -+ return result; -+ } -+#endif -+ -+#ifndef __ASSUME_ATFCTS - if (flag & ~AT_SYMLINK_NOFOLLOW) - { - __set_errno (EINVAL); -@@ -87,14 +105,13 @@ fchownat (int fd, const char *file, uid_ - file = buf; - } - -- int result; - INTERNAL_SYSCALL_DECL (err); - --#if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0 --# if __ASSUME_LCHOWN_SYSCALL == 0 -+# if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0 -+# if __ASSUME_LCHOWN_SYSCALL == 0 - static int __libc_old_chown; - --# ifdef __NR_chown32 -+# ifdef __NR_chown32 - if (__libc_missing_32bit_uids <= 0) - { - if (flag & AT_SYMLINK_NOFOLLOW) -@@ -111,7 +128,7 @@ fchownat (int fd, const char *file, uid_ - - __libc_missing_32bit_uids = 1; - } --# endif /* __NR_chown32 */ -+# endif /* __NR_chown32 */ - - if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U)) - || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U))) -@@ -135,13 +152,13 @@ fchownat (int fd, const char *file, uid_ - - result = INTERNAL_SYSCALL (lchown, err, 3, CHECK_STRING (file), owner, - group); --# elif __ASSUME_32BITUIDS -+# elif __ASSUME_32BITUIDS - /* This implies __ASSUME_LCHOWN_SYSCALL. */ - result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, - group); --# else -+# else - /* !__ASSUME_32BITUIDS && ASSUME_LCHOWN_SYSCALL */ --# ifdef __NR_chown32 -+# ifdef __NR_chown32 - if (__libc_missing_32bit_uids <= 0) - { - result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, -@@ -153,7 +170,7 @@ fchownat (int fd, const char *file, uid_ - - __libc_missing_32bit_uids = 1; - } --# endif /* __NR_chown32 */ -+# endif /* __NR_chown32 */ - if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U)) - || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U))) - { -@@ -162,10 +179,10 @@ fchownat (int fd, const char *file, uid_ - } - - result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group); --# endif --#else -+# endif -+# else - result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group); --#endif -+# endif - - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0)) - goto fail; -@@ -175,4 +192,5 @@ fchownat (int fd, const char *file, uid_ - fail: - __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf); - return -1; -+#endif - } - - Jakub - diff --git a/packages/glibc/glibc-2.4/glibc-2.4-openat-3.patch b/packages/glibc/glibc-2.4/glibc-2.4-openat-3.patch new file mode 100644 index 0000000000..d3f37f6c36 --- /dev/null +++ b/packages/glibc/glibc-2.4/glibc-2.4-openat-3.patch @@ -0,0 +1,133 @@ +Submitted By: Jim Gifford (patches at jg555 dot com) +Date: 2006-08-18 +Initial Package Version: 2.4 +Origin: http://sourceware.org/bugzilla/show_bug.cgi?id=2873 +Upstream Status: Applied +Description: Fixes http://sourceware.org/bugzilla/show_bug.cgi?id=2873 + http://sourceware.org/bugzilla/show_bug.cgi?id=3040 + http://linuxfromscratch.org/pipermail/lfs-dev/2006-June/057562.html + Updated by Joe Ciccone + +diff -Naur glibc-2.4.orig/sysdeps/unix/sysv/linux/i386/fchownat.c glibc-2.4/sysdeps/unix/sysv/linux/i386/fchownat.c +--- glibc-2.4.orig/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-02-23 14:50:21.000000000 -0800 ++++ glibc-2.4/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-08-18 20:38:21.773288795 -0700 +@@ -61,6 +61,24 @@ + int + fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag) + { ++ int result; ++ ++#ifdef __NR_fchownat ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++#endif ++ ++#ifndef __ASSUME_ATFCTS + if (flag & ~AT_SYMLINK_NOFOLLOW) + { + __set_errno (EINVAL); +@@ -87,14 +105,13 @@ + file = buf; + } + +- int result; + INTERNAL_SYSCALL_DECL (err); + +-#if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0 +-# if __ASSUME_LCHOWN_SYSCALL == 0 ++# if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0 ++# if __ASSUME_LCHOWN_SYSCALL == 0 + static int __libc_old_chown; + +-# ifdef __NR_chown32 ++# ifdef __NR_chown32 + if (__libc_missing_32bit_uids <= 0) + { + if (flag & AT_SYMLINK_NOFOLLOW) +@@ -111,7 +128,7 @@ + + __libc_missing_32bit_uids = 1; + } +-# endif /* __NR_chown32 */ ++# endif /* __NR_chown32 */ + + if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U)) + || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U))) +@@ -135,13 +152,13 @@ + + result = INTERNAL_SYSCALL (lchown, err, 3, CHECK_STRING (file), owner, + group); +-# elif __ASSUME_32BITUIDS ++# elif __ASSUME_32BITUIDS + /* This implies __ASSUME_LCHOWN_SYSCALL. */ + result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, + group); +-# else ++# else + /* !__ASSUME_32BITUIDS && ASSUME_LCHOWN_SYSCALL */ +-# ifdef __NR_chown32 ++# ifdef __NR_chown32 + if (__libc_missing_32bit_uids <= 0) + { + result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, +@@ -153,7 +170,7 @@ + + __libc_missing_32bit_uids = 1; + } +-# endif /* __NR_chown32 */ ++# endif /* __NR_chown32 */ + if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U)) + || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U))) + { +@@ -162,10 +179,10 @@ + } + + result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group); +-# endif +-#else ++# endif ++# else + result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group); +-#endif ++# endif + + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0)) + goto fail; +@@ -175,4 +192,5 @@ + fail: + __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf); + return -1; ++#endif + } +diff -Naur glibc-2.4.orig/sysdeps/unix/sysv/linux/openat.c glibc-2.4/sysdeps/unix/sysv/linux/openat.c +--- glibc-2.4.orig/sysdeps/unix/sysv/linux/openat.c 2006-02-28 21:32:42.000000000 -0800 ++++ glibc-2.4/sysdeps/unix/sysv/linux/openat.c 2006-08-18 20:39:14.360012706 -0700 +@@ -29,8 +29,6 @@ + + + #if !defined OPENAT && !defined __ASSUME_ATFCTS +-# define OPENAT openat +- + /* Set errno after a failed call. If BUF is not null, + it is a /proc/self/fd/ path name we just tried to use. */ + void +@@ -63,6 +61,9 @@ + int __have_atfcts; + #endif + ++#ifndef OPENAT ++# define OPENAT openat ++#endif + + #define OPENAT_NOT_CANCEL CONCAT (OPENAT) + #define CONCAT(name) CONCAT2 (name) diff --git a/packages/glibc/glibc-2.4/openat-bugzilla-fix-1220.patch b/packages/glibc/glibc-2.4/openat-bugzilla-fix-1220.patch deleted file mode 100644 index dff7c73da7..0000000000 --- a/packages/glibc/glibc-2.4/openat-bugzilla-fix-1220.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- glibc-2.4/sysdeps/unix/sysv/linux/openat.orig 2006-03-01 07:32:42.000000000 +0200 -+++ glibc-2.4/sysdeps/unix/sysv/linux/openat.c 2006-04-30 19:15:52.000000000 +0300 -@@ -27,6 +27,9 @@ - #include <sysdep-cancel.h> - #include <not-cancel.h> - -+#if !defined OPENAT -+# define OPENAT openat -+#endif - - #if !defined OPENAT && !defined __ASSUME_ATFCTS - # define OPENAT openat -@@ -70,11 +73,7 @@ int __have_atfcts; - - - int --OPENAT_NOT_CANCEL (fd, file, oflag, mode) -- int fd; -- const char *file; -- int oflag; -- mode_t mode; -+OPENAT_NOT_CANCEL (int fd, const char *file, int oflag, mode_t mode) - { - - /* We have to add the O_LARGEFILE flag for openat64. */ -@@ -144,10 +143,7 @@ OPENAT_NOT_CANCEL (fd, file, oflag, mode - the directory associated with FD. If OFLAG includes O_CREAT, a - third argument is the file protection. */ - int --__OPENAT (fd, file, oflag) -- int fd; -- const char *file; -- int oflag; -+__OPENAT (int fd, const char *file, int oflag, ...) - { - mode_t mode = 0; - if (oflag & O_CREAT) |