# --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: package/.../cron/hardened-remove.patch # Copyright (C) 2004 - 2006 The T2 SDE Project # # More information can be found in the files COPYING and README. # # This patch file is dual-licensed. It is available under the license the # patched project is licensed under, as long as it is an OpenSource license # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms # of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # --- SDE-COPYRIGHT-NOTE-END --- Never ever remove my crontab mistyping -e ... - Rene Rebe diff -ur cron3.0pl1-orig/crontab.1 cron3.0pl1/crontab.1 --- cron3.0pl1-orig/crontab.1 2005-08-07 15:19:12.000000000 +0200 +++ cron3.0pl1/crontab.1 2005-08-07 15:26:58.175092641 +0200 @@ -24,7 +24,7 @@ .SH SYNOPSIS crontab [ -u user ] file .br -crontab [ -u user ] { -l | -r | -e } +crontab [ -u user ] { -l | -rr | -e } .SH DESCRIPTION .I crontab is the program used to install, deinstall or list the tables @@ -75,8 +75,11 @@ below. .PP The -.I -r -option causes the current crontab to be removed. +.I -rr +option causes the current crontab to be removed. NOTE: Since users accidently +managed to delet their crontab serveral times, accidently hitting -r instead +of -e, - we decided that -r needs to be specified two (!) times in order to +delete the user's crontab, on T2. .PP The .I -e diff -ur cron3.0pl1-orig/crontab.c cron3.0pl1/crontab.c --- cron3.0pl1-orig/crontab.c 2005-08-07 15:19:12.000000000 +0200 +++ cron3.0pl1/crontab.c 2005-08-07 15:23:59.485186577 +0200 @@ -81,11 +81,11 @@ { fprintf(stderr, "%s: usage error: %s\n", ProgramName, msg); fprintf(stderr, "usage:\t%s [-u user] file\n", ProgramName); - fprintf(stderr, "\t%s [-u user] { -e | -l | -r }\n", ProgramName); + fprintf(stderr, "\t%s [-u user] { -e | -l | -rr }\n", ProgramName); fprintf(stderr, "\t\t(default operation is replace, per 1003.2)\n"); fprintf(stderr, "\t-e\t(edit user's crontab)\n"); fprintf(stderr, "\t-l\t(list user's crontab)\n"); - fprintf(stderr, "\t-r\t(delete user's crontab)\n"); + fprintf(stderr, "\t-rr\t(delete user's crontab)\n"); exit(ERROR_EXIT); } @@ -121,7 +121,7 @@ switch (Option) { case opt_list: list_cmd(); break; - case opt_delete: delete_cmd(); + case opt_delete: printf("here\n") ; // delete_cmd(); break; case opt_edit: edit_cmd(); break; @@ -153,6 +153,7 @@ { int argch; struct stat statbuf; + static int really_delete = 0; if (!(pw = getpwuid(getuid()))) { fprintf(stderr, "%s: your UID isn't in the passwd file.\n", @@ -205,7 +206,10 @@ case 'r': if (Option != opt_unknown) usage("only one operation permitted"); - Option = opt_delete; + if (really_delete) + Option = opt_delete; + else + really_delete = 1; break; case 'e': if (Option != opt_unknown)