On Wed, Aug 07, 2019 at 06:08:45PM -0600, Theo de Raadt wrote: > Scott Cheloha <scottchel...@gmail.com> wrote: > > > On Wed, Aug 07, 2019 at 05:52:54PM -0600, Theo de Raadt wrote: > > > Scott Cheloha <scottchel...@gmail.com> wrote: > > > > > > > - while ((ch = getopt(argc, argv, "ad:f:jr:ut:z:")) != -1) > > > > + while ((ch = getopt(argc, argv, "af:jr:uz:")) != -1) > > > > > > You remove d and t, so: > > > > > > > + case 'd': /* compat: daylight saving time > > > > */ > > > > break; > > > > > > Can't be reached. > > > > > > > + case 't': /* compat: minutes west of GMT > > > > */ > > > > break; > > > > > > Can't be reached. > > > > > > Whoops, corrected. > > > > Index: date.c > > =================================================================== > > RCS file: /cvs/src/bin/date/date.c,v > > retrieving revision 1.55 > > diff -u -p -r1.55 date.c > > --- date.c 28 Jun 2019 13:34:58 -0000 1.55 > > +++ date.c 8 Aug 2019 00:06:09 -0000 > > @@ -58,22 +58,19 @@ static void __dead usage(void); > > int > > main(int argc, char *argv[]) > > { > > - struct timezone tz; > > const char *errstr; > > struct tm *tp; > > int ch, rflag; > > char *format, buf[1024], *outzone = NULL; > > const char *pformat = NULL; > > > > - tz.tz_dsttime = tz.tz_minuteswest = 0; > > rflag = 0; > > - while ((ch = getopt(argc, argv, "ad:f:jr:ut:z:")) != -1) > > + while ((ch = getopt(argc, argv, "ad:f:jr:t:uz:")) != -1) > > switch(ch) { > > case 'a': > > slidetime = 1; > > break; > > - case 'd': /* daylight saving time */ > > - tz.tz_dsttime = atoi(optarg) ? 1 : 0; > > + case 'd': /* compat: daylight saving time */ > > break; > > case 'f': /* parse with strptime */ > > pformat = optarg; > > @@ -91,10 +88,7 @@ main(int argc, char *argv[]) > > if (setenv("TZ", "UTC", 1) == -1) > > err(1, "cannot unsetenv TZ"); > > break; > > - case 't': /* minutes west of GMT */ > > - tz.tz_minuteswest = strtonum(optarg, 0, 24*60-1, > > &errstr); > > - if (errstr) > > - errx(1, "-t %s: %s", optarg, errstr); > > + case 't': /* compat: minutes west of GMT */ > > break; > > > I don't understand what you are trying to do. > > What does "compat" mean, when it ignores the option. Is it not better > to de-support the option, so that people know it doesn't behave same > anymore??
It doesn't mean anything. I guess I'm still gunshy about removing options and breaking things after the lock(1) thing. Index: date.c =================================================================== RCS file: /cvs/src/bin/date/date.c,v retrieving revision 1.55 diff -u -p -r1.55 date.c --- date.c 28 Jun 2019 13:34:58 -0000 1.55 +++ date.c 8 Aug 2019 00:17:03 -0000 @@ -58,23 +58,18 @@ static void __dead usage(void); int main(int argc, char *argv[]) { - struct timezone tz; const char *errstr; struct tm *tp; int ch, rflag; char *format, buf[1024], *outzone = NULL; const char *pformat = NULL; - tz.tz_dsttime = tz.tz_minuteswest = 0; rflag = 0; - while ((ch = getopt(argc, argv, "ad:f:jr:ut:z:")) != -1) + while ((ch = getopt(argc, argv, "af:jr:uz:")) != -1) switch(ch) { case 'a': slidetime = 1; break; - case 'd': /* daylight saving time */ - tz.tz_dsttime = atoi(optarg) ? 1 : 0; - break; case 'f': /* parse with strptime */ pformat = optarg; break; @@ -91,11 +86,6 @@ main(int argc, char *argv[]) if (setenv("TZ", "UTC", 1) == -1) err(1, "cannot unsetenv TZ"); break; - case 't': /* minutes west of GMT */ - tz.tz_minuteswest = strtonum(optarg, 0, 24*60-1, &errstr); - if (errstr) - errx(1, "-t %s: %s", optarg, errstr); - break; case 'z': outzone = optarg; break; @@ -105,14 +95,6 @@ main(int argc, char *argv[]) argc -= optind; argv += optind; - /* - * If -d or -t, set the timezone or daylight saving time; this - * doesn't belong here, the kernel should not know about either. - */ - if ((tz.tz_minuteswest || tz.tz_dsttime) && - settimeofday(NULL, &tz)) - err(1, "settimeofday"); - if (!rflag && time(&tval) == -1) err(1, "time"); @@ -279,9 +261,8 @@ badformat(void) static void __dead usage(void) { - (void)fprintf(stderr, - "usage: %s [-aju] [-d dst] [-f pformat] [-r seconds] " - "[-t minutes_west]\n" + fprintf(stderr, + "usage: %s [-aju] [-f pformat] [-r seconds]\n" "\t[-z output_zone] [+format] [[[[[[cc]yy]mm]dd]HH]MM[.SS]]\n", __progname); exit(1); Index: date.1 =================================================================== RCS file: /cvs/src/bin/date/date.1,v retrieving revision 1.70 diff -u -p -r1.70 date.1 --- date.1 22 Jan 2019 06:53:30 -0000 1.70 +++ date.1 8 Aug 2019 00:17:03 -0000 @@ -42,10 +42,8 @@ .Sh SYNOPSIS .Nm date .Op Fl aju -.Op Fl d Ar dst .Op Fl f Ar pformat .Op Fl r Ar seconds -.Op Fl t Ar minutes_west .Op Fl z Ar output_zone .Op Cm + Ns Ar format .Sm off @@ -78,15 +76,6 @@ Use the .Xr adjtime 2 call to gradually skew the local time to the desired time rather than just hopping. -.It Fl d Ar dst -Set the system's value for Daylight Saving Time. -If -.Ar dst -is non-zero, future calls -to -.Xr gettimeofday 2 -will return a non-zero value for -.Fa tz_dsttime . .It Fl f Ar pformat Parse the specified time using .Xr strptime 3 @@ -99,13 +88,6 @@ the clock. Print out (in specified format) the date and time represented by .Ar seconds from the Epoch. -.It Fl t Ar minutes_west -Set the system's value for minutes west of GMT. -.Ar minutes_west -specifies the number of minutes returned in -.Fa tz_minuteswest -by future calls to -.Xr gettimeofday 2 . .It Fl u Display or set the date in UTC (Coordinated Universal) time. .It Fl z Ar output_zone @@ -233,7 +215,7 @@ utility is compliant with the specification. .Pp The flags -.Op Fl adfjrtz , +.Op Fl afjrz , as well as the conversion specifiers .Ql \&%F , .Ql \&%G ,