Author: cem
Date: Tue Dec 20 17:12:17 2016
New Revision: 310329
URL: https://svnweb.freebsd.org/changeset/base/310329

Log:
  Add a 'force' option for non-interactive crontab removal
  
  Add a '-f' option to force crontab '-r' to be non-interactive.
  
  Submitted by: Sam Gwydir <sam at samgwydir.com>
  Reviewed by:  me, wblock (previous version)
  Sponsored by: Dell EMC Isilon
  Differential Revision:        https://reviews.freebsd.org/D8815

Modified:
  head/usr.sbin/cron/crontab/crontab.1
  head/usr.sbin/cron/crontab/crontab.c

Modified: head/usr.sbin/cron/crontab/crontab.1
==============================================================================
--- head/usr.sbin/cron/crontab/crontab.1        Tue Dec 20 16:37:45 2016        
(r310328)
+++ head/usr.sbin/cron/crontab/crontab.1        Tue Dec 20 17:12:17 2016        
(r310329)
@@ -17,7 +17,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 13, 2010
+.Dd December 20, 2016
 .Dt CRONTAB 1
 .Os
 .Sh NAME
@@ -31,7 +31,8 @@
 .Op Fl u Ar user
 {
 .Fl l |
-.Fl r |
+.Fl r Op Fl f
+|
 .Fl e
 }
 .Sh DESCRIPTION
@@ -97,6 +98,11 @@ option for safety's sake.
 Display the current crontab on standard output.
 .It Fl r
 Remove the current crontab.
+By default the
+.Fl r
+option prompts for confirmation, adding the
+.Fl f
+option will attempt to remove the current crontab without confirmation.
 .It Fl e
 Edit the current crontab using the editor specified by
 the

Modified: head/usr.sbin/cron/crontab/crontab.c
==============================================================================
--- head/usr.sbin/cron/crontab/crontab.c        Tue Dec 20 16:37:45 2016        
(r310328)
+++ head/usr.sbin/cron/crontab/crontab.c        Tue Dec 20 17:12:17 2016        
(r310329)
@@ -63,6 +63,7 @@ static        char            Filename[MAX_FNAME];
 static FILE            *NewCrontab;
 static int             CheckErrorCount;
 static enum opt_t      Option;
+static int             fflag;
 static struct passwd   *pw;
 static void            list_cmd(void),
                        delete_cmd(void),
@@ -79,7 +80,7 @@ usage(char *msg)
        fprintf(stderr, "crontab: usage error: %s\n", msg);
        fprintf(stderr, "%s\n%s\n",
                "usage: crontab [-u user] file",
-               "       crontab [-u user] { -e | -l | -r }");
+               "       crontab [-u user] { -l | -r [-f] | -e }");
        exit(ERROR_EXIT);
 }
 
@@ -142,7 +143,7 @@ parse_args(argc, argv)
        strcpy(RealUser, User);
        Filename[0] = '\0';
        Option = opt_unknown;
-       while ((argch = getopt(argc, argv, "u:lerx:")) != -1) {
+       while ((argch = getopt(argc, argv, "u:lerx:f")) != -1) {
                switch (argch) {
                case 'x':
                        if (!set_debug_flags(optarg))
@@ -172,6 +173,9 @@ parse_args(argc, argv)
                                usage("only one operation permitted");
                        Option = opt_edit;
                        break;
+               case 'f':
+                       fflag = 1;
+                       break;
                default:
                        usage("unrecognized option");
                }
@@ -282,7 +286,7 @@ delete_cmd() {
        char    n[MAX_FNAME];
        int ch, first;
 
-       if (isatty(STDIN_FILENO)) {
+       if (!fflag && isatty(STDIN_FILENO)) {
                (void)fprintf(stderr, "remove crontab for %s? ", User);
                first = ch = getchar();
                while (ch != '\n' && ch != EOF)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to