You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							92 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							92 lines
						
					
					
						
							3.0 KiB
						
					
					
				# --- 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 <[email protected]> | 
						|
 | 
						|
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)
 | 
						|
 |