Annotation of GNUtools/libg++/libio/dbz/fake.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * fake - make up random lines resembling history-file entries, reproducibly
        !             3:  *
        !             4:  * -Log-
        !             5:  */
        !             6: 
        !             7: #include <stdio.h>
        !             8: #include <sys/types.h>
        !             9: #include <sys/stat.h>
        !            10: #include <string.h>
        !            11: 
        !            12: #define        MAXSTR  500             /* For sizing strings -- DON'T use BUFSIZ! */
        !            13: #define        STREQ(a, b)     (*(a) == *(b) && strcmp((a), (b)) == 0)
        !            14: 
        !            15: #ifndef lint
        !            16: static char RCSid[] = "$Header: /rel/cvsfiles/devo/libio/dbz/fake.c,v 1.2 1993/10/25 20:02:42 bothner Exp $";
        !            17: #endif
        !            18: 
        !            19: int midonly = 0;               /* just message ids, rest not realistic */
        !            20: int tag = 0;                   /* tag lines with random digit for later use */
        !            21: int expired = -1;              /* percentage of lines to be expired */
        !            22: 
        !            23: int debug = 0;
        !            24: char *progname;
        !            25: 
        !            26: char *inname;                          /* filename for messages etc. */
        !            27: long lineno;                           /* line number for messages etc. */
        !            28: 
        !            29: void doline();
        !            30: void addchars();
        !            31: void seed();
        !            32: 
        !            33: /*
        !            34:  - main - parse arguments and handle options
        !            35:  */
        !            36: main(argc, argv)
        !            37: int argc;
        !            38: char *argv[];
        !            39: {
        !            40:        int c;
        !            41:        int errflg = 0;
        !            42:        FILE *in;
        !            43:        struct stat statbuf;
        !            44:        extern int optind;
        !            45:        extern char *optarg;
        !            46:        void process();
        !            47:        register long no;
        !            48:        extern long atol();
        !            49:        char line[MAXSTR];
        !            50: 
        !            51:        progname = argv[0];
        !            52: 
        !            53:        while ((c = getopt(argc, argv, "ms:te:d")) != EOF)
        !            54:                switch (c) {
        !            55:                case 'm':       /* message-ids only */
        !            56:                        midonly = 1;
        !            57:                        break;
        !            58:                case 's':       /* seed */
        !            59:                        seed(atol(optarg));
        !            60:                        break;
        !            61:                case 't':       /* tag lines with a random digit */
        !            62:                        tag = 1;
        !            63:                        break;
        !            64:                case 'e':       /* percentage to be expired */
        !            65:                        expired = atoi(optarg);
        !            66:                        break;
        !            67:                case 'd':       /* Debugging. */
        !            68:                        debug++;
        !            69:                        break;
        !            70:                case '?':
        !            71:                default:
        !            72:                        errflg++;
        !            73:                        break;
        !            74:                }
        !            75:        if (errflg || optind != argc - 1) {
        !            76:                fprintf(stderr, "usage: %s ", progname);
        !            77:                fprintf(stderr, "[-m] [-s seed] length\n");
        !            78:                exit(2);
        !            79:        }
        !            80: 
        !            81:        for (no = atol(argv[optind]); no > 0; no--) {
        !            82:                doline(line);
        !            83:                puts(line);
        !            84:        }
        !            85: #ifdef DBZ_FINISH
        !            86:        DBZ_FINISH;
        !            87: #endif
        !            88:        exit(0);
        !            89: }
        !            90: 
        !            91: /*
        !            92:  - doline - generate random history pseudo-line
        !            93:  */
        !            94: void
        !            95: doline(buf)
        !            96: char *buf;
        !            97: {
        !            98:        char tagch[2];
        !            99: 
        !           100:        (void) strcpy(buf, "<");
        !           101:        addchars(buf, range(4, 20));
        !           102:        (void) strcat(buf, "@");
        !           103:        addchars(buf, range(8, 20));
        !           104:        if (midonly)
        !           105:                (void) strcat(buf, ">\tx");
        !           106:        else {
        !           107:                if (tag) {
        !           108:                        tagch[0] = "1234567890"[range(0,9)];
        !           109:                        tagch[1] = '\0';
        !           110:                        (void) strcat(buf, ">\t");
        !           111:                        (void) strcat(buf, tagch);
        !           112:                        (void) strcat(buf, "00000000~-");
        !           113:                } else
        !           114:                        (void) strcat(buf, ">\t1234567890~-");
        !           115:        }
        !           116:        if (range(1, 100) > expired) {
        !           117:                if (midonly)
        !           118:                        (void) strcat(buf, "\tx");
        !           119:                else {
        !           120:                        (void) strcat(buf, "\t");
        !           121:                        addchars(buf, range(10, 30));
        !           122:                }
        !           123:        }
        !           124: }
        !           125: 
        !           126: /*
        !           127:  - addchars - generate n random characters suitable for history file
        !           128:  */
        !           129: void
        !           130: addchars(buf, len)
        !           131: char *buf;
        !           132: int len;
        !           133: {
        !           134:        register int i;
        !           135:        register char *p = buf + strlen(buf);
        !           136:        static char vocab[] = "1234567890.abcde.fghij.klmno.pqrst.uvwxyz.\
        !           137: 1234567890.ABCDE.FGHIJ.KLMNO.PQRST.UVWXYZ.1234567890.\
        !           138: 1234567890.abcde.fghij.klmno.pqrst.uvwxyz.1234567890";
        !           139: 
        !           140:        for (i = len; i > 0; i--)
        !           141:                *p++ = vocab[range(0, sizeof(vocab)-2)];
        !           142:        *p++ = '\0';
        !           143: }

unix.superglobalmegacorp.com

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