settimeofday() { register struct a { struct timeval *tv; struct timezone *tzp; } *uap = (struct a *)u.u_ap; struct timeval atv; struct timezone atz; u.u_error = copyin((caddr_t)uap->tv, (caddr_t)&atv, sizeof (struct timeval)); if (u.u_error) return; setthetime(&atv); if (uap->tzp && suser()) { u.u_error = copyin((caddr_t)uap->tzp, (caddr_t)&atz, sizeof (atz)); if (u.u_error == 0) tz = atz; } }
int main(int argc, char *argv[]) { struct timezone tz; int ch, rflag; int jflag, nflag; const char *format; char buf[1024]; char *endptr, *fmt; char *tmp; int set_timezone; struct vary *v; const struct vary *badv; struct tm lt; v = NULL; fmt = NULL; (void) setlocale(LC_TIME, ""); tz.tz_dsttime = tz.tz_minuteswest = 0; rflag = 0; jflag = nflag = 0; set_timezone = 0; while ((ch = getopt(argc, argv, "d:f:jnr:t:uv:")) != -1) switch((char)ch) { case 'd': /* daylight savings time */ tz.tz_dsttime = strtol(optarg, &endptr, 10) ? 1 : 0; if (endptr == optarg || *endptr != '\0') usage(); set_timezone = 1; break; case 'f': fmt = optarg; break; case 'j': jflag = 1; /* don't set time */ break; case 'n': /* don't set network */ nflag = 1; break; case 'r': /* user specified seconds */ rflag = 1; tval = strtoq(optarg, &tmp, 0); if (*tmp != 0) usage(); break; case 't': /* minutes west of UTC */ /* error check; don't allow "PST" */ tz.tz_minuteswest = strtol(optarg, &endptr, 10); if (endptr == optarg || *endptr != '\0') usage(); set_timezone = 1; break; case 'u': /* do everything in UTC */ (void)setenv("TZ", "UTC0", 1); break; case 'v': v = vary_append(v, optarg); break; default: usage(); } argc -= optind; argv += optind; /* * If -d or -t, set the timezone or daylight savings time; this * doesn't belong here; the kernel should not know about either. */ if (set_timezone && settimeofday((struct timeval *)NULL, &tz)) err(1, "settimeofday (timezone)"); if (!rflag && time(&tval) == -1) err(1, "time"); format = "%+"; /* allow the operands in any order */ if (*argv && **argv == '+') { format = *argv + 1; ++argv; } if (*argv) { setthetime(fmt, *argv, jflag, nflag); ++argv; } else if (fmt != NULL) usage(); if (*argv && **argv == '+') format = *argv + 1; lt = *localtime(&tval); badv = vary_apply(v, <); if (badv) { fprintf(stderr, "%s: Cannot apply date adjustment\n", badv->arg); vary_destroy(v); usage(); } vary_destroy(v); (void)strftime(buf, sizeof(buf), format, <); (void)printf("%s\n", buf); if (fflush(stdout)) err(1, "stdout"); exit(retval); }
int main(int argc, char *argv[]) { struct timezone tz; struct tm *tp; int ch, rflag; char *format, buf[1024], *outzone = NULL; setlocale(LC_ALL, ""); tz.tz_dsttime = tz.tz_minuteswest = 0; rflag = 0; while ((ch = getopt(argc, argv, "ad:jr:ut:z:")) != -1) switch(ch) { case 'd': /* daylight saving time */ tz.tz_dsttime = atoi(optarg) ? 1 : 0; break; case 'a': slidetime = 1; break; case 'j': /* don't set */ jflag = 1; break; case 'r': /* user specified seconds */ rflag = 1; tval = atoll(optarg); break; case 'u': /* do everything in UTC */ if (setenv("TZ", "UTC", 1) == -1) err(1, "cannot unsetenv TZ"); break; case 't': /* minutes west of GMT */ /* error check; don't allow "PST" */ if (isdigit((unsigned char)*optarg)) { tz.tz_minuteswest = atoi(optarg); break; } /* FALLTHROUGH */ case 'z': outzone = optarg; break; default: usage(); } 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"); format = "%a %b %e %H:%M:%S %Z %Y"; /* allow the operands in any order */ if (*argv && **argv == '+') { format = *argv + 1; argv++; argc--; } if (*argv) { setthetime(*argv); argv++; argc--; } if (*argv && **argv == '+') { format = *argv + 1; argc--; } if (argc > 0) errx(1, "too many arguments"); if (outzone) setenv("TZ", outzone, 1); tp = localtime(&tval); if (tp == NULL) errx(1, "conversion error"); (void)strftime(buf, sizeof(buf), format, tp); (void)printf("%s\n", buf); exit(0); }
/* set the real time */ void afs_osi_SetTime(osi_timeval_t * atv) { #if defined(AFS_AIX32_ENV) struct timestruc_t t; t.tv_sec = atv->tv_sec; t.tv_nsec = atv->tv_usec * 1000; ksettimer(&t); /* Was -> settimer(TIMEOFDAY, &t); */ #elif defined(AFS_SUN5_ENV) stime(atv->tv_sec); #elif defined(AFS_SGI_ENV) struct stimea { sysarg_t time; } sta; AFS_GUNLOCK(); sta.time = atv->tv_sec; stime(&sta); AFS_GLOCK(); #elif defined(AFS_DARWIN_ENV) #ifndef AFS_DARWIN80_ENV AFS_GUNLOCK(); setthetime(atv); AFS_GLOCK(); #endif #else /* stolen from kern_time.c */ #ifndef AFS_AUX_ENV boottime.tv_sec += atv->tv_sec - time.tv_sec; #endif #ifdef AFS_HPUX_ENV { #if !defined(AFS_HPUX1122_ENV) /* drop the setting of the clock for now. spl7 is not * known on hpux11.22 */ ulong_t s; struct timeval t; t.tv_sec = atv->tv_sec; t.tv_usec = atv->tv_usec; s = spl7(); time = t; (void)splx(s); resettodr(atv); #endif } #else { int s; s = splclock(); time = *atv; (void)splx(s); } resettodr(); #endif #ifdef AFS_AUX_ENV logtchg(atv->tv_sec); #endif #endif /* AFS_DARWIN_ENV */ AFS_STATCNT(osi_SetTime); }
int main(int argc, char *argv[]) { struct timezone tz; const char *errstr; struct tm *tp; int ch, rflag; char *format, buf[1024], *outzone = NULL; tz.tz_dsttime = tz.tz_minuteswest = 0; rflag = 0; while ((ch = getopt(argc, argv, "ad:jr:ut:z:")) != -1) switch(ch) { case 'd': /* daylight saving time */ tz.tz_dsttime = atoi(optarg) ? 1 : 0; break; case 'a': slidetime = 1; break; case 'j': /* don't set */ jflag = 1; break; case 'r': /* user specified seconds */ rflag = 1; tval = strtonum(optarg, LLONG_MIN, LLONG_MAX, &errstr); if (errstr) errx(1, "seconds is %s: %s", errstr, optarg); break; case 'u': /* do everything in UTC */ 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; default: usage(); } 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"); format = "%a %b %e %H:%M:%S %Z %Y"; /* allow the operands in any order */ if (*argv && **argv == '+') { format = *argv + 1; argv++; argc--; } if (*argv) { setthetime(*argv); argv++; argc--; } if (pledge("stdio rpath", NULL) == -1) err(1, "pledge"); if (*argv && **argv == '+') { format = *argv + 1; argc--; } if (argc > 0) errx(1, "too many arguments"); if (outzone) setenv("TZ", outzone, 1); tp = localtime(&tval); if (tp == NULL) errx(1, "conversion error"); (void)strftime(buf, sizeof(buf), format, tp); (void)printf("%s\n", buf); return 0; }
int main(int argc, char *argv[]) { struct timezone tz; int ch, rflag; const char *format = NULL; char buf[1024]; int whatformat = 0; tz.tz_dsttime = tz.tz_minuteswest = 0; rflag = 0; while ((ch = getopt(argc, argv, "ad:nRr:ut:")) != -1) switch((char)ch) { case 'a': slidetime++; break; case 'd': /* daylight saving time */ tz.tz_dsttime = atoi(optarg) ? 1 : 0; break; case 'n': /* don't set network */ break; case 'R': /* RFC 2822 format */ whatformat |= 1; break; case 'r': /* user specified seconds */ rflag = 1; tval = atoll(optarg); break; case 'u': /* do everything in UTC */ if (setenv("TZ", "GMT0", 1) == -1) err(1, "cannot unsetenv TZ"); break; case 't': /* minutes west of GMT */ /* error check; don't allow "PST" */ if (isdigit(*optarg)) { tz.tz_minuteswest = atoi(optarg); break; } /* FALLTHROUGH */ default: usage(); } 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"); /* allow the operands in any order */ if (*argv && **argv == '+') { if (*(*argv + 1)) { whatformat |= 2; format = *argv + 1; } ++argv; } if (*argv) { setthetime(*argv); ++argv; } if (*argv && **argv == '+') { whatformat |= 4; format = *argv + 1; } if (whatformat == 0) format = "%a %b %e %H:%M:%S %Z %Y"; else if (whatformat == 1) { format = "%a, %d %b %Y %H:%M:%S %z"; } else if (whatformat != 2 && whatformat != 4) errx(1, "more than one format specified"); strftime(buf, sizeof (buf), format, localtime(&tval)); printf("%s\n", buf); exit(retval); }
/* set the real time */ void afs_osi_SetTime(osi_timeval_t * atv) { #if defined(AFS_AIX32_ENV) struct timestruc_t t; t.tv_sec = atv->tv_sec; t.tv_nsec = atv->tv_usec * 1000; ksettimer(&t); /* Was -> settimer(TIMEOFDAY, &t); */ #elif defined(AFS_SUN55_ENV) stime(atv->tv_sec); #elif defined(AFS_SUN5_ENV) /* * To get more than second resolution we can use adjtime. The problem * is that the usecs from the server are wrong (by now) so it isn't * worth complicating the following code. */ struct stimea { time_t time; } sta; sta.time = atv->tv_sec; stime(&sta, NULL); #elif defined(AFS_SGI_ENV) struct stimea { sysarg_t time; } sta; AFS_GUNLOCK(); sta.time = atv->tv_sec; stime(&sta); AFS_GLOCK(); #elif defined(AFS_DARWIN_ENV) #ifndef AFS_DARWIN80_ENV AFS_GUNLOCK(); setthetime(atv); AFS_GLOCK(); #endif #else /* stolen from kern_time.c */ #ifndef AFS_AUX_ENV boottime.tv_sec += atv->tv_sec - time.tv_sec; #endif #ifdef AFS_HPUX_ENV { #if !defined(AFS_HPUX1122_ENV) /* drop the setting of the clock for now. spl7 is not * known on hpux11.22 */ register ulong_t s; struct timeval t; t.tv_sec = atv->tv_sec; t.tv_usec = atv->tv_usec; s = spl7(); time = t; (void)splx(s); resettodr(atv); #endif } #else { register int s; s = splclock(); time = *atv; (void)splx(s); } resettodr(); #endif #ifdef AFS_AUX_ENV logtchg(atv->tv_sec); #endif #endif /* AFS_DARWIN_ENV */ AFS_STATCNT(osi_SetTime); }
int main(int argc, char *argv[]) { char *buf; size_t bufsiz; const char *format; int ch; setprogname(argv[0]); (void)setlocale(LC_ALL, ""); while ((ch = getopt(argc, argv, "ad:jnr:u")) != -1) { switch (ch) { case 'a': /* adjust time slowly */ aflag = 1; nflag = 1; break; case 'd': rflag = 1; tval = parsedate(optarg, NULL, NULL); if (tval == -1) errx(1, "Cannot parse `%s'", optarg); break; case 'j': /* don't set time */ jflag = 1; break; case 'n': /* don't set network */ nflag = 1; break; case 'r': /* user specified seconds */ rflag = 1; tval = strtoll(optarg, NULL, 0); break; case 'u': /* do everything in UTC */ (void)putenv("TZ=UTC0"); break; default: usage(); } } argc -= optind; argv += optind; if (!rflag && time(&tval) == -1) err(EXIT_FAILURE, "time"); format = "%a %b %e %H:%M:%S %Z %Y"; /* allow the operands in any order */ if (*argv && **argv == '+') { format = *argv + 1; ++argv; } if (*argv) { setthetime(*argv); ++argv; } if (*argv && **argv == '+') format = *argv + 1; if ((buf = malloc(bufsiz = 1024)) == NULL) goto bad; while (strftime(buf, bufsiz, format, localtime(&tval)) == 0) if ((buf = realloc(buf, bufsiz <<= 1)) == NULL) goto bad; (void)printf("%s\n", buf); free(buf); return 0; bad: err(1, "Cannot allocate format buffer"); }