Annotation of researchv9/X11/src/X.V11R1/clients/xrdb/xrdb.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char rcs_id[] = "$Header: xrdb.c,v 11.5 87/09/11 19:57:36 jg Exp $";
        !             3: #endif
        !             4: 
        !             5: /*
        !             6:  *                       COPYRIGHT 1987
        !             7:  *                DIGITAL EQUIPMENT CORPORATION
        !             8:  *                    MAYNARD, MASSACHUSETTS
        !             9:  *                     ALL RIGHTS RESERVED.
        !            10:  *
        !            11:  * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
        !            12:  * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
        !            13:  * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR
        !            14:  * ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
        !            15:  *
        !            16:  * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT RIGHTS,
        !            17:  * APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN ADDITION TO THAT
        !            18:  * SET FORTH ABOVE.
        !            19:  *
        !            20:  *
        !            21:  * Permission to use, copy, modify, and distribute this software and its
        !            22:  * documentation for any purpose and without fee is hereby granted, provided
        !            23:  * that the above copyright notice appear in all copies and that both that
        !            24:  * copyright notice and this permission notice appear in supporting documentation,
        !            25:  * and that the name of Digital Equipment Corporation not be used in advertising
        !            26:  * or publicity pertaining to distribution of the software without specific, 
        !            27:  * written prior permission.
        !            28:  */
        !            29: 
        !            30: /*
        !            31:  * this program is used to load, or dump the resource manager database
        !            32:  * in the server.
        !            33:  *
        !            34:  * Author: Jim Gettys, August 28, 1987
        !            35:  */
        !            36: 
        !            37: #include <stdio.h>
        !            38: #include <X11/Xlib.h>
        !            39: #include <strings.h>
        !            40: #include <X11/Xatom.h>
        !            41: #include <ctype.h>
        !            42: 
        !            43: #define MAXRDB 100000
        !            44: #define DBOK 0
        !            45: 
        !            46: char *SanityCheck();
        !            47: 
        !            48: main (argc, argv)
        !            49:     int argc;
        !            50:     char **argv;
        !            51: {
        !            52:     Display * dpy;
        !            53:     int i;
        !            54:     char *displayname = NULL;
        !            55:     char *filename = NULL;
        !            56:     FILE *fp;
        !            57:     int nbytes;
        !            58:     char *bptr, *endptr;
        !            59:     char buffer[MAXRDB];
        !            60:     int printit = 0;
        !            61: 
        !            62:     for (i = 1; i < argc; i++) {
        !            63:        if (index (argv[i], ':') != NULL) displayname = argv[i];
        !            64:        else filename = argv[i];
        !            65:        if (strcmp ("-q", argv[i]) == NULL) printit = 1;
        !            66:     }
        !            67: 
        !            68:     /* Open display  */
        !            69:     if (!(dpy = XOpenDisplay (displayname))) {
        !            70:        (void) fprintf (stderr, "%s: Can't open display '%s'\n",
        !            71:                argv[0], XDisplayName (displayname));
        !            72:        exit (1);
        !            73:     }
        !            74: 
        !            75:     if (printit == 1) {
        !            76:        /* user wants to print contents */
        !            77:        if (dpy->xdefaults)
        !            78:            fputs(dpy->xdefaults, stdout);
        !            79:        exit(0);
        !            80:        }
        !            81:     else {
        !            82:        if (filename != NULL) {
        !            83:                fp = freopen (filename, "r", stdin);
        !            84:                if (fp == NULL) {
        !            85:                        fprintf(stderr, "%s: can't open file '%s'\n", 
        !            86:                                argv[0], filename);
        !            87:                        exit(1);
        !            88:                        }
        !            89:                }
        !            90:        nbytes = fread(buffer, sizeof(char), MAXRDB, stdin);
        !            91:        if ((bptr = SanityCheck (buffer)) != DBOK) {
        !            92:                fprintf(stderr, "%s: database fails sanity check \n'%s'\n", 
        !            93:                        argv[0], bptr);
        !            94:                exit(1);
        !            95:                }
        !            96:        XChangeProperty (dpy, RootWindow(dpy, 0), XA_RESOURCE_MANAGER,
        !            97:                XA_STRING, 8, PropModeReplace, buffer, nbytes);
        !            98:        }
        !            99:        XCloseDisplay(dpy);
        !           100: 
        !           101: }
        !           102: 
        !           103: char *getline(buffer, buf)
        !           104:        register char *buffer;
        !           105:        register char *buf;
        !           106: {
        !           107:        register char c;
        !           108:        while (*buffer != '\0') {
        !           109:                c = *buffer++;
        !           110:                if (c == '\n') {
        !           111:                        *buf = '\0';
        !           112:                        return (buffer);
        !           113:                        }
        !           114:                if ( ! isspace(c)) *buf++ = c;
        !           115:        }
        !           116:        return (NULL);
        !           117: }
        !           118: 
        !           119: /*
        !           120:  * does simple sanity check on data base.  Lines can either be
        !           121:  * commented, be all white space, or must contain ':'.
        !           122:  */
        !           123: char *SanityCheck (buffer)
        !           124:        char *buffer;
        !           125: {
        !           126:     static char buf[BUFSIZ];
        !           127:     register char *s;
        !           128:     char *b = buffer;
        !           129:     register char *i;
        !           130:     while (1) {
        !           131:        if ((b = getline(b, buf)) == NULL) return (DBOK);
        !           132:        if (buf[0] == '#' || buf[0] == '\0') continue;
        !           133:        if ((i = index (buf, ':')) == NULL) return buf;
        !           134:        }
        !           135: }

unix.superglobalmegacorp.com

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