Annotation of cci/usr/src/usr.bin/timezone.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char *sccsid = "@(#)timezone.c  1.0 (Power 6 Unix) 11/30/1984";
                      3: #endif
                      4: 
                      5: /*
                      6:  * Date - print and set date
                      7:  */
                      8: 
                      9: #include <stdio.h>
                     10: #include <sys/time.h>
                     11: #include <utmp.h>
                     12: #define WTMP "/usr/adm/wtmp"
                     13: 
                     14: 
                     15: struct utmp wtmp[2] = {
                     16:        { "|", "", "", 0 },
                     17:        { "{", "", "", 0 }
                     18: };
                     19: struct timeval tv;
                     20: struct timezone tz, newtz;
                     21: /*
                     22:  * The folowing definitions and zone_table HAVE to agree with
                     23:  * what's defined in /usr/src/lib/libc/gen/timezone.c !
                     24:  */
                     25: #define        DST_NONE        0       /* not on dst */
                     26: #define        DST_USA         1       /* USA style dst */
                     27: #define        DST_AUST        2       /* Australian style dst */
                     28: #define        DST_WET         3       /* Western European dst */
                     29: #define        DST_MET         4       /* Middle European dst */
                     30: #define        DST_EET         5       /* Eastern European dst */
                     31: 
                     32: struct zone_table {
                     33:        char *zone_name;
                     34:        struct timezone this_zone;
                     35: } zone_table[] =       {
                     36:        "ADT", {4*60, DST_USA},         /* Atlantic */
                     37:        "AST", {4*60, DST_NONE},        /* Atlantic */
                     38:        "CADT", {-10*60+30, DST_AUST},  /* Aust: Central */
                     39:        "CAST", {-10*60+30, DST_NONE},  /* Aust: Central */
                     40:        "CDT", {6*60, DST_USA},         /* Central */
                     41:        "CST", {6*60, DST_NONE},        /* Central */
                     42:        "EADT", {-10*60, DST_AUST},     /* Aust: Eastern */
                     43:        "EAST", {-10*60, DST_NONE},     /* Aust: Eastern */
                     44:        "EDT", {5*60, DST_USA},         /* Eastern */
                     45:        "EEDT", {-2*60, DST_EET},       /* Eastern European */
                     46:        "EEST", {-2*60, DST_NONE},      /* Eastern European */
                     47:        "EST", {5*60, DST_NONE},        /* Eastern */
                     48:        "MDT", {7*60, DST_USA},         /* Mountain */
                     49:        "MEDT", {-1*60, DST_MET},       /* Middle European */
                     50:        "MEST", {-1*60, DST_NONE},      /* Middle European */
                     51:        "MST", {7*60, DST_NONE},        /* Mountain */
                     52:        "PDT", {8*60, DST_USA},         /* Pacific */
                     53:        "PST", {8*60, DST_NONE},        /* Pacific */
                     54:        "WADT", {-8*60, DST_AUST},      /* Aust: Western */
                     55:        "WAST", {-8*60, DST_NONE},      /* Aust: Western */
                     56:        "WEDT", {0*60, DST_WET},        /* Western European */
                     57:        "WEST", {0*60, DST_NONE},       /* Western European */
                     58:        0, {0, 0},
                     59: };
                     60: 
                     61: 
                     62: main(argc, argv)
                     63:        int argc;
                     64:        char *argv[];
                     65: {
                     66:        int wf;
                     67: 
                     68:        if (argc != 2) {
                     69:                printf("Usage : timezone zone-name\n");
                     70:                exit(0);
                     71:        }
                     72:        if ( !identified(argv[1]) ) {
                     73:                printf("Unknown time zone name : %s\n", argv[1]);
                     74:                exit(0);
                     75:        }
                     76:        gettimeofday(&tv, &tz);
                     77:        if (settimeofday(&tv, &newtz) < 0) {
                     78:                perror("Failed to set new time zone");
                     79:        } else if ((wf = open(WTMP, 1)) >= 0) {
                     80:                time(&wtmp[1].ut_time);
                     81:                lseek(wf, 0L, 2);
                     82:                write(wf, (char *)wtmp, sizeof(wtmp));
                     83:                close(wf);
                     84:        }
                     85: }
                     86: 
                     87: int
                     88: identified (name)
                     89: char *name;
                     90: {
                     91:        register int i;
                     92: 
                     93:        for (i=0; zone_table[i].zone_name; i++) {
                     94:                if ( strcmp (name, zone_table[i].zone_name) == 0 ) {
                     95:                        newtz = zone_table[i].this_zone;
                     96:                        return (1);
                     97:                }
                     98:        }
                     99:        return (0);
                    100: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.