libbb: add xunlink()

patch: do not try to delete same file twice
This commit is contained in:
Denis Vlasenko 2007-04-05 21:25:15 +00:00
parent 9020d850bf
commit 1bb552b1d9
4 changed files with 19 additions and 16 deletions

View File

@ -105,8 +105,7 @@ int bbunpack(char **argv,
if (new_name == filename)
filename[strlen(filename)] = '.';
}
if (unlink(del) < 0)
bb_perror_msg_and_die("cannot remove %s", del);
xunlink(del);
#if 0 /* Currently buggy - wrong name: "a.gz: 261% - replaced with a.gz" */
/* Extreme bloat for gunzip compat */

View File

@ -260,12 +260,9 @@ int patch_main(int argc, char **argv)
}
if ((dest_cur_line == 0) || (dest_beg_line == 0)) {
/* The new patched file is empty, remove it */
if (unlink(new_filename) == -1) {
bb_perror_msg_and_die("cannot remove file %s", new_filename);
}
if (unlink(original_filename) == -1) {
bb_perror_msg_and_die("cannot remove original file %s", new_filename);
}
xunlink(new_filename);
if (strcmp(new_filename, original_filename) != 0)
xunlink(original_filename);
}
}
}

View File

@ -293,14 +293,15 @@ extern void sig_pause(void);
extern void xsetgid(gid_t gid);
extern void xsetuid(uid_t uid);
extern void xchdir(const char *path);
extern void xsetenv(const char *key, const char *value);
extern int xopen(const char *pathname, int flags);
extern int xopen3(const char *pathname, int flags, int mode);
extern off_t xlseek(int fd, off_t offset, int whence);
extern off_t fdlength(int fd);
void xsetgid(gid_t gid);
void xsetuid(uid_t uid);
void xchdir(const char *path);
void xsetenv(const char *key, const char *value);
void xunlink(const char *pathname);
int xopen(const char *pathname, int flags);
int xopen3(const char *pathname, int flags, int mode);
off_t xlseek(int fd, off_t offset, int whence);
off_t fdlength(int fd);
int xsocket(int domain, int type, int protocol);

View File

@ -122,6 +122,12 @@ int xopen3(const char *pathname, int flags, int mode)
return ret;
}
void xunlink(const char *pathname)
{
if (unlink(pathname))
bb_perror_msg_and_die("cannot remove file '%s'", pathname);
}
// Turn on nonblocking I/O on a fd
int ndelay_on(int fd)
{