From: Jim Meyering Date: Thu, 26 Oct 1995 05:14:41 +0000 (+0000) Subject: (xfopen): Rewrite using open/fdopen in order to set X-Git-Tag: v4.5.1~12286 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=039942bfc13e6ef0cc3ee767d907ed37d0e1cc97;p=thirdparty%2Fcoreutils.git (xfopen): Rewrite using open/fdopen in order to set proper permissions on temporary files. Reported by Erik Corry (erik@kroete2.freinet.de). --- diff --git a/src/sort.c b/src/sort.c index be9ba38a59..1a5d983027 100644 --- a/src/sort.c +++ b/src/sort.c @@ -294,16 +294,26 @@ xrealloc (char *p, unsigned int n) } static FILE * -xfopen (char *file, char *how) +xfopen (const char *file, const char *how) { - FILE *fp = strcmp (file, "-") ? fopen (file, how) : stdin; + FILE *fp; - if (fp == 0) + if (strcmp (file, "-") == 0) { - error (0, errno, "%s", file); - cleanup (); - exit (2); + fp = stdin; } + else + { + int fd; + fd = open (file, O_WRONLY | O_CREAT | O_TRUNC, 0600); + if (fd < 0 || (fp = fdopen (fd, how)) == NULL) + { + error (0, errno, "%s", file); + cleanup (); + exit (2); + } + } + if (fp == stdin) have_read_stdin = 1; return fp;