home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / x / volume16 / xcmdpanel-1.1 / part01 next >
Text File  |  1992-03-04  |  40KB  |  1,457 lines

  1. Newsgroups: comp.sources.x
  2. Path: uunet!zaphod.mps.ohio-state.edu!mips!msi!dcmartin
  3. From: erlkonig@gnu.ai.mit.edu (Christopher Alex. North-Keys)
  4. Subject: v16i098: xcmdpanel - command panel interface for X, Part01/02
  5. Message-ID: <csx-16i098-xcmdpanel-1.1@uunet.UU.NET>
  6. Originator: dcmartin@fascet
  7. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  8. Organization: Molecular Simulations, Inc.
  9. Date: Wed, 4 Mar 1992 16:25:59 GMT
  10. Approved: dcmartin@msi.com
  11.  
  12. Submitted-by: erlkonig@gnu.ai.mit.edu (Christopher Alex. North-Keys)
  13. Posting-number: Volume 16, Issue 98
  14. Archive-name: xcmdpanel-1.1/part01
  15.  
  16. # This is a shell archive (produced by shar 3.49)
  17. # To extract the files from this archive, save it to a file, remove
  18. # everything above the "!/bin/sh" line above, and type "sh file_name".
  19. #
  20. # made 03/04/1992 16:18 UTC by dcmartin@fascet
  21. # Source directory /home/fascet/csx/todo/src/xcmdpanel-1.1
  22. #
  23. # existing files will NOT be overwritten unless -c is specified
  24. #
  25. # This shar contains:
  26. # length  mode       name
  27. # ------ ---------- ------------------------------------------
  28. #      0 -rw-r--r-- Part.01
  29. #   1070 -rw-r--r-- README
  30. #    275 -rw-r--r-- patchlevel.h
  31. #    184 -rw-r--r-- Imakefile
  32. #   9597 -rw-r--r-- xcmdpanel.c
  33. #  12810 -rw-r--r-- xcmdpanel.man
  34. #  10447 -rw-r--r-- Makefile
  35. #  16364 -rw-r--r-- xcmdpanel.txt
  36. #   8988 -rw-r--r-- Makefile.std
  37. #
  38. # ============= Part.01 ==============
  39. if test -f 'Part.01' -a X"$1" != X"-c"; then
  40.     echo 'x - skipping Part.01 (File already exists)'
  41. else
  42. echo 'x - extracting Part.01 (Text)'
  43. sed 's/^X//' << 'SHAR_EOF' > 'Part.01' &&
  44.  
  45. SHAR_EOF
  46. chmod 0644 Part.01 ||
  47. echo 'restore of Part.01 failed'
  48. Wc_c="`wc -c < 'Part.01'`"
  49. test 0 -eq "$Wc_c" ||
  50.     echo 'Part.01: original size 0, current size' "$Wc_c"
  51. fi
  52. # ============= README ==============
  53. if test -f 'README' -a X"$1" != X"-c"; then
  54.     echo 'x - skipping README (File already exists)'
  55. else
  56. echo 'x - extracting README (Text)'
  57. sed 's/^X//' << 'SHAR_EOF' > 'README' &&
  58. PROGRAM
  59. X    xcmdpanel
  60. X
  61. DESCRIPTION
  62. X    The xcmdpanel  program  allows  the  user  to  run  a  user-
  63. X    configured command panel on a workstation display running X.
  64. X    Each xcmdpanel is composed of buttons, each of which may  be
  65. X    configured  to  run  a  shell command using the Bourne shell
  66. X    sh(1).  Buttons without associated commands are merely  used
  67. X    as labels.
  68. X
  69. COMPILATION
  70. X    Assuming a good X installation at your site, simply:
  71. X
  72. X        xmkmf ; make
  73. X
  74. X    otherwise try:
  75. X
  76. X        make -f Makefile.dist
  77. X
  78. X    or perhaps
  79. X
  80. X        make -f Makefile.dist Makefile
  81. X
  82. CONFIGURATION
  83. X    Defaults to the file .xcmdpanel in the current directory, or more
  84. X    specifically, to the file ./.<programname> , where <programname>
  85. X    is the name by which xcmdpanel is invoked.
  86. X
  87. X    See the manual page or .txt file for detail.
  88. X
  89. ___________________________________________________________________________
  90. Christopher Alex. North-Keys                           Unix Systems Analyst
  91. erlkonig@gnu.ai.mit.edu                                      Group Talisman
  92. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  93. SHAR_EOF
  94. chmod 0644 README ||
  95. echo 'restore of README failed'
  96. Wc_c="`wc -c < 'README'`"
  97. test 1070 -eq "$Wc_c" ||
  98.     echo 'README: original size 1070, current size' "$Wc_c"
  99. fi
  100. # ============= patchlevel.h ==============
  101. if test -f 'patchlevel.h' -a X"$1" != X"-c"; then
  102.     echo 'x - skipping patchlevel.h (File already exists)'
  103. else
  104. echo 'x - extracting patchlevel.h (Text)'
  105. sed 's/^X//' << 'SHAR_EOF' > 'patchlevel.h' &&
  106. /*
  107. X * Copyright (c) 1989 (Christoph. Alex. North-Keys)
  108. X */
  109. X
  110. #ifndef _patchlevel_h
  111. #define _patchlevel_h
  112. X
  113. /*
  114. X * patchlevel.h version started Sat d.28.09.1991
  115. X */
  116. X
  117. int VersionMajor = 1
  118. int VersionMinor = 1
  119. X
  120. /* Add nothing after the following endif line */
  121. #endif _patchlevel_h
  122. SHAR_EOF
  123. chmod 0644 patchlevel.h ||
  124. echo 'restore of patchlevel.h failed'
  125. Wc_c="`wc -c < 'patchlevel.h'`"
  126. test 275 -eq "$Wc_c" ||
  127.     echo 'patchlevel.h: original size 275, current size' "$Wc_c"
  128. fi
  129. # ============= Imakefile ==============
  130. if test -f 'Imakefile' -a X"$1" != X"-c"; then
  131.     echo 'x - skipping Imakefile (File already exists)'
  132. else
  133. echo 'x - extracting Imakefile (Text)'
  134. sed 's/^X//' << 'SHAR_EOF' > 'Imakefile' &&
  135. #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
  136. X
  137. LOCAL_LIBRARIES = XawClientLibs
  138. X        DEPLIBS = XawClientDepLibs
  139. X           SRCS = xcmdpanel.c
  140. X
  141. SimpleProgramTarget(xcmdpanel)
  142. X
  143. SHAR_EOF
  144. chmod 0644 Imakefile ||
  145. echo 'restore of Imakefile failed'
  146. Wc_c="`wc -c < 'Imakefile'`"
  147. test 184 -eq "$Wc_c" ||
  148.     echo 'Imakefile: original size 184, current size' "$Wc_c"
  149. fi
  150. # ============= xcmdpanel.c ==============
  151. if test -f 'xcmdpanel.c' -a X"$1" != X"-c"; then
  152.     echo 'x - skipping xcmdpanel.c (File already exists)'
  153. else
  154. echo 'x - extracting xcmdpanel.c (Text)'
  155. sed 's/^X//' << 'SHAR_EOF' > 'xcmdpanel.c' &&
  156. /* XCmdPanel:  Jan 1990, Christoph. Alex. North-Keys, M.C.C.
  157. X * sample X menu / command interface from file data.
  158. X */
  159. X
  160. #ifndef lint
  161. static char Version[]="Code xcmdpanel.c d.29.1.1990 C. A. North-Keys";
  162. #endif
  163. X
  164. /* CAVEAT: This code is not yet polished.
  165. X * First compiled 29 January around 9:00 (and naturally core-dumped)
  166. X * Compilation at 13:25 ran successfully without coredump.
  167. X * Comprehensive rewrite of the X section Thu Jul 12 01:17:48 CDT 1990.
  168. X */
  169. X
  170. #include <X11/Xlib.h>
  171. #include <X11/Intrinsic.h>
  172. #include <X11/StringDefs.h>
  173. #include <X11/Xaw/Cardinals.h>
  174. #include <X11/Xaw/Command.h>
  175. #include <X11/Xaw/Paned.h>
  176. #include <X11/Xaw/Box.h>
  177. #include <X11/Xaw/Text.h>
  178. #include <stdio.h>
  179. #include <strings.h>
  180. #include <sys/file.h>
  181. #include <sys/types.h>
  182. #include <sys/stat.h>
  183. X
  184. /* Q-Bools and Functions from stdelf.c */
  185. /* Quasi-Booleans */
  186. #define bool   int
  187. #ifndef TRUE
  188. #define TRUE   (1)
  189. #endif
  190. #ifndef FALSE
  191. #define FALSE  (0)
  192. #endif
  193. #define SUCC   (0)
  194. #define FAIL   (-1)
  195. #ifndef NULL
  196. #define NULL   (0)
  197. #endif
  198. X
  199. /* Functions */
  200. char  Ismep();
  201. void  Fatal();
  202. long  SwallowFile();
  203. X
  204. typedef struct _Datum
  205. {
  206. X    String  tag;
  207. X    String  text;
  208. X    struct _Datum *next;
  209. } Datum;
  210. X
  211. Datum *ConvertFileToData();
  212. X
  213. typedef struct _FlagsStruct {
  214. X    Boolean paned;
  215. X    Boolean ghost;
  216. X    Boolean debug;
  217. } FlagsStruct;
  218. X
  219. static XtResource resources[] = {      /* XtPointer only to make lint quiet */
  220. X    {"paned", "Paned", XtRBoolean, sizeof(Boolean),
  221. X     XtOffset(FlagsStruct *, paned), XtRImmediate, (XtPointer)True},
  222. X    {"ghost", "Ghost", XtRBoolean, sizeof(Boolean),
  223. X     XtOffset(FlagsStruct *, ghost), XtRImmediate, (XtPointer)False},
  224. X    {"debug", "Debug", XtRBoolean, sizeof(Boolean),
  225. X     XtOffset(FlagsStruct *, debug), XtRImmediate, (XtPointer)False},
  226. };
  227. X
  228. static XrmOptionDescRec options[] = {
  229. X    {"-paned",   "paned",    XrmoptionNoArg,   "True"},
  230. X    {"-boxed",   "paned",    XrmoptionNoArg,   "False"},
  231. X    {"-ghost",   "ghost",    XrmoptionNoArg,   "True"},
  232. X    {"-noghost", "ghost",    XrmoptionNoArg,   "False"},
  233. X    {"-debug",   "debug",    XrmoptionNoArg,   "True"},
  234. };
  235. X
  236. static Arg space_args[] = {
  237. X    {XtNhSpace, (XtArgVal)4},
  238. X    {XtNvSpace, (XtArgVal)4},
  239. };
  240. X
  241. static Arg null_args[] = {
  242. X    { NULL, NULL},
  243. };
  244. X
  245. String fallback_resources[] = {
  246. X    "*input:                  True",
  247. X    "*showGrip:               False",
  248. X    "*exit*label:             Exit",
  249. X    "*execute*label:          Execute",
  250. X    NULL,
  251. };
  252. X
  253. void   Exit();
  254. void   Execute();
  255. Datum *ConvertFileToData( /*buffer length*/ );
  256. char  *ExtractEscapedString( /*escape, string*/ );
  257. int    FindClosure( /*open, close, escape, start, limit, start_ret, end_ret*/ );
  258. void   ConvertDataToWidgets( /*items, box*/ );
  259. void   Syntax();
  260. X
  261. FlagsStruct flags;
  262. X
  263. int
  264. main (argc, argv)
  265. Cardinal argc;
  266. String *argv;
  267. {
  268. X    Cardinal i;
  269. X    Widget toplevel, box;
  270. X    Arg c_args[2];
  271. X    String filename;
  272. X    char *buffer;          /* for file read */
  273. X    long length;  /* length of read file */
  274. X    Datum *items;
  275. X    XtAppContext app_con;
  276. X    
  277. X    filename = (char *)calloc(strlen(argv[0]) + 4, sizeof(char *));
  278. X    (void)strcpy(filename, "./.");
  279. X    (void)strcat(filename, argv[0]);
  280. X    
  281. X    toplevel = XtAppInitialize(&app_con, "XCmdPanel",
  282. X                               options, XtNumber(options),
  283. X                               &argc, argv,
  284. X                               fallback_resources,
  285. X                               NULL,
  286. X                               ZERO);
  287. X
  288. X    if (argc == 2) filename = argv[1];
  289. X
  290. X    if(filename)
  291. X    {
  292. X        if(FAIL == (length = SwallowFile(&buffer, filename)))
  293. X        {
  294. X            fprintf(stderr, "Error involving file %s, aborting.\n", argv[i]);
  295. X            Syntax(argv[0]);
  296. X        }
  297. X    }
  298. X    
  299. X    XtGetApplicationResources(toplevel,
  300. X                              (XtPointer) &flags,
  301. X                              resources, XtNumber(resources),
  302. X                              NULL,
  303. X                              ZERO );
  304. X
  305. X    box = XtCreateManagedWidget(argv[0],
  306. X                                flags.paned ? panedWidgetClass : boxWidgetClass,
  307. X                                toplevel,
  308. X                                space_args,
  309. X                                XtNumber(space_args));
  310. X    
  311. X    if(NULL == (items = ConvertFileToData(buffer, length)))
  312. X    {
  313. X        fprintf(stderr,
  314. X                "Error in data conversion from file [ %s ], aborting.\n",
  315. X                filename);
  316. X        Exit();
  317. X    }
  318. X    
  319. X    ConvertDataToWidgets(items, box);
  320. X
  321. X    XtAddCallback(XtCreateManagedWidget("Exit", commandWidgetClass,
  322. X                                        box,
  323. X                                        null_args,
  324. X                                        XtNumber(null_args)),
  325. X                  XtNcallback,
  326. X                  Exit,
  327. X                  NULL);
  328. X
  329. X    XtRealizeWidget(toplevel);
  330. X    XtAppMainLoop(app_con);
  331. }
  332. X
  333. void
  334. Exit(widget, clientData, callData)
  335. Widget widget;
  336. caddr_t clientData, callData;
  337. {
  338. X    XtDestroyApplicationContext(XtWidgetToApplicationContext(widget));
  339. X    exit(0);
  340. }
  341. X
  342. void
  343. Execute(widget, clientData, callData)
  344. Widget widget;
  345. String *clientData;
  346. XXtPointer callData;
  347. {
  348. X    if(strlen(clientData)) system(clientData);
  349. X    if(flags.ghost) XtSetSensitive(widget, 0);
  350. X    return;
  351. }
  352. X
  353. Datum *ConvertFileToData(buffer, length)
  354. String buffer;
  355. long length;
  356. {
  357. X    Datum *items, *item;
  358. X    char *ind, *lim, StrBeg='(', StrEnd=')', StrEsc='\\';
  359. X    short state;
  360. #define S_Tag    (0)
  361. #define S_Text   (1)
  362. X    extern char *strchr(), *strcpy();
  363. X    
  364. X     lim = (char *)(&(buffer[length]));
  365. X    ind = (char *)(&(buffer[0]));
  366. X    if(NULL == (item = items = (Datum *)calloc(1, sizeof(Datum) + 1)))
  367. X        Fatal("ConvertFileToData", "calloc");
  368. X
  369. X    for(state = S_Tag ; /*no-exit*/ ; /*internal*/ )
  370. X    {
  371. X        char *end;
  372. X        int  status;
  373. X        
  374. X        status = FindClosure(StrBeg, StrEnd, StrEsc, ind, lim, &ind, &end);
  375. X        switch (status)
  376. X        {
  377. X          case FAIL:  return NULL;     break;
  378. X          case FALSE: return items;    break;
  379. X          case TRUE:
  380. X          default:    *end = '\0';     break;
  381. X        }
  382. X                
  383. X        switch (state)
  384. X        {
  385. X          case S_Tag:
  386. X            item->tag = ExtractEscapedString(StrEsc, ++ind);
  387. X            ind = end + 1;
  388. X            state = S_Text;
  389. X            break;
  390. X          case S_Text:
  391. X            item->text = ExtractEscapedString(StrEsc, ++ind);
  392. X            item->next = (Datum *)calloc(1, sizeof(Datum));
  393. X            if(flags.debug)
  394. X                (void)fprintf(stderr, "`%s'  `%s'\n", item->tag,
  395. X                              item->text ? item->text : "<NULL>");
  396. X            item = item->next;
  397. X            ind = end + 1;
  398. X            state = S_Tag;
  399. X            break;
  400. X          default:
  401. X            return NULL;
  402. X            break;
  403. X        }
  404. X    }
  405. }
  406. X
  407. char *ExtractEscapedString(escape, string)
  408. char escape, *string;
  409. {
  410. X    char *new;
  411. X    char *n_i, *s_i, *lim;
  412. X
  413. X    if(NULL == (new = (char *)calloc(strlen(string), sizeof(char))))
  414. X        Fatal("ExtractEscapedString", "calloc");
  415. X
  416. X    lim = &string[strlen(string)];
  417. X
  418. X    /* Upon hitting the escape char, drop it and forcecopy the next */
  419. X    for(n_i = new, s_i = string; s_i <= lim; n_i++, s_i++)
  420. X    {
  421. X        if(*s_i == escape) s_i++;
  422. X        *n_i = *s_i;
  423. X    }
  424. X    return new;
  425. }
  426. X
  427. int FindClosure(open, close, escape, start, limit, start_return, end_return)
  428. char open, close, escape, *start, *limit, **start_return, **end_return;
  429. {
  430. X    unsigned int level = 0;
  431. X    char *index;
  432. X    /* escape causes the next character to be skipped, period */
  433. X
  434. X    if(start == NULL)
  435. X    {
  436. X        (void)fprintf(stderr, "FindClosure:  illegal value.\n");
  437. X        return FAIL;
  438. X    }
  439. X    
  440. X    /* NOTE: incoming start/end are COPIES, thus returns are safe to NULL.
  441. X     * Such will be the return values if the start/end points are unfound.
  442. X     */
  443. X    *start_return = NULL;
  444. X    *end_return = NULL;
  445. X    
  446. X    for(index=start; index<=limit; index++)
  447. X    {
  448. X        if(*index == escape)
  449. X            if(index >= limit)
  450. X                return FAIL;
  451. X            else
  452. X                index++;
  453. X        else
  454. X            if(*index == open)
  455. X            {
  456. X                level++;
  457. X                /* be clever and only set on the first instance. */
  458. X                if (*start_return == NULL) *start_return = index;
  459. X            }
  460. X            else
  461. X                if(*index == close)
  462. X                    if(--level == 0)
  463. X                    {
  464. X                        *end_return = index;
  465. X                        return TRUE;
  466. X                    }
  467. X    }
  468. X    return FALSE;
  469. }
  470. X            
  471. X
  472. void ConvertDataToWidgets(items, box)
  473. Datum *items;
  474. Widget box;
  475. {
  476. X    Datum *item;
  477. X    Widget cur;
  478. X        
  479. X    for(item = items; item->next ; item = item->next)
  480. X    {
  481. X        if(flags.debug)
  482. X        {
  483. X            (void)fprintf(stderr,
  484. X                          "ConvertDataToWidgets:  tag %s, \ttextlength %d\n",
  485. X                          item->tag,
  486. X                          strlen(item->text));
  487. X        }        
  488. X        XtAddCallback(cur = XtCreateManagedWidget(item->tag,
  489. X                                                  commandWidgetClass,
  490. X                                                  box,
  491. X                                                  null_args,
  492. X                                                  XtNumber(null_args)),
  493. X                      XtNcallback,
  494. X                      Execute,
  495. X                      item->text);
  496. X        if(!strlen(item->text)) XtSetSensitive(cur, 0);
  497. X    }
  498. X    return;
  499. }
  500. X
  501. void Syntax(prog)
  502. char *prog;
  503. {
  504. X    fprintf(stderr, "[-ghost] [-noghost] (default noghost)\n");
  505. X    fprintf(stderr, "[-boxed] [-paned]   (default paned)\n");
  506. X    fprintf(stderr, "[<config_filename>] (default is ./.%s)\n", prog);
  507. X    fprintf(stderr, "[-debug]\n");
  508. X    exit(1);
  509. }
  510. X                
  511. /*
  512. X * stdelf.c Copyright (c) 1989 Christoph. Alex. North-Keys
  513. X * These functions may be used, copied, modified, and redistributed freely
  514. X * so long as this notice remains intact.
  515. X */
  516. X
  517. /*
  518. X * stdelf.c :  Begun 14 mar 89 :  Library of simple routines
  519. X */
  520. X
  521. #ifndef lint
  522. static char SVersion[]="Code stdelf.c d.14.03.1989 (C. A. North-Keys)";
  523. #endif
  524. X
  525. char
  526. Ismep(c)
  527. char c;
  528. {
  529. X    if( ((c) == '-')||((c) == '=')||((c) == '+') )
  530. X        return(c);
  531. X    else
  532. X        return('\0');
  533. X    /*NOTREACHED*/
  534. }
  535. X    
  536. void
  537. Fatal(loc, s)
  538. char *loc, *s;
  539. {
  540. X    fprintf(stderr, "%s: ", loc);
  541. X    perror(s);
  542. X    exit(-1);
  543. }
  544. X
  545. long
  546. SwallowFile(addr_buffer, path)
  547. char **addr_buffer, *path;
  548. {
  549. X    struct stat statbuf;
  550. X    int         in_count;
  551. X    int         fd = -1;
  552. X
  553. X    /* Attempt to open desired file */
  554. X    if(((fd)=open(path, O_RDONLY))==-1)
  555. X    {
  556. X        (void)fprintf(stderr, "SwallowFile: %s not opened\n", path);
  557. X        return (FAIL);
  558. X    }
  559. X
  560. X    if(fstat(fd, &statbuf)==-1)
  561. X    {
  562. X        (void)fprintf(stderr, "SwallowFile: error on fstat file %s\n", path);
  563. X        return (FAIL);
  564. X    }
  565. X    
  566. X    /* Get a buffer to fit */
  567. X    if((*addr_buffer=(char *)calloc(1, statbuf.st_size+1))==NULL)
  568. X    {
  569. X        (void)fprintf(stderr, "SwallowFile: no space for calloc\n");
  570. X        return (FAIL);
  571. X    }
  572. X    
  573. X    /* Read in the file */
  574. X    if((in_count = read(fd, *addr_buffer, statbuf.st_size)) != statbuf.st_size)
  575. X    {
  576. X        (void)fprintf(stdout,
  577. X                      "SwallowFile: error(?) %d/%d bytes read from %s\n",
  578. X                      in_count, statbuf.st_size, path);
  579. X        (void)free(*addr_buffer);
  580. X        return (FAIL);
  581. X    }
  582. X    return (in_count);
  583. }
  584. X
  585. /* end of excerpt from stdelf.c */
  586. X
  587. SHAR_EOF
  588. chmod 0644 xcmdpanel.c ||
  589. echo 'restore of xcmdpanel.c failed'
  590. Wc_c="`wc -c < 'xcmdpanel.c'`"
  591. test 9597 -eq "$Wc_c" ||
  592.     echo 'xcmdpanel.c: original size 9597, current size' "$Wc_c"
  593. fi
  594. # ============= xcmdpanel.man ==============
  595. if test -f 'xcmdpanel.man' -a X"$1" != X"-c"; then
  596.     echo 'x - skipping xcmdpanel.man (File already exists)'
  597. else
  598. echo 'x - extracting xcmdpanel.man (Text)'
  599. sed 's/^X//' << 'SHAR_EOF' > 'xcmdpanel.man' &&
  600. .TH XCMDPANEL 1 "Release 5" "X Version 11"
  601. .ds p xcmdpanel
  602. .ds c .\*p
  603. .ds t \fBGroup Talisman\fP
  604. .SH NAME
  605. \*p \- command panel utility for X
  606. .SH SYNOPSIS
  607. .B \*p
  608. [\-help]
  609. [\-debug]
  610. [\-ghost|\-noghost]
  611. [\-boxed|\-paned]
  612. [\fIfilename\fP]
  613. .SH DESCRIPTION
  614. The
  615. .I \*p
  616. program allows the user to run a user-configured command panel on a
  617. workstation display running X.
  618. Each \*p is composed of buttons, each of which may be configured to
  619. run a shell command using the Bourne shell sh(1).
  620. Buttons without associated commands are merely used as labels.
  621. .SH OPTIONS
  622. .PP
  623. The various options may appear in any order:
  624. .IP \fIfilename\f"
  625. A file containing the label/command pairs and comments
  626. used to configure an invocation of \*p.  Defaults to \*c in the current
  627. directory or ~/\*c in the home directory if \*c is unavailable.
  628. .IP \fB-help\fP
  629. Print a usage message and exit.
  630. .IP \fB-ghost\fP
  631. Allow each button to be activated only once, whereafter that button will
  632. be \fIghosted\fP to indicate that it is no longer valid.
  633. .IP \fB-noghost\fP
  634. Don't use ghosting, instead allow multiple use of all command buttons
  635. (the default).
  636. .IP \fB-boxed\fP
  637. Use the boxedWidget to manage the buttons.  This causes the
  638. buttons to appear in a tray-style arrangement.
  639. .IP \fB-paned\fP
  640. Use the panedWidget to manage the buttons (the default).  This
  641. causes the buttons to appear in a single column.
  642. .PP
  643. \*p will also accept the standard X Toolkit options; see the
  644. .B xterm(1)
  645. manual page, subsection
  646. .B RESOURCES.
  647. .SH USAGE
  648. .PP
  649. The \*p has been used to ease project management, to pop up automatically
  650. generated menus, and to handle menu hierarchies.  It is characterized by
  651. small, project- and directory-specific menus, generally run at need rather
  652. than from
  653. .B xinit(1)
  654. or the like.
  655. .PP
  656. Output from a particular invocation of \*p will generally show up in the
  657. .B xterm(1)
  658. from which it was invoked.  Hence the parent terminal is often used as
  659. a display window for
  660. .B ls(1)
  661. and
  662. .B make(1)
  663. output.
  664. .PP
  665. The configuration file is composed of labels and commands in parentheses,
  666. and comments (any not in parentheses).  Nesting of parentheses is observed
  667. unless a parenthesis is escaped with a backslash, which itself may be so
  668. escaped (see \fBSCRIPTS\fP).
  669. .PP
  670. All text outside of parentheses is ignored.
  671. .PP
  672. Parenthesized strings are automatically paired, ignoring newlines.  Any
  673. .I label
  674. associated with an empty
  675. .I command
  676. string is considered to be a text button rather than a title button,
  677. and is automatically ghosted.  \fILabel\fPs may also be empty strings,
  678. and will produce blank text boxes in the resulting menu.
  679. .SH EXAMPLES
  680. .PP
  681. To use the underlying X Toolkit options to select a particular font:
  682. .IP
  683. \*p -fn '*sony*24*'
  684. .PP
  685. Another example using explicit resources:
  686. .IP
  687. \*p -xrm '*font: *sony*24*'
  688. .PP
  689. To get the same effect through an
  690. .B "X RESOURCES"
  691. file, include the following line in your resources file:
  692. .IP
  693. \*p*font: *sony*24*
  694. .SH SCRIPTS
  695. .PP
  696. A project menu:
  697. .IP
  698. .nf
  699. X    Label   Command
  700. X
  701. (Title)         ()
  702. ( ( \\) ) )      ()     a test label showing parens
  703. ()              ()
  704. (Clear)         (clear &)
  705. (Make)          (make &)
  706. (Edit File)     (${EDITOR} `ifc .` &)   InterViews only
  707. (Run a.out)     (a.out &)               execute
  708. (List)          (echo listing ; ls -Flasg &)
  709. (Du)            (du . &)
  710. (Update Menu)   (xcmdpanel -debug &)
  711. (Time Test)     (sleep 5)
  712. .fi
  713. .PP
  714. Generating an audio menu on a Sun SPARC in csh(1):
  715. .IP
  716. .nf
  717. rm \*c
  718. foreach file ( *.au )
  719. X    echo -n "(`expr $file : '\\(.*\\).au'`)" >> \*c
  720. X    echo    "(cat $file > /dev/audio)"     >> \*c
  721. end
  722. \*p -boxed &
  723. .fi
  724. .PP
  725. Generating an audio menu on a Sun SPARC in sh(1):
  726. .IP
  727. .nf
  728. for file in *.au
  729. do
  730. X    echo -n "(`expr $file : '\\(.*\\).au'`)"
  731. X    echo    "(cat $file > /dev/audio)"
  732. done > \*c
  733. \*p -boxed &
  734. .fi
  735. .SH "X RESOURCES"
  736. .PP
  737. \*p uses the following X resources:
  738. .PP
  739. .TP 14
  740. .B paned (class Paned)
  741. Indicates whether to use the \fBpanedWidget\fP.   Defaults to \fBtrue\fP.
  742. If \fBfalse\fP, the \fBboxedWidget\fP is used instead.
  743. .PP
  744. .TP 14
  745. .B ghost (class Ghost)
  746. Indicates whether buttons are to be ghosted after selection.
  747. Defaults to \fBfalse\fP. 
  748. .PP
  749. .TP 14
  750. .B debug (class Debug)
  751. Whether or not to do debugging.  Defaults to \fBfalse\fP.
  752. .PP
  753. \*p also uses the resources of its subwidgets, including the
  754. .BR commandWidget,
  755. .BR panedWidget,
  756. .BR boxWidget,
  757. and
  758. .BR textWidget.
  759. .SH FILES
  760. .PD 0
  761. .TP 20
  762. .B \*c
  763. The usual configuration file (in the current dir) for an invocation of \*p.
  764. .TP
  765. .B ~/\*c
  766. Default configuration file to be read by \*p when no other appropriate
  767. file is available.
  768. .PD
  769. .SH "SEE ALSO"
  770. .BR X(1),
  771. .BR xinit(1),
  772. .BR sh(1),
  773. .BR system(3)
  774. .SH BUGS
  775. Probably.
  776. .SH COPYRIGHT
  777. .IP "Copyright (c) 1990, Christopher Alexander North-Keys"
  778. .PP
  779. Author's credit must be retained in binaries, manual entries, sources, and
  780. derived code.
  781. .PP
  782. This software may be freely copied, distributed, compiled, altered, and sold,
  783. provided the above restrictions are observed.
  784. .PP
  785. This software is provided "as is", with no warranty, guarantee, support,
  786. maintenance, update schedule, claims to fitness for any purpose, or
  787. anything else from the author or the author's employer(s).
  788. See the source code for additional copyright and limitation information.
  789. .SH AUTHOR
  790. Christopher Alexander North-Keys
  791. .br
  792. <erlkonig@gnu.ai.mit.edu>
  793. .PP
  794. Director/Instructor of OS and Software Design
  795. .br
  796. RDA Computer Training
  797. .br
  798. .SH NOTES
  799. The \*p program was produced under the auspices of \*t.
  800. I'd also like to thank Mic Kaczmarczik for his aid in documentation.
  801. .brEND_OF_FILE
  802. if test 5490 -ne `wc -c <'xcmdpanel.man'`; then
  803. X    echo shar: \"'xcmdpanel.man'\" unpacked with wrong size!
  804. fi
  805. # end of 'xcmdpanel.man'
  806. fi
  807. if test -f 'xcmdpanel.txt' -a "${1}" != "-c" ; then 
  808. X  echo shar: Will not clobber existing file \"'xcmdpanel.txt'\"
  809. else
  810. echo shar: Extracting \"'xcmdpanel.txt'\" \(6938 characters\)
  811. sed "s/^X//" >'xcmdpanel.txt' <<'END_OF_FILE'
  812. X
  813. X
  814. X
  815. XXCMDPANEL(1)             USER COMMANDS               XCMDPANEL(1)
  816. X
  817. X
  818. X
  819. NAME
  820. X     xcmdpanel - command panel utility for X
  821. X
  822. SYNOPSIS
  823. X     xcmdpanel [-help] [-debug] [-ghost|-noghost] [-boxed|-paned]
  824. X     [filename]
  825. X
  826. DESCRIPTION
  827. X     The xcmdpanel  program  allows  the  user  to  run  a  user-
  828. X     configured command panel on a workstation display running X.
  829. X     Each xcmdpanel is composed of buttons, each of which may  be
  830. X     configured  to  run  a  shell command using the Bourne shell
  831. X     sh(1).  Buttons without associated commands are merely  used
  832. X     as labels.
  833. X
  834. OPTIONS
  835. X     The various options may appear in any order:
  836. X
  837. X     filename
  838. X          A file containing the label/command pairs and  comments
  839. X          used to configure an invocation of xcmdpanel.  Defaults
  840. X          to .xcmdpanel in the current directory or  ~/.xcmdpanel
  841. X          in the home directory if .xcmdpanel is unavailable.
  842. X
  843. X     -help
  844. X          Print a usage message and exit.
  845. X
  846. X     -ghost
  847. X          Allow each button to be activated only once, whereafter
  848. X          that  button  will be ghosted to indicate that it is no
  849. X          longer valid.
  850. X
  851. X     -noghost
  852. X          Don't use ghosting, instead allow multiple use  of  all
  853. X          command buttons (the default).
  854. X
  855. X     -boxed
  856. X          Use the boxedWidget to manage the buttons.  This causes
  857. X          the buttons to appear in a tray-style arrangement.
  858. X
  859. X     -paned
  860. X          Use  the  panedWidget  to  manage  the   buttons   (the
  861. X          default).   This causes the buttons to appear in a sin-
  862. X          gle column.
  863. X
  864. X     xcmdpanel will also accept the standard X  Toolkit  options;
  865. X     see the xterm(1) manual page, subsection RESOURCES.
  866. X
  867. USAGE
  868. X     The xcmdpanel has been used to ease project  management,  to
  869. X     pop  up  automatically  generated  menus, and to handle menu
  870. X     hierarchies.  It is characterized  by  small,  project-  and
  871. X
  872. X
  873. X
  874. XX Version 11         Last change: Release 5                     1
  875. X
  876. X
  877. X
  878. X
  879. X
  880. X
  881. XXCMDPANEL(1)             USER COMMANDS               XCMDPANEL(1)
  882. X
  883. X
  884. X
  885. X     directory-specific  menus, generally run at need rather than
  886. X     from xinit(1) or the like.
  887. X
  888. X     Output from a particular invocation of xcmdpanel  will  gen-
  889. X     erally  show  up  in the xterm(1) from which it was invoked.
  890. X     Hence the parent terminal is often used as a display  window
  891. X     for ls(1) and make(1) output.
  892. X
  893. X     The configuration file is composed of labels and commands in
  894. X     parentheses, and comments (any not in parentheses).  Nesting
  895. X     of parentheses is observed unless a parenthesis  is  escaped
  896. X     with  a  backslash,  which  itself  may  be  so escaped (see
  897. X     SCRIPTS).
  898. X
  899. X     All text outside of parentheses is ignored.
  900. X
  901. X     Parenthesized strings  are  automatically  paired,  ignoring
  902. X     newlines.  Any label associated with an empty command string
  903. X     is considered to be a text button rather than a  title  but-
  904. X     ton, and is automatically ghosted.  Labels may also be empty
  905. X     strings, and will produce blank text boxes in the  resulting
  906. X     menu.
  907. X
  908. EXAMPLES
  909. X     To use the underlying X Toolkit options to select a particu-
  910. X     lar font:
  911. X
  912. X          xcmdpanel -fn '*sony*24*'
  913. X
  914. X     Another example using explicit resources:
  915. X
  916. X          xcmdpanel -xrm '*font: *sony*24*'
  917. X
  918. X     To get the same effect through an X RESOURCES file,  include
  919. X     the following line in your resources file:
  920. X
  921. X          xcmdpanel*font: *sony*24*
  922. X
  923. SCRIPTS
  924. X     A project menu:
  925. X
  926. X
  927. X              Label   Command
  928. X
  929. X          (Title)         ()
  930. X          ( ( \) ) )      ()     a test label showing parens
  931. X          ()              ()
  932. X          (Clear)         (clear &)
  933. X          (Make)          (make &)
  934. X          (Edit File)     (${EDITOR} `ifc .` &)   InterViews only
  935. X          (Run a.out)     (a.out &)               execute
  936. X          (List)          (echo listing ; ls -Flasg &)
  937. X
  938. X
  939. X
  940. XX Version 11         Last change: Release 5                     2
  941. X
  942. X
  943. X
  944. X
  945. X
  946. X
  947. XXCMDPANEL(1)             USER COMMANDS               XCMDPANEL(1)
  948. X
  949. X
  950. X
  951. X          (Du)            (du . &)
  952. X          (Update Menu)   (xcmdpanel -debug &)
  953. X          (Time Test)     (sleep 5)
  954. X
  955. X     Generating an audio menu on a Sun SPARC in csh(1):
  956. X
  957. X
  958. X          rm .xcmdpanel
  959. X          foreach file ( *.au )
  960. X              echo -n "(`expr $file : '\(.*\).au'`)" >> .xcmdpanel
  961. X              echo    "(cat $file > /dev/audio)"     >> .xcmdpanel
  962. X          end
  963. X          xcmdpanel -boxed &
  964. X
  965. X     Generating an audio menu on a Sun SPARC in sh(1):
  966. X
  967. X
  968. X          for file in *.au
  969. X          do
  970. X              echo -n "(`expr $file : '\(.*\).au'`)"
  971. X              echo    "(cat $file > /dev/audio)"
  972. X          done > .xcmdpanel
  973. X          xcmdpanel -boxed &
  974. X
  975. XX RESOURCES
  976. X     xcmdpanel uses the following X resources:
  977. X
  978. X     paned (class Paned)
  979. X                   Indicates  whether  to  use  the  panedWidget.
  980. X                   Defaults  to  true.  If false, the boxedWidget
  981. X                   is used instead.
  982. X
  983. X     ghost (class Ghost)
  984. X                   Indicates whether buttons are  to  be  ghosted
  985. X                   after selection.  Defaults to false.
  986. X
  987. X     debug (class Debug)
  988. X                   Whether or not to do debugging.   Defaults  to
  989. X                   false.
  990. X
  991. X     xcmdpanel also uses the resources of its subwidgets, includ-
  992. X     ing   the   commandWidget,   panedWidget,   boxWidget,   and
  993. X     textWidget.
  994. X
  995. FILES
  996. X     .xcmdpanel          The usual  configuration  file  (in  the
  997. X                         current   dir)   for  an  invocation  of
  998. X                         xcmdpanel.
  999. X     ~/.xcmdpanel        Default configuration file to be read by
  1000. X                         xcmdpanel when no other appropriate file
  1001. X                         is available.
  1002. X
  1003. X
  1004. X
  1005. X
  1006. XX Version 11         Last change: Release 5                     3
  1007. X
  1008. X
  1009. X
  1010. X
  1011. X
  1012. X
  1013. XXCMDPANEL(1)             USER COMMANDS               XCMDPANEL(1)
  1014. X
  1015. X
  1016. X
  1017. SEE ALSO
  1018. X     X(1), xinit(1), sh(1), system(3)
  1019. X
  1020. BUGS
  1021. X     Probably.
  1022. X
  1023. COPYRIGHT
  1024. X     Copyright (c) 1990, Christopher Alexander North-Keys
  1025. X
  1026. X     Author's  credit  must  be  retained  in  binaries,   manual
  1027. X     entries, sources, and derived code.
  1028. X
  1029. X     This software may be freely copied,  distributed,  compiled,
  1030. X     altered,  and  sold,  provided  the  above  restrictions are
  1031. X     observed.
  1032. X
  1033. X     This software is provided "as is", with no warranty, guaran-
  1034. X     tee,  support,  maintenance, update schedule, claims to fit-
  1035. X     ness for any purpose, or anything else from  the  author  or
  1036. X     the  author's  employer(s).   See  the source code for addi-
  1037. X     tional copyright and limitation information.
  1038. X
  1039. AUTHOR
  1040. X     Christopher Alexander North-Keys
  1041. X     <erlkonig@gnu.ai.mit.edu>
  1042. X
  1043. X     Director/Instructor of OS and Software Design
  1044. X     RDA Computer Training
  1045. X
  1046. NOTES
  1047. X     The xcmdpanel program was produced  under  the  auspices  of
  1048. X     Group  Talisman.  I'd also like to thank Mic Kaczmarczik for
  1049. X     his aid in documentation.
  1050. X
  1051. X
  1052. X
  1053. X
  1054. X
  1055. X
  1056. X
  1057. X
  1058. X
  1059. X
  1060. X
  1061. X
  1062. X
  1063. X
  1064. X
  1065. X
  1066. X
  1067. X
  1068. X
  1069. X
  1070. X
  1071. X
  1072. XX Version 11         Last change: Release 5                     4
  1073. X
  1074. X
  1075. X
  1076. SHAR_EOF
  1077. chmod 0644 xcmdpanel.man ||
  1078. echo 'restore of xcmdpanel.man failed'
  1079. Wc_c="`wc -c < 'xcmdpanel.man'`"
  1080. test 12810 -eq "$Wc_c" ||
  1081.     echo 'xcmdpanel.man: original size 12810, current size' "$Wc_c"
  1082. fi
  1083. # ============= Makefile ==============
  1084. if test -f 'Makefile' -a X"$1" != X"-c"; then
  1085.     echo 'x - skipping Makefile (File already exists)'
  1086. else
  1087. echo 'x - extracting Makefile (Text)'
  1088. sed 's/^X//' << 'SHAR_EOF' > 'Makefile' &&
  1089. # Makefile generated by imake - do not edit!
  1090. # $XConsortium: imake.c,v 1.65 91/07/25 17:50:17 rws Exp $
  1091. #
  1092. # The cpp used on this machine replaces all newlines and multiple tabs and
  1093. # spaces in a macro expansion with a single space.  Imake tries to compensate
  1094. # for this, but is not always successful.
  1095. #
  1096. X
  1097. # -------------------------------------------------------------------------
  1098. # Makefile generated from "Imake.tmpl" and <Imakefile>
  1099. # $XConsortium: Imake.tmpl,v 1.139 91/09/16 08:52:48 rws Exp $
  1100. #
  1101. # Platform-specific parameters may be set in the appropriate <vendor>.cf
  1102. # configuration files.  Site-specific parameters should be set in the file
  1103. # site.def.  Full rebuilds are recommended if any parameters are changed.
  1104. #
  1105. # If your C preprocessor does not define any unique symbols, you will need
  1106. # to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
  1107. # "make World" the first time).
  1108. #
  1109. X
  1110. # -------------------------------------------------------------------------
  1111. # site-specific configuration parameters that need to come before
  1112. # the platform-specific parameters - edit site.def to change
  1113. X
  1114. # site:  $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $
  1115. X
  1116. # -------------------------------------------------------------------------
  1117. # platform-specific configuration parameters - edit sun.cf to change
  1118. X
  1119. # platform:  $XConsortium: sun.cf,v 1.68 91/07/30 11:34:39 rws Exp $
  1120. X
  1121. # operating system:  SunOS 4.1.1
  1122. X
  1123. # $XConsortium: sunLib.rules,v 1.6 91/03/24 17:55:58 rws Exp $
  1124. X
  1125. # -------------------------------------------------------------------------
  1126. # site-specific configuration parameters that go after
  1127. # the platform-specific parameters - edit site.def to change
  1128. X
  1129. # site:  $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $
  1130. X
  1131. X            SHELL = /bin/sh
  1132. X
  1133. X              TOP = .
  1134. X      CURRENT_DIR = .
  1135. X
  1136. X               AR = ar clq
  1137. X  BOOTSTRAPCFLAGS =
  1138. X               CC = cc
  1139. X               AS = as
  1140. X
  1141. X         COMPRESS = compress
  1142. X              CPP = /lib/cpp $(STD_CPP_DEFINES)
  1143. X    PREPROCESSCMD = cc -E $(STD_CPP_DEFINES)
  1144. X          INSTALL = install
  1145. X               LD = ld
  1146. X             LINT = lint
  1147. X      LINTLIBFLAG = -C
  1148. X         LINTOPTS = -axz
  1149. X               LN = ln -s
  1150. X             MAKE = make
  1151. X               MV = mv
  1152. X               CP = cp
  1153. X
  1154. X           RANLIB = ranlib
  1155. X  RANLIBINSTFLAGS =
  1156. X
  1157. X               RM = rm -f
  1158. X            TROFF = psroff
  1159. X         MSMACROS = -ms
  1160. X              TBL = tbl
  1161. X              EQN = eqn
  1162. X     STD_INCLUDES =
  1163. X  STD_CPP_DEFINES =
  1164. X      STD_DEFINES =
  1165. X EXTRA_LOAD_FLAGS =
  1166. X  EXTRA_LIBRARIES =
  1167. X             TAGS = ctags
  1168. X
  1169. X    SHAREDCODEDEF = -DSHAREDCODE
  1170. X         SHLIBDEF = -DSUNSHLIB
  1171. X
  1172. X    PROTO_DEFINES =
  1173. X
  1174. X     INSTPGMFLAGS =
  1175. X
  1176. X     INSTBINFLAGS = -m 0755
  1177. X     INSTUIDFLAGS = -m 4755
  1178. X     INSTLIBFLAGS = -m 0644
  1179. X     INSTINCFLAGS = -m 0444
  1180. X     INSTMANFLAGS = -m 0444
  1181. X     INSTDATFLAGS = -m 0444
  1182. X    INSTKMEMFLAGS = -m 4755
  1183. X
  1184. X      PROJECTROOT = /usr/X11/R5
  1185. X
  1186. X     TOP_INCLUDES = -I$(INCROOT)
  1187. X
  1188. X      CDEBUGFLAGS = -O
  1189. X        CCOPTIONS = -pipe
  1190. X
  1191. X      ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(STD_INCLUDES)
  1192. X       ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(DEFINES)
  1193. X           CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)
  1194. X        LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES)
  1195. X
  1196. X           LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
  1197. X
  1198. X        LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) $(LOCAL_LDFLAGS) -L$(USRLIBDIR)
  1199. X
  1200. X   LDCOMBINEFLAGS = -X -r
  1201. X      DEPENDFLAGS =
  1202. X
  1203. X        MACROFILE = sun.cf
  1204. X           RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut
  1205. X
  1206. X    IMAKE_DEFINES =
  1207. X
  1208. X         IRULESRC = $(CONFIGDIR)
  1209. X        IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES)
  1210. X
  1211. X     ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \
  1212. X            $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \
  1213. X            $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)
  1214. X
  1215. # -------------------------------------------------------------------------
  1216. # X Window System Build Parameters
  1217. # $XConsortium: Project.tmpl,v 1.138 91/09/10 09:02:12 rws Exp $
  1218. X
  1219. # -------------------------------------------------------------------------
  1220. # X Window System make variables; this need to be coordinated with rules
  1221. X
  1222. X          PATHSEP = /
  1223. X        USRLIBDIR = /usr/X11/R5/lib
  1224. X           BINDIR = /usr/X11/R5/bin
  1225. X          INCROOT = /usr/X11/R5/include
  1226. X     BUILDINCROOT = $(TOP)
  1227. X      BUILDINCDIR = $(BUILDINCROOT)/X11
  1228. X      BUILDINCTOP = ..
  1229. X           INCDIR = $(INCROOT)/X11
  1230. X           ADMDIR = /usr/adm
  1231. X           LIBDIR = $(USRLIBDIR)/X11
  1232. X        CONFIGDIR = $(LIBDIR)/config
  1233. X       LINTLIBDIR = $(USRLIBDIR)/lint
  1234. X
  1235. X          FONTDIR = $(LIBDIR)/fonts
  1236. X         XINITDIR = $(LIBDIR)/xinit
  1237. X           XDMDIR = $(LIBDIR)/xdm
  1238. X           TWMDIR = $(LIBDIR)/twm
  1239. X          MANPATH = /usr/X11/R5/man
  1240. X    MANSOURCEPATH = $(MANPATH)/man
  1241. X        MANSUFFIX = n
  1242. X     LIBMANSUFFIX = 3
  1243. X           MANDIR = $(MANSOURCEPATH)$(MANSUFFIX)
  1244. X        LIBMANDIR = $(MANSOURCEPATH)$(LIBMANSUFFIX)
  1245. X           NLSDIR = $(LIBDIR)/nls
  1246. X        PEXAPIDIR = $(LIBDIR)/PEX
  1247. X      XAPPLOADDIR = $(LIBDIR)/app-defaults
  1248. X       FONTCFLAGS = -t
  1249. X
  1250. X     INSTAPPFLAGS = $(INSTDATFLAGS)
  1251. X
  1252. X            IMAKE = imake
  1253. X           DEPEND = makedepend
  1254. X              RGB = rgb
  1255. X
  1256. X            FONTC = bdftopcf
  1257. X
  1258. X        MKFONTDIR = mkfontdir
  1259. X        MKDIRHIER = /bin/sh $(BINDIR)/mkdirhier
  1260. X
  1261. X        CONFIGSRC = $(TOP)/config
  1262. X       DOCUTILSRC = $(TOP)/doc/util
  1263. X        CLIENTSRC = $(TOP)/clients
  1264. X          DEMOSRC = $(TOP)/demos
  1265. X           LIBSRC = $(TOP)/lib
  1266. X          FONTSRC = $(TOP)/fonts
  1267. X       INCLUDESRC = $(TOP)/X11
  1268. X        SERVERSRC = $(TOP)/server
  1269. X          UTILSRC = $(TOP)/util
  1270. X        SCRIPTSRC = $(UTILSRC)/scripts
  1271. X       EXAMPLESRC = $(TOP)/examples
  1272. X       CONTRIBSRC = $(TOP)/../contrib
  1273. X           DOCSRC = $(TOP)/doc
  1274. X           RGBSRC = $(TOP)/rgb
  1275. X        DEPENDSRC = $(UTILSRC)/makedepend
  1276. X         IMAKESRC = $(CONFIGSRC)
  1277. X         XAUTHSRC = $(LIBSRC)/Xau
  1278. X          XLIBSRC = $(LIBSRC)/X
  1279. X           XMUSRC = $(LIBSRC)/Xmu
  1280. X       TOOLKITSRC = $(LIBSRC)/Xt
  1281. X       AWIDGETSRC = $(LIBSRC)/Xaw
  1282. X       OLDXLIBSRC = $(LIBSRC)/oldX
  1283. X      XDMCPLIBSRC = $(LIBSRC)/Xdmcp
  1284. X      BDFTOSNFSRC = $(FONTSRC)/bdftosnf
  1285. X      BDFTOSNFSRC = $(FONTSRC)/clients/bdftosnf
  1286. X      BDFTOPCFSRC = $(FONTSRC)/clients/bdftopcf
  1287. X     MKFONTDIRSRC = $(FONTSRC)/clients/mkfontdir
  1288. X         FSLIBSRC = $(FONTSRC)/lib/fs
  1289. X    FONTSERVERSRC = $(FONTSRC)/server
  1290. X     EXTENSIONSRC = $(TOP)/extensions
  1291. X         XILIBSRC = $(EXTENSIONSRC)/lib/xinput
  1292. X      PHIGSLIBSRC = $(EXTENSIONSRC)/lib/PEX
  1293. X
  1294. # $XConsortium: sunLib.tmpl,v 1.11 91/07/31 11:32:08 rws Exp $
  1295. X
  1296. SHLIBLDFLAGS = -assert pure-text
  1297. PICFLAGS = -pic
  1298. X
  1299. X  DEPEXTENSIONLIB =
  1300. X     EXTENSIONLIB = -lXext
  1301. X
  1302. X          DEPXLIB = $(DEPEXTENSIONLIB)
  1303. X             XLIB = $(EXTENSIONLIB) -lX11
  1304. X
  1305. X        DEPXMULIB = $(USRLIBDIR)/libXmu.sa.$(SOXMUREV)
  1306. X           XMULIB = -lXmu
  1307. X
  1308. X       DEPOLDXLIB =
  1309. X          OLDXLIB = -loldX
  1310. X
  1311. X      DEPXTOOLLIB = $(USRLIBDIR)/libXt.sa.$(SOXTREV)
  1312. X         XTOOLLIB = -lXt
  1313. X
  1314. X        DEPXAWLIB = $(USRLIBDIR)/libXaw.sa.$(SOXAWREV)
  1315. X           XAWLIB = -lXaw
  1316. X
  1317. X        DEPXILIB =
  1318. X           XILIB = -lXi
  1319. X
  1320. X        SOXLIBREV = 4.10
  1321. X          SOXTREV = 4.10
  1322. X         SOXAWREV = 5.0
  1323. X        SOOLDXREV = 4.10
  1324. X         SOXMUREV = 4.10
  1325. X        SOXEXTREV = 4.10
  1326. X      SOXINPUTREV = 4.10
  1327. X
  1328. X      DEPXAUTHLIB = $(USRLIBDIR)/libXau.a
  1329. X         XAUTHLIB =  -lXau
  1330. X      DEPXDMCPLIB = $(USRLIBDIR)/libXdmcp.a
  1331. X         XDMCPLIB =  -lXdmcp
  1332. X
  1333. X        DEPPHIGSLIB = $(USRLIBDIR)/libphigs.a
  1334. X           PHIGSLIB =  -lphigs
  1335. X
  1336. X       DEPXBSDLIB = $(USRLIBDIR)/libXbsd.a
  1337. X          XBSDLIB =  -lXbsd
  1338. X
  1339. X LINTEXTENSIONLIB = $(LINTLIBDIR)/llib-lXext.ln
  1340. X         LINTXLIB = $(LINTLIBDIR)/llib-lX11.ln
  1341. X          LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln
  1342. X        LINTXTOOL = $(LINTLIBDIR)/llib-lXt.ln
  1343. X          LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln
  1344. X           LINTXI = $(LINTLIBDIR)/llib-lXi.ln
  1345. X        LINTPHIGS = $(LINTLIBDIR)/llib-lphigs.ln
  1346. X
  1347. X          DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
  1348. X
  1349. X         DEPLIBS1 = $(DEPLIBS)
  1350. X         DEPLIBS2 = $(DEPLIBS)
  1351. X         DEPLIBS3 = $(DEPLIBS)
  1352. X
  1353. # -------------------------------------------------------------------------
  1354. # Imake rules for building libraries, programs, scripts, and data files
  1355. # rules:  $XConsortium: Imake.rules,v 1.123 91/09/16 20:12:16 rws Exp $
  1356. X
  1357. # -------------------------------------------------------------------------
  1358. # start of Imakefile
  1359. X
  1360. LOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
  1361. X        DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
  1362. X           SRCS = xcmdpanel.c
  1363. X
  1364. X OBJS = xcmdpanel.o
  1365. X SRCS = xcmdpanel.c
  1366. X
  1367. X PROGRAM = xcmdpanel
  1368. X
  1369. all:: xcmdpanel
  1370. X
  1371. xcmdpanel: $(OBJS) $(DEPLIBS)
  1372. X    $(RM) $@
  1373. X    $(CC) -o $@ $(OBJS) $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
  1374. X
  1375. saber_xcmdpanel:: $(SRCS)
  1376. X    # load $(ALLDEFINES) $(SRCS) $(LOCAL_LIBRARIES) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
  1377. X
  1378. osaber_xcmdpanel:: $(OBJS)
  1379. X    # load $(ALLDEFINES) $(OBJS) $(LOCAL_LIBRARIES) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
  1380. X
  1381. install:: xcmdpanel
  1382. X    @if [ -d $(DESTDIR)$(BINDIR) ]; then set +x; \
  1383. X    else (set -x; $(MKDIRHIER) $(DESTDIR)$(BINDIR)); fi
  1384. X    $(INSTALL) -c $(INSTPGMFLAGS)  xcmdpanel $(DESTDIR)$(BINDIR)
  1385. X
  1386. install.man:: xcmdpanel.man
  1387. X    @if [ -d $(DESTDIR)$(MANDIR) ]; then set +x; \
  1388. X    else (set -x; $(MKDIRHIER) $(DESTDIR)$(MANDIR)); fi
  1389. X    $(INSTALL) -c $(INSTMANFLAGS) xcmdpanel.man $(DESTDIR)$(MANDIR)/xcmdpanel.$(MANSUFFIX)
  1390. X
  1391. depend::
  1392. X    $(DEPEND) $(DEPENDFLAGS) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
  1393. X
  1394. lint:
  1395. X    $(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS)
  1396. lint1:
  1397. X    $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)
  1398. X
  1399. clean::
  1400. X    $(RM) $(PROGRAM)
  1401. X
  1402. # -------------------------------------------------------------------------
  1403. # common rules for all Makefiles - do not edit
  1404. X
  1405. emptyrule::
  1406. X
  1407. clean::
  1408. X    $(RM_CMD) "#"*
  1409. X
  1410. Makefile::
  1411. X    -@if [ -f Makefile ]; then set -x; \
  1412. X    $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
  1413. X    else exit 0; fi
  1414. X    $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
  1415. X
  1416. tags::
  1417. X    $(TAGS) -w *.[ch]
  1418. X    $(TAGS) -xw *.[ch] > TAGS
  1419. X
  1420. saber:
  1421. X    # load $(ALLDEFINES) $(SRCS)
  1422. X
  1423. osaber:
  1424. X    # load $(ALLDEFINES) $(OBJS)
  1425. X
  1426. # -------------------------------------------------------------------------
  1427. # empty rules for directories that do not have SUBDIRS - do not edit
  1428. X
  1429. install::
  1430. X    @echo "install in $(CURRENT_DIR) done"
  1431. X
  1432. install.man::
  1433. X    @echo "install.man in $(CURRENT_DIR) done"
  1434. X
  1435. Makefiles::
  1436. X
  1437. includes::
  1438. X
  1439. # -------------------------------------------------------------------------
  1440. # dependencies generated by makedepend
  1441. X
  1442. SHAR_EOF
  1443. chmod 0644 Makefile ||
  1444. echo 'restore of Makefile failed'
  1445. Wc_c="`wc -c < 'Makefile'`"
  1446. test 10447 -eq "$Wc_c" ||
  1447.     echo 'Makefile: original size 10447, current size' "$Wc_c"
  1448. fi
  1449. true || echo 'restore of xcmdpanel.txt failed'
  1450. echo End of part 1, continue with part 2
  1451. exit 0
  1452. -- 
  1453. --
  1454. Molecular Simulations, Inc.            mail: dcmartin@msi.com
  1455. 796 N. Pastoria Avenue                uucp: uunet!dcmartin
  1456. Sunnyvale, California 94086            at&t: 408/522-9236
  1457.