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

1.1     ! root        1: #ifndef lint
        !             2: static char rcs_id[] = "$Header: init.c,v 1.21 87/09/12 08:04:03 swick Exp $";
        !             3: #endif lint
        !             4: /*
        !             5:  *                       COPYRIGHT 1987
        !             6:  *                DIGITAL EQUIPMENT CORPORATION
        !             7:  *                    MAYNARD, MASSACHUSETTS
        !             8:  *                     ALL RIGHTS RESERVED.
        !             9:  *
        !            10:  * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
        !            11:  * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
        !            12:  * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR
        !            13:  * ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
        !            14:  *
        !            15:  * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT RIGHTS,
        !            16:  * APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN ADDITION TO THAT
        !            17:  * SET FORTH ABOVE.
        !            18:  *
        !            19:  *
        !            20:  * Permission to use, copy, modify, and distribute this software and its
        !            21:  * documentation for any purpose and without fee is hereby granted, provided
        !            22:  * that the above copyright notice appear in all copies and that both that
        !            23:  * copyright notice and this permission notice appear in supporting documentation,
        !            24:  * and that the name of Digital Equipment Corporation not be used in advertising
        !            25:  * or publicity pertaining to distribution of the software without specific,
        !            26:  * written prior permission.
        !            27:  */
        !            28: 
        !            29: /* Init.c - Handle start-up initialization. */
        !            30: 
        !            31: #include "xmh.h"
        !            32: 
        !            33: /* Xmh-specific resources. */
        !            34: 
        !            35: static Resource resourcelist[] = {
        !            36:     {"debug", "Debug", XrmRBoolean, sizeof(int),
        !            37:         (XtArgVal)&debug, NULL},
        !            38:     {"tempdir", "tempDir", XrmRString, sizeof(char *),
        !            39:         (XtArgVal)&tempDir, NULL},
        !            40:     {"mhpath", "MhPath", XrmRString, sizeof(char *),
        !            41:         (XtArgVal)&defMhPath, NULL},
        !            42:     {"initialfolder", "InitialFolder", XrmRString, sizeof(char *),
        !            43:         (XtArgVal)&initialFolderName, NULL},
        !            44:     {"initialincfile", "InitialIncFile", XrmRString, sizeof(char *),
        !            45:          (XtArgVal)&initialIncFile, NULL},
        !            46:     {"draftsfolder", "DraftsFolder", XrmRString, sizeof(char *),
        !            47:         (XtArgVal)&draftsFolderName, NULL},
        !            48:     {"sendwidth", "SendWidth", XrmRInt, sizeof(int),
        !            49:         (XtArgVal)&defSendLineWidth, NULL},
        !            50:     {"sendbreakwidth", "SendBreakWidth", XrmRInt, sizeof(int),
        !            51:         (XtArgVal)&defBreakSendLineWidth, NULL},
        !            52:     {"printcommand", "PrintCommand", XrmRString, sizeof(char *),
        !            53:         (XtArgVal)&defPrintCommand, NULL},
        !            54:     {"tocwidth", "TocWidth", XrmRInt, sizeof(int),
        !            55:         (XtArgVal)&defTocWidth, NULL},
        !            56:     {"skipdeleted", "SkipDeleted", XrmRString, sizeof(char *),
        !            57:         (XtArgVal)&SkipDeleted, NULL},
        !            58:     {"skipmoved", "SkipMoved", XrmRString, sizeof(char *),
        !            59:         (XtArgVal)&SkipMoved, NULL},
        !            60:     {"skipCopied", "SkipCopied", XrmRString, sizeof(char *),
        !            61:         (XtArgVal)&SkipCopied, NULL},
        !            62:     {"hideboringheaders", "HideBoringHeaders", XrmRBoolean, sizeof(int),
        !            63:         (XtArgVal)&defHideBoringHeaders, NULL},
        !            64:     {"hidenullseqboxes", "HideNullSeqBoxes", XrmRBoolean, sizeof(int),
        !            65:         (XtArgVal)&defHideNullSeqBoxes, NULL},
        !            66:     {"geometry", "Geometry", XrmRString, sizeof(char *),
        !            67:         (XtArgVal)&defGeometry, NULL},
        !            68:     {"tocgeometry", "TocGeometry", XrmRString, sizeof(char *),
        !            69:         (XtArgVal)&defTocGeometry, NULL},
        !            70:     {"viewgeometry", "ViewGeometry", XrmRString, sizeof(char *),
        !            71:         (XtArgVal)&defViewGeometry, NULL},
        !            72:     {"compgeometry", "CompGeometry", XrmRString, sizeof(char *),
        !            73:         (XtArgVal)&defCompGeometry, NULL},
        !            74:     {"pickgeometry", "PickGeometry", XrmRString, sizeof(char *),
        !            75:         (XtArgVal)&defPickGeometry, NULL},
        !            76:     {"tocpercentage", "TocPercentage", XrmRInt, sizeof(int),
        !            77:         (XtArgVal)&defTocPercentage, NULL},
        !            78:     {"checknewmail", "CheckNewMail", XrmRBoolean, sizeof(int),
        !            79:         (XtArgVal)&defNewMailCheck, NULL},
        !            80:     {"makecheckpoints", "MakeCheckPoints", XrmRBoolean, sizeof(int),
        !            81:         (XtArgVal)&defMakeCheckpoints, NULL},
        !            82:     {"grabFocus", "GrabFocus", XrmRBoolean, sizeof(int),
        !            83:         (XtArgVal)&defGrabFocus, NULL},
        !            84:     {"doubleClick", "DoubleClick", XrmRBoolean, sizeof(int),
        !            85:         (XtArgVal)&defDoubleClick, NULL}
        !            86: };
        !            87: 
        !            88: 
        !            89: /* Tell the user how to use this program. */
        !            90: Syntax()
        !            91: {
        !            92:     extern void exit();
        !            93:     (void)fprintf(stderr, "usage:  xmh [display] [=geometry] \n");
        !            94:     exit(2);
        !            95: }
        !            96: 
        !            97: 
        !            98: ProcessCommandLine(argc, argv)
        !            99: int argc;
        !           100: char **argv;
        !           101: {
        !           102:     int i;
        !           103:     char *ptr;
        !           104:     ptr = rindex(argv[0], '/');
        !           105:     if (ptr) progName = ptr + 1;
        !           106:     else progName = argv[0];
        !           107:     if (strcmp(progName, "xmh_d") == 0) progName = "xmh";
        !           108:     displayName = "";
        !           109:     defTocGeometry = NULL;
        !           110:     for (i=1 ; i<argc ; i++) {
        !           111:        if (argv[i][0] == '=') defTocGeometry = argv[i];
        !           112:        else if (index(argv[i], ':')) displayName = argv[i];
        !           113:        else Syntax();
        !           114:     }
        !           115: }
        !           116: 
        !           117: static char *defaultFile[] = { "%s/xmh.Xdefaults",     /* LIBDIR */
        !           118:                               "%s/xmh.X11defaults",    /* LIBDIR */
        !           119:                               "%s/.Xdefaults",         /* homeDir */
        !           120:                               "%s/.X11defaults"        /* homeDir */
        !           121:                             };
        !           122: 
        !           123: /* All the start-up initialization goes here. */
        !           124: 
        !           125: InitializeWorld(argc, argv)
        !           126: int argc;
        !           127: char **argv;
        !           128: {
        !           129:     int gbits, l;
        !           130:     Position x, y;
        !           131:     Dimension width, height;
        !           132:     FILEPTR fid;
        !           133:     XrmResourceDataBase db = NULL, db2;
        !           134:     char str[500], str2[500], *ptr;
        !           135:     XrmNameList names;
        !           136:     XrmClassList classes;
        !           137:     Scrn scrn;
        !           138:     int defaultIndex;
        !           139: 
        !           140:     XtInitialize();
        !           141:     ProcessCommandLine(argc, argv);
        !           142:     theDisplay = XOpenDisplay(displayName);
        !           143: 
        !           144:     theScreen = 0;
        !           145:     if (theDisplay == NULL)
        !           146:        Punt("Couldn't open display!");
        !           147: 
        !           148:     homeDir = MallocACopy(getenv("HOME"));
        !           149: 
        !           150:     (void) XrmInitialize();
        !           151: 
        !           152:     for (defaultIndex=0; defaultIndex<XtNumber(defaultFile); defaultIndex++) {
        !           153:         (void) sprintf( str, defaultFile[defaultIndex],
        !           154:                        (defaultIndex<2 ? LIBDIR : homeDir) );
        !           155:        fid = myfopen(str, "r");
        !           156:        if (fid) {
        !           157:            XrmGetDataBase(fid, &db2);
        !           158:            (void)myfclose(fid);
        !           159:            if (db) XrmMergeDataBases(db2, &db);
        !           160:               else db = db2;
        !           161:        }
        !           162:     }
        !           163: 
        !           164:     if (db) XrmSetCurrentDataBase(db);
        !           165: 
        !           166:     (void) sprintf(str, "%s/.mh_profile", homeDir);
        !           167:     fid = myfopen(str, "r");
        !           168:     if (fid) {
        !           169:        while (ptr = ReadLine(fid)) {
        !           170:            if (strncmp(ptr, "Path:", 5) == 0) {
        !           171:                ptr += 5;
        !           172:                while (*ptr == ' ' || *ptr == '\t')
        !           173:                    ptr++;
        !           174:                (void) strcpy(str, ptr);
        !           175:            }
        !           176:        }
        !           177:        (void) myfclose(fid);
        !           178:     } else {
        !           179:        fid = myfopen(str, "w");
        !           180:        if (fid) {
        !           181:            (void) fprintf(fid, "Path: Mail\n");
        !           182:            (void) myfclose(fid);
        !           183:        } else Punt("Can't read or create .mh_profile!");
        !           184:        (void) strcpy(str, "Mail");
        !           185:     }
        !           186:     for (l = strlen(str) - 1; l >= 0 && (str[l] == ' ' || str[l] == '\t'); l--)
        !           187:        str[l] = 0;
        !           188:     if (str[0] == '/')
        !           189:        (void) strcpy(str2, str);
        !           190:     else
        !           191:        (void) sprintf(str2, "%s/%s", homeDir, str);
        !           192:     mailDir = MallocACopy(str2);
        !           193:     (void) sprintf(str, "%s/draft", mailDir);
        !           194:     draftFile = MallocACopy(str);
        !           195:     (void) sprintf(str, "%s/xmhdraft", mailDir);
        !           196:     xmhDraftFile = MallocACopy(str);
        !           197: 
        !           198:     debug = FALSE;
        !           199:     tempDir = "/tmp";
        !           200:     defMhPath = "/usr/local/mh6";
        !           201:     initialFolderName = "inbox";
        !           202:     draftsFolderName = "drafts";
        !           203: 
        !           204:     defSendLineWidth = 72;
        !           205:     defBreakSendLineWidth = 85;
        !           206:     defPrintCommand = "enscript >/dev/null 2>/dev/null";
        !           207: 
        !           208:     defTocWidth = 300;
        !           209: 
        !           210:     SkipDeleted = TRUE;
        !           211:     SkipMoved = TRUE;
        !           212:     SkipCopied = FALSE;
        !           213: 
        !           214:     defHideBoringHeaders = TRUE;
        !           215:     defHideNullSeqBoxes = FALSE;
        !           216: 
        !           217:     defGeometry = "";
        !           218:     defViewGeometry = NULL;
        !           219:     defCompGeometry = NULL;
        !           220:     defPickGeometry = NULL;
        !           221: 
        !           222:     defTocPercentage = 33;
        !           223:     defNewMailCheck = TRUE;
        !           224:     defMakeCheckpoints = FALSE;
        !           225:     defGrabFocus = FALSE;
        !           226:     defDoubleClick = FALSE;
        !           227: 
        !           228:     ptr = defTocGeometry;
        !           229:     XtGetResources(DISPLAY
        !           230:                   resourcelist, XtNumber(resourcelist), (ArgList)NULL, 0,
        !           231:                   QDefaultRootWindow(theDisplay),
        !           232:                   progName, "Xmh", &names, &classes);
        !           233:     if (ptr) defTocGeometry = ptr;
        !           234:     XrmFreeNameList(names);
        !           235:     XrmFreeClassList(classes);
        !           236: 
        !           237:     NullSource = XtCreateEDiskSource("/dev/null", XttextRead);
        !           238: 
        !           239:     x = strlen(defMhPath) - 1;
        !           240:     if (x > 0 && defMhPath[x] == '/')
        !           241:        defMhPath[x] = 0;
        !           242: 
        !           243:     if (defTocGeometry == NULL)
        !           244:        defTocGeometry = defGeometry;
        !           245:     if (defViewGeometry == NULL)
        !           246:        defViewGeometry = defGeometry;
        !           247:     if (defCompGeometry == NULL)
        !           248:        defCompGeometry = defGeometry;
        !           249:     if (defPickGeometry == NULL)
        !           250:        defPickGeometry = defGeometry;
        !           251: 
        !           252: #ifdef X11
        !           253:     rootwidth = DisplayWidth(theDisplay, theScreen);
        !           254:     rootheight = DisplayHeight(theDisplay, theScreen);
        !           255: #endif X11
        !           256: #ifdef X10
        !           257:     {
        !           258:        WindowInfo info;
        !           259:        XQueryWindow(RootWindow, &info);
        !           260:        rootwidth = info.width;
        !           261:        rootheight = info.height;
        !           262:     }
        !           263: #endif X10
        !           264: 
        !           265:     gbits = XParseGeometry(defTocGeometry, &x, &y, &width, &height);
        !           266:     if (!(gbits & HeightValue)) {
        !           267:         height = 3 * rootheight / 4;
        !           268:         gbits |= HeightValue;
        !           269:     }
        !           270:     if (!(gbits & WidthValue)) {
        !           271:         width = rootwidth / 2;
        !           272:         gbits |= WidthValue;
        !           273:     }
        !           274:     defTocGeometry = CreateGeometry(gbits, x, y, width, height);
        !           275: 
        !           276:     gbits = XParseGeometry(defViewGeometry, &x, &y, &width, &height);
        !           277:     if (!(gbits & HeightValue)) {
        !           278:        height = rootheight / 2;
        !           279:        gbits |= HeightValue;
        !           280:     }
        !           281:     if (!(gbits & WidthValue)) {
        !           282:        width = rootwidth / 2;
        !           283:        gbits |= WidthValue;
        !           284:     }
        !           285:     defViewGeometry = CreateGeometry(gbits, x, y, width, height);
        !           286: 
        !           287:     gbits = XParseGeometry(defCompGeometry, &x, &y, &width, &height);
        !           288:     if (!(gbits & HeightValue)) {
        !           289:        height = rootheight / 2;
        !           290:        gbits |= HeightValue;
        !           291:     }
        !           292:     if (!(gbits & WidthValue)) {
        !           293:        width = rootwidth / 2;
        !           294:        gbits |= WidthValue;
        !           295:     }
        !           296:     defCompGeometry = CreateGeometry(gbits, x, y, width, height);
        !           297: 
        !           298:     gbits = XParseGeometry(defPickGeometry, &x, &y, &width, &height);
        !           299:     if (!(gbits & HeightValue)) {
        !           300:        height = rootheight / 2;
        !           301:        gbits |= HeightValue;
        !           302:     }
        !           303:     if (!(gbits & WidthValue)) {
        !           304:        width = rootwidth / 2;
        !           305:        gbits |= WidthValue;
        !           306:     }
        !           307:     defPickGeometry = CreateGeometry(gbits, x, y, width, height);
        !           308: 
        !           309:     numScrns = 0;
        !           310:     scrnList = (Scrn *) XtMalloc(1);
        !           311:     LastButtonPressed = NULL;
        !           312: 
        !           313:     windowarglist[0].name = XtNwindow;
        !           314:     labelarglist[0].name = XtNlabel;
        !           315:     TocInit();
        !           316:     InitPick();
        !           317:     IconInit();
        !           318: 
        !           319: if (debug) {(void)fprintf(stderr, "Making screen ... "); (void)fflush(stderr);}
        !           320: 
        !           321:     scrn = CreateNewScrn(STtocAndView);
        !           322: 
        !           323: if (debug) {(void)fprintf(stderr, " setting toc ... "); (void)fflush(stderr);}
        !           324: 
        !           325:     TocSetScrn(TocGetNamed(initialFolderName), scrn);
        !           326: 
        !           327: if (debug) (void)fprintf(stderr, "done\n");
        !           328: 
        !           329: /* if (debug) {(void)fprintf(stderr, "Syncing ... "); (void)fflush(stderr); QXSync(theDisplay, 0); (void)fprintf(stderr, "done\n");} */
        !           330: 
        !           331:     MapScrn(scrn);
        !           332:     DoubleClickProc = NULL;
        !           333: }

unix.superglobalmegacorp.com

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