libbb: introduce and use xrename and rename_or_warn.
This commit is contained in:
		| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user