static char *sccsid
= "@(#)date.c 4.6 (Berkeley) %G%";
* Date - print and set date
#define WTMP "/usr/adm/wtmp"
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
static char *usage
= "usage: date [-u] [yymmddhhmm[.ss]]\n";
if (argc
> 1 && strcmp(argv
[1], "-u") == 0) {
wtmp
[0].ut_time
= tv
.tv_sec
;
/* convert to GMT assuming local time */
tv
.tv_sec
+= (long)tz
.tz_minuteswest
*60;
/* now fix up local daylight time */
if (localtime(&tv
.tv_sec
)->tm_isdst
)
if (settimeofday(&tv
, (struct timezone
*)0) < 0) {
perror("Failed to set date");
} else if ((wf
= open(WTMP
, 1)) >= 0) {
write(wf
, (char *)wtmp
, sizeof(wtmp
));
ap
= asctime(gmtime(&tv
.tv_sec
));
tp
= localtime(&tv
.tv_sec
);
tzn
= timezone(tz
.tz_minuteswest
, tp
->tm_isdst
);
register int i
, year
, month
;
int day
, hour
, mins
, secs
;
L
= localtime(&tv
.tv_sec
);
if (month
< 1 || month
> 12 ||
if (hour
< 0 || hour
> 23)
for (i
= 1970; i
< year
; i
++)
if (dysize(year
) == 366 && month
>= 3)
tv
.tv_sec
+= dmsize
[month
-1];
tv
.tv_sec
= 24*tv
.tv_sec
+ hour
;
tv
.tv_sec
= 60*tv
.tv_sec
+ mins
;
tv
.tv_sec
= 60*tv
.tv_sec
+ secs
;
d
= (*sp
? (*sp
++) - '0' : 0);
if (c
< 0 || c
> 9 || d
< 0 || d
> 9)