Annotation of 43BSD/contrib/X/rgb/rgb.c, revision 1.1.1.1

1.1       root        1: /* Copyright 1985, Massachusetts Institute of Technology */
                      2: 
                      3: /* reads from standard input lines of the form:
                      4:        red green blue name
                      5:    where red/green/blue are decimal values, and inserts them in a database.
                      6:  */
                      7: #ifndef lint
                      8: static char *rcsid_rgb_c = "$Header: rgb.c,v 10.4 86/02/01 15:55:22 tony Rel $";
                      9: #endif
                     10: 
                     11: #include <dbm.h>
                     12: #undef NULL
                     13: #include <stdio.h>
                     14: #include <sys/file.h>
                     15: #include <X/rgb.h>
                     16: 
                     17: main(argc, argv)
                     18:     int argc;
                     19:     char **argv;
                     20: {
                     21:     char *dbname;
                     22:     char line[512];
                     23:     int red, green, blue;
                     24:     RGB rgb;
                     25:     datum key, content;
                     26:     char name[512];
                     27:     int items;
                     28:     int lineno;
                     29: 
                     30:     if (argc == 2)
                     31:        dbname = argv[1];
                     32:     else
                     33:        dbname = RGB_DB;
                     34:     strcpy (name, dbname);
                     35:     strcat (name, ".dir");
                     36:     close (open (name, O_WRONLY|O_CREAT, 0666));
                     37:     strcpy (name, dbname);
                     38:     strcat (name, ".pag");
                     39:     close (open (name, O_WRONLY|O_CREAT, 0666));
                     40:     if (dbminit (dbname))
                     41:        exit (1);
                     42:     key.dptr = name;
                     43:     content.dptr = (char *) &rgb;
                     44:     content.dsize = sizeof (rgb);
                     45:     lineno = 0;
                     46:     while (fgets (line, sizeof (line), stdin)) {
                     47:        lineno++;
                     48:        items = sscanf (line, "%d %d %d %[^\n]\n", &red, &green, &blue, name);
                     49:        if (items != 4) {
                     50:            fprintf (stderr, "syntax error on line %d\n", lineno);
                     51:            fflush (stderr);
                     52:            continue;
                     53:        }
                     54:        if (red < 0 || red > 0xff ||
                     55:            green < 0 || green > 0xff ||
                     56:            blue < 0 || blue > 0xff) {
                     57:            fprintf (stderr, "value for %s out of range\n", name);
                     58:            fflush (stderr);
                     59:            continue;
                     60:        }
                     61:        key.dsize = strlen (name);
                     62:        rgb.red = red << 8;
                     63:        rgb.green = green << 8;
                     64:        rgb.blue = blue << 8;
                     65:        if (store (key, content)) {
                     66:            fprintf (stderr, "store of %s failed\n", name);
                     67:            fflush (stderr);
                     68:        }
                     69:     }
                     70: }

unix.superglobalmegacorp.com

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