aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/cron
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2016-12-20 17:12:17 +0000
committerConrad Meyer <cem@FreeBSD.org>2016-12-20 17:12:17 +0000
commitd21656dcabd2cd5740927495479e0819bc3e9ca0 (patch)
tree793ee6426c45f6872b63acd514a0adca097e9512 /usr.sbin/cron
parent8a73c85db358c0975599e79648a13b212c3d3180 (diff)
downloadsrc-d21656dcabd2cd5740927495479e0819bc3e9ca0.tar.gz
src-d21656dcabd2cd5740927495479e0819bc3e9ca0.zip
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
Notes
Notes: svn path=/head/; revision=310329
Diffstat (limited to 'usr.sbin/cron')
-rw-r--r--usr.sbin/cron/crontab/crontab.110
-rw-r--r--usr.sbin/cron/crontab/crontab.c10
2 files changed, 15 insertions, 5 deletions
diff --git a/usr.sbin/cron/crontab/crontab.1 b/usr.sbin/cron/crontab/crontab.1
index 0183c39bdfa3..f4792bf78cc4 100644
--- a/usr.sbin/cron/crontab/crontab.1
+++ b/usr.sbin/cron/crontab/crontab.1
@@ -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
diff --git a/usr.sbin/cron/crontab/crontab.c b/usr.sbin/cron/crontab/crontab.c
index 933450b9b4d5..53c58403406a 100644
--- a/usr.sbin/cron/crontab/crontab.c
+++ b/usr.sbin/cron/crontab/crontab.c
@@ -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)