libbb: introduce and use xrename and rename_or_warn.
No binary (build failed)
—
(log yok)
| @@ -150,10 +150,7 @@ int patch_main(int argc, char **argv) | |
| backup_filename = xmalloc(strlen(new_filename) + 6); | |
| strcpy(backup_filename, new_filename); | |
| strcat(backup_filename, ".orig"); | |
| - | if (rename(new_filename, backup_filename) == -1) { |
| - | bb_perror_msg_and_die("cannot create file %s", |
| - | backup_filename); |
| - | } |
| + | xrename(new_filename, backup_filename); |
| dst_stream = xfopen(new_filename, "w"); | |
| } | |
| @@ -1340,8 +1340,7 @@ int sed_main(int argc, char **argv) | |
| G.nonstdout = stdout; | |
| /* unlink(argv[i]); */ | |
| - | // FIXME: error check / message? |
| - | rename(G.outname, argv[i]); |
| + | xrename(G.outname, argv[i]); |
| free(G.outname); | |
| G.outname = NULL; | |
| } | |
| @@ -298,6 +298,8 @@ int xopen(const char *pathname, int flags); | |
| int xopen3(const char *pathname, int flags, int mode); | |
| int open_or_warn(const char *pathname, int flags); | |
| int open3_or_warn(const char *pathname, int flags, int mode); | |
| + | void xrename(const char *oldpath, const char *newpath); |
| + | int rename_or_warn(const char *oldpath, const char *newpath); |
| off_t xlseek(int fd, off_t offset, int whence); | |
| off_t fdlength(int fd); | |
| @@ -98,11 +98,6 @@ int wait4pid(int pid) | |
| if (WIFSIGNALED(status)) | |
| return WTERMSIG(status) + 1000; | |
| return 0; | |
| - | if (WIFEXITED(status)) |
| - | return WEXITSTATUS(status); |
| - | if (WIFSIGNALED(status)) |
| - | return WTERMSIG(status) + 1000; |
| - | return 0; |
| } | |
| #if ENABLE_FEATURE_PREFER_APPLETS | |
| @@ -146,18 +146,32 @@ int open_or_warn(const char *pathname, int flags) | |
| return open3_or_warn(pathname, flags, 0666); | |
| } | |
| - | void xpipe(int filedes[2]) |
| - | { |
| - | if (pipe(filedes)) |
| - | bb_perror_msg_and_die("can't create pipe"); |
| - | } |
| - | |
| void xunlink(const char *pathname) | |
| { | |
| if (unlink(pathname)) | |
| bb_perror_msg_and_die("can't remove file '%s'", pathname); | |
| } | |
| + | void xrename(const char *oldpath, const char *newpath) |
| + | { |
| + | if (rename(oldpath, newpath)) |
| + | bb_perror_msg_and_die("can't move '%s' to '%s'", oldpath, newpath); |
| + | } |
| + | |
| + | int rename_or_warn(const char *oldpath, const char *newpath) |
| + | { |
| + | int n = rename(oldpath, newpath); |
| + | if (n) |
| + | bb_perror_msg("can't move '%s' to '%s'", oldpath, newpath); |
| + | return n; |
| + | } |
| + | |
| + | void xpipe(int filedes[2]) |
| + | { |
| + | if (pipe(filedes)) |
| + | bb_perror_msg_and_die("can't create pipe"); |
| + | } |
| + | |
| // Turn on nonblocking I/O on a fd | |
| int ndelay_on(int fd) | |
| { | |
| @@ -548,7 +548,7 @@ static void CheckUpdates(void) | |
| fi = fopen(CRONUPDATE, "r"); | |
| if (fi != NULL) { | |
| - | remove(CRONUPDATE); |
| + | unlink(CRONUPDATE); |
| while (fgets(buf, sizeof(buf), fi) != NULL) { | |
| SynchronizeFile(strtok(buf, " \t\r\n")); | |
| } | |
| @@ -579,7 +579,7 @@ static void SynchronizeDir(void) | |
| * scan directory and add associated users | |
| */ | |
| - | remove(CRONUPDATE); |
| + | unlink(CRONUPDATE); |
| if (chdir(CDir) < 0) { | |
| crondlog("\311cannot find %s\n", CDir); | |
| } | |
| @@ -814,7 +814,7 @@ ForkJob(const char *user, CronLine * line, int mailFd, | |
| crondlog("\024cannot fork\n"); | |
| line->cl_Pid = 0; | |
| if (mail_filename) { | |
| - | remove(mail_filename); |
| + | unlink(mail_filename); |
| } | |
| } else if (mail_filename) { | |
| /* PARENT, FORK SUCCESS | |
| @@ -823,7 +823,7 @@ ForkJob(const char *user, CronLine * line, int mailFd, | |
| char mailFile2[128]; | |
| snprintf(mailFile2, sizeof(mailFile2), TMPDIR "/cron.%s.%d", user, pid); | |
| - | rename(mail_filename, mailFile2); |
| + | rename(mail_filename, mailFile2); // TODO: xrename? |
| } | |
| /* | |
| * Close the mail file descriptor.. we can't just leave it open in | |
| @@ -896,7 +896,7 @@ static void EndJob(const char *user, CronLine * line) | |
| */ | |
| mailFd = open(mailFile, O_RDONLY); | |
| - | remove(mailFile); |
| + | unlink(mailFile); |
| if (mailFd < 0) { | |
| return; | |
| } | |
| @@ -512,10 +512,7 @@ int sendgetmail_main(int argc, char **argv) | |
| if (fd < 0) | |
| bb_perror_msg_and_die("cannot create unique file"); | |
| close(fd); | |
| - | if (rename(tmp_name, new_name) < 0) { |
| - | // something is very wrong |
| - | bb_perror_msg_and_die("cannot move %s to %s", tmp_name, new_name); |
| - | } |
| + | xrename(tmp_name, new_name); |
| } | |
| // delete message from server | |
| @@ -157,16 +157,6 @@ static int open_trunc_or_warn(const char *name) | |
| return fd; | |
| } | |
| - | static int rename_or_warn(const char *old, const char *new) |
| - | { |
| - | if (rename(old, new) == -1) { |
| - | bb_perror_msg("%s: warning: cannot rename %s to %s", |
| - | dir, old, new); |
| - | return -1; |
| - | } |
| - | return 0; |
| - | } |
| - | |
| static void update_status(struct svdir *s) | |
| { | |
| ssize_t sz; | |
| @@ -344,10 +344,10 @@ static void log_locally(time_t now, char *msg) | |
| sprintf(newFile, "%s.%d", G.logFilePath, i); | |
| if (i == 0) break; | |
| sprintf(oldFile, "%s.%d", G.logFilePath, --i); | |
| - | rename(oldFile, newFile); |
| + | xrename(oldFile, newFile); |
| } | |
| /* newFile == "f.0" now */ | |
| - | rename(G.logFilePath, newFile); |
| + | xrename(G.logFilePath, newFile); |
| fl.l_type = F_UNLCK; | |
| fcntl(G.logFD, F_SETLKW, &fl); | |
| close(G.logFD); | |
| @@ -209,7 +209,7 @@ static void make_device(char *path, int delete) | |
| } else | |
| dest = alias; | |
| - | rename(device_name, dest); |
| + | rename(device_name, dest); // TODO: xrename? |
| symlink(dest, device_name); | |
| if (alias != dest) | |