diff options
Diffstat (limited to 'gnu/libexec/uucp/libunix/efopen.c')
| -rw-r--r-- | gnu/libexec/uucp/libunix/efopen.c | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/gnu/libexec/uucp/libunix/efopen.c b/gnu/libexec/uucp/libunix/efopen.c deleted file mode 100644 index 7e360b616876b..0000000000000 --- a/gnu/libexec/uucp/libunix/efopen.c +++ /dev/null @@ -1,132 +0,0 @@ -/* efopen.c - Open a stdio file with appropriate permissions. */ - -#include "uucp.h" - -#include "uudefs.h" -#include "sysdep.h" -#include "system.h" - -#include <errno.h> - -#if HAVE_FCNTL_H -#include <fcntl.h> -#else -#if HAVE_SYS_FILE_H -#include <sys/file.h> -#endif -#endif - -#ifndef O_RDONLY -#define O_RDONLY 0 -#define O_WRONLY 1 -#define O_RDWR 2 -#endif - -#ifndef O_APPEND -#ifdef FAPPEND -#define O_APPEND FAPPEND -#endif -#endif - -#ifndef O_NOCTTY -#define O_NOCTTY 0 -#endif - -#ifndef FD_CLOEXEC -#define FD_CLOEXEC 1 -#endif - -FILE * -esysdep_fopen (zfile, fpublic, fappend, fmkdirs) - const char *zfile; - boolean fpublic; - boolean fappend; - boolean fmkdirs; -{ - int imode; - int o; - FILE *e; - - if (fpublic) - imode = IPUBLIC_FILE_MODE; - else - imode = IPRIVATE_FILE_MODE; - - if (! fappend) - o = creat ((char *) zfile, imode); - else - { -#ifdef O_CREAT - o = open ((char *) zfile, - O_WRONLY | O_APPEND | O_CREAT | O_NOCTTY, - imode); -#else - o = open ((char *) zfile, O_WRONLY | O_NOCTTY); - if (o < 0 && errno == ENOENT) - o = creat ((char *) zfile, imode); -#endif /* ! defined (O_CREAT) */ - } - - if (o < 0) - { - if (errno == ENOENT && fmkdirs) - { - if (! fsysdep_make_dirs (zfile, fpublic)) - return NULL; - if (! fappend) - o = creat ((char *) zfile, imode); - else - { -#ifdef O_CREAT - o = open ((char *) zfile, - O_WRONLY | O_APPEND | O_CREAT | O_NOCTTY, - imode); -#else - o = creat ((char *) zfile, imode); -#endif - } - } - if (o < 0) - { - ulog (LOG_ERROR, "open (%s): %s", zfile, strerror (errno)); - return NULL; - } - } - -#ifndef O_CREAT -#ifdef O_APPEND - if (fappend) - { - if (fcntl (o, F_SETFL, O_APPEND) < 0) - { - ulog (LOG_ERROR, "fcntl (%s, O_APPEND): %s", zfile, - strerror (errno)); - (void) close (o); - return NULL; - } - } -#endif /* defined (O_APPEND) */ -#endif /* ! defined (O_CREAT) */ - - if (fcntl (o, F_SETFD, fcntl (o, F_GETFD, 0) | FD_CLOEXEC) < 0) - { - ulog (LOG_ERROR, "fcntl (%s, FD_CLOEXEC): %s", zfile, - strerror (errno)); - (void) close (o); - return NULL; - } - - if (fappend) - e = fdopen (o, (char *) "a"); - else - e = fdopen (o, (char *) "w"); - - if (e == NULL) - { - ulog (LOG_ERROR, "fdopen: %s", strerror (errno)); - (void) close (o); - } - - return e; -} |
