*: 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
This commit is contained in:
@@ -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 */
|
||||
|
Reference in New Issue
Block a user