Annotation of cci/usr/src/usr.bin/timezone.c, revision 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.