*: introduce and use xmkstemp. -65 bytes.
authorAlexander Shishkin <virtuoso@slind.org>
Fri, 22 Oct 2010 11:27:16 +0000 (13:27 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Fri, 22 Oct 2010 11:27:16 +0000 (13:27 +0200)
Signed-off-by: Alexander Shishkin <virtuoso@slind.org>
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
coreutils/dos2unix.c
editors/diff.c
editors/patch.c
editors/sed.c
include/libbb.h
libbb/xfuncs_printf.c
printutils/lpr.c

index ba1ca8c..eab8110 100644 (file)
@@ -41,12 +41,10 @@ static void convert(char *fn, int conv_type)
                fstat(fileno(in), &st);
 
                temp_fn = xasprintf("%sXXXXXX", resolved_fn);
-               i = mkstemp(temp_fn);
-               if (i == -1
-                || fchmod(i, st.st_mode) == -1
-               ) {
+               i = xmkstemp(temp_fn);
+               if (fchmod(i, st.st_mode) == -1)
                        bb_simple_perror_msg_and_die(temp_fn);
-               }
+
                out = xfdopen_for_write(i);
        }
 
index 83de527..d9d709d 100644 (file)
@@ -685,9 +685,8 @@ static int diffreg(char *file[2])
                 */
                if (lseek(fd, 0, SEEK_SET) == -1 && errno == ESPIPE) {
                        char name[] = "/tmp/difXXXXXX";
-                       int fd_tmp = mkstemp(name);
-                       if (fd_tmp < 0)
-                               bb_perror_msg_and_die("mkstemp");
+                       int fd_tmp = xmkstemp(name);
+
                        unlink(name);
                        if (bb_copyfd_eof(fd, fd_tmp) < 0)
                                xfunc_die();
index fff0690..33ff8b5 100644 (file)
@@ -200,8 +200,7 @@ int copy_tempfile(int fdin, char *name, char **tempname)
        int fd;
 
        *tempname = xasprintf("%sXXXXXX", name);
-       fd = mkstemp(*tempname);
-       if(-1 == fd) bb_perror_msg_and_die("no temp file");
+       fd = xmkstemp(*tempname);
 
        // Set permissions of output file
        fstat(fdin, &statbuf);
index 8d9f7b2..964d040 100644 (file)
@@ -1370,9 +1370,7 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
                        }
 
                        G.outname = xasprintf("%sXXXXXX", argv[i]);
-                       nonstdoutfd = mkstemp(G.outname);
-                       if (-1 == nonstdoutfd)
-                               bb_perror_msg_and_die("can't create temp file %s", G.outname);
+                       nonstdoutfd = xmkstemp(G.outname);
                        G.nonstdout = xfdopen_for_write(nonstdoutfd);
 
                        /* Set permissions/owner of output file */
index 01dc33e..409c434 100644 (file)
@@ -425,6 +425,7 @@ int xopen_stdin(const char *pathname) FAST_FUNC;
 void xrename(const char *oldpath, const char *newpath) FAST_FUNC;
 int rename_or_warn(const char *oldpath, const char *newpath) FAST_FUNC;
 off_t xlseek(int fd, off_t offset, int whence) FAST_FUNC;
+int xmkstemp(char *template) FAST_FUNC;
 off_t fdlength(int fd) FAST_FUNC;
 
 uoff_t FAST_FUNC get_volume_size_in_bytes(int fd,
index ba660a2..56ee459 100644 (file)
@@ -240,6 +240,14 @@ off_t FAST_FUNC xlseek(int fd, off_t offset, int whence)
        return off;
 }
 
+int FAST_FUNC xmkstemp(char *template)
+{
+       int fd = mkstemp(template);
+       if (fd < 0)
+               bb_perror_msg_and_die("can't create temp file '%s'", template);
+       return fd;
+}
+
 // Die with supplied filename if this FILE* has ferror set.
 void FAST_FUNC die_if_ferror(FILE *fp, const char *fn)
 {
index fb7860d..2849179 100644 (file)
@@ -159,9 +159,7 @@ int lpqr_main(int argc UNUSED_PARAM, char *argv[])
                // if data file is stdin, we need to dump it first
                if (LONE_DASH(*argv)) {
                        strcpy(tempfile, "/tmp/lprXXXXXX");
-                       dfd = mkstemp(tempfile);
-                       if (dfd < 0)
-                               bb_perror_msg_and_die("mkstemp");
+                       dfd = xmkstemp(tempfile);
                        bb_copyfd_eof(STDIN_FILENO, dfd);
                        xlseek(dfd, 0, SEEK_SET);
                        *argv = (char*)bb_msg_standard_input;