*: introduce and use xmkstemp. -65 bytes.
No binary (build failed)
—
(log yok)
| @@ -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); | |
| } | |
| @@ -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(); | |
| @@ -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); | |
| @@ -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 */ | |
| @@ -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, | |
| @@ -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) | |
| { | |
| @@ -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; | |