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