diff options
author | Denis Vlasenko | 2008-03-17 09:29:43 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-03-17 09:29:43 +0000 |
commit | b44c790e41e281965955a83408f35ea53ecdb3d2 (patch) | |
tree | 98514dba64f7b74b9d60882bfeca1e2c4976b033 /miscutils/crontab.c | |
parent | d25c33f186c7cf3618c34ce79af94fe156f9ab02 (diff) | |
download | busybox-b44c790e41e281965955a83408f35ea53ecdb3d2.zip busybox-b44c790e41e281965955a83408f35ea53ecdb3d2.tar.gz |
*: fix various kinds of damage to letter 'c' in Arkadiusz Mickiewicz' surname.
chrt,taskset,dc,eject: shrink
crontab: call "vi" with just name, no path
watchdog: intercept all fatal signals
function old new delta
xstrtoull_range - 35 +35
static.sg_commands - 18 +18
packed_usage 23698 23712 +14
watchdog_main 148 151 +3
crontab_main 637 638 +1
base 1 - -1
static.ps 4 - -4
pointer 4 - -4
stack_machine 99 92 -7
run_command 273 260 -13
eject_main 360 343 -17
static.C 30 12 -18
ptok 61 38 -23
xstrtol_range 27 - -27
get_token 35 - -35
taskset_main 586 550 -36
chrt_main 411 372 -39
dc_main 158 117 -41
time_main 1127 1037 -90
------------------------------------------------------------------------------
(add/remove: 2/5 grow/shrink: 3/9 up/down: 71/-355) Total: -284 bytes
text data bss dec hex filename
793680 662 7420 801762 c3be2 busybox_old
793327 662 7412 801401 c3a79 busybox_unstripped
Diffstat (limited to 'miscutils/crontab.c')
-rw-r--r-- | miscutils/crontab.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/miscutils/crontab.c b/miscutils/crontab.c index 94d69f0..dc3179d 100644 --- a/miscutils/crontab.c +++ b/miscutils/crontab.c @@ -18,9 +18,6 @@ #ifndef CRONUPDATE #define CRONUPDATE "cron.update" #endif -#ifndef PATH_VI -#define PATH_VI "/bin/vi" /* location of vi */ -#endif static void change_user(const struct passwd *pas) { @@ -56,7 +53,7 @@ static void edit_file(const struct passwd *pas, const char *file) if (!ptr) { ptr = getenv("EDITOR"); if (!ptr) - ptr = PATH_VI; + ptr = "vi"; } BB_EXECLP(ptr, ptr, file, NULL); @@ -181,14 +178,16 @@ int crontab_main(int argc ATTRIBUTE_UNUSED, char **argv) case OPT_e: /* Edit */ tmp_fname = xasprintf("%s.%u", crontab_dir, (unsigned)getpid()); - fd = xopen3(tmp_fname, O_RDWR|O_CREAT|O_TRUNC|O_EXCL, 0600); + /* No O_EXCL: we don't want to be stuck if earlier crontabs + * were killed, leaving stale temp file behind */ + fd = xopen3(tmp_fname, O_RDWR|O_CREAT|O_TRUNC, 0600); xmove_fd(fd, STDIN_FILENO); + fchown(STDIN_FILENO, pas->pw_uid, pas->pw_gid); fd = open(pas->pw_name, O_RDONLY); if (fd >= 0) { bb_copyfd_eof(fd, STDIN_FILENO); close(fd); } - fchown(STDIN_FILENO, pas->pw_uid, pas->pw_gid); edit_file(pas, tmp_fname); xlseek(STDIN_FILENO, 0, SEEK_SET); /* fall through */ |