home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume14 / faces-1.4.5 / patch03 < prev    next >
Encoding:
Text File  |  1990-08-16  |  57.2 KB  |  1,627 lines

  1. Newsgroups: comp.sources.misc
  2. subject: v14i053: Official patch #7 for faces v1.4 (part 2 of 2).
  3. from: rburridge@Sun.COM (Rich Burridge)
  4. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  5.  
  6. Posting-number: Volume 14, Issue 53
  7. Submitted-by: rburridge@Sun.COM (Rich Burridge)
  8. Archive-name: faces-1.4.5/patch03
  9.  
  10. ------CUT HERE------start of message------CUT HERE------
  11.  
  12. Official patch #7 for faces v1.4 (part 2 of 2).
  13.  
  14. /** IMPORTANT NOTE: This patch and the new file (mush.xface.patch)
  15.  ** comes in two parts. You should save these two parts, strip off the
  16.  ** initial header (down to and including the CUT HERE lines), and
  17.  ** anything below (and including) the CUT HERE line at the end of each
  18.  ** file. cat the two files together, and unpack with sh. Use Larry Wall's
  19.  ** patch program to apply, and recompile and reinstall.
  20.  **
  21.  ** I apologise for this; I didn't realise the patch was going to be so
  22.  ** big.
  23.  **/
  24.  
  25. ------CUT HERE------CUT HERE------CUT HERE------CUT HERE------
  26. ------- sunview.c -------
  27. *** /tmp/da09676    Tue Aug 14 07:20:18 1990
  28. --- sunview.c    Sat Aug  4 03:28:47 1990
  29. ***************
  30. *** 56,62 ****
  31.   } ;
  32.   
  33.   Pixwin *fpw, *pw ;
  34. - int toclear ;                 /* Set if faces icon needs clearing. */
  35.   int ffd ;                     /* File descriptor of faces frame. */
  36.   
  37.   
  38. --- 56,61 ----
  39. ***************
  40. *** 65,79 ****
  41.   enum icon_type itype ;
  42.   int row, column ;
  43.   {
  44. !   switch ((int) mtype)
  45. !     {
  46. !       case MONNEW : PR_ROP(pr[(int) dtype], imagewidth, 0,
  47. !                            (maxcols-1)*imagewidth, imageheight, PIX_SRC,
  48. !                            pr[(int) dtype], 0, 0) ;
  49. !       default     : PR_ROP(pr[(int) dtype], column*imagewidth, row*imageheight,
  50. !                            imagewidth, imageheight, PIX_SRC,
  51. !                            images[(int) itype], 0, 0) ;
  52. !     }
  53.   }
  54.   
  55.   
  56. --- 64,75 ----
  57.   enum icon_type itype ;
  58.   int row, column ;
  59.   {
  60. !   if (mtype == MONNEW)
  61. !     PR_ROP(pr[(int) dtype], imagewidth, 0, (maxcols-1)*imagewidth,
  62. !            imageheight, PIX_SRC, pr[(int) dtype], 0, 0) ;
  63. !   PR_ROP(pr[(int) dtype], column*imagewidth, row*imageheight,
  64. !          imagewidth, imageheight, PIX_SRC, images[(int) itype], 0, 0) ;
  65.   }
  66.   
  67.   
  68. ***************
  69. *** 111,125 ****
  70.     if (event_is_down(event) && nextc == MS_LEFT)
  71.       {
  72.         wdtype = (wdtype == DISP_NAME) ? DISP_OTHER : DISP_NAME ;
  73. !       PW_ROP(pw, 0, 0, width, height, PIX_SRC, pr[(int) wdtype], 0, 0) ;
  74.       }
  75. !   if (mtype == MONNEW && event_is_ascii(event) && nextc == DEL)
  76. !     {
  77. !       repl_image(DISP_NAME,  CUROFF, width, height) ;
  78. !       repl_image(DISP_OTHER, CUROFF, width, height) ;
  79. !       toclear = 1 ;
  80. !       do_check() ;
  81. !     }
  82.     else window_default_event_proc(canvas, event, arg) ;
  83.   }
  84.   
  85. --- 107,115 ----
  86.     if (event_is_down(event) && nextc == MS_LEFT)
  87.       {
  88.         wdtype = (wdtype == DISP_NAME) ? DISP_OTHER : DISP_NAME ;
  89. !       draw_screen(wdtype) ;
  90.       }
  91. !   if (event_is_ascii(event)) do_key(nextc) ;
  92.     else window_default_event_proc(canvas, event, arg) ;
  93.   }
  94.   
  95. ***************
  96. *** 169,174 ****
  97. --- 159,171 ----
  98.   }
  99.   
  100.   
  101. + draw_screen(wdtype)
  102. + enum disp_type wdtype ;
  103. + {
  104. +   PW_ROP(pw, 0, 0, width, height, PIX_SRC, pr[(int) wdtype], 0, 0) ;
  105. + }
  106.   init_font()
  107.   {
  108.     sfont = pf_open(FONT) ;
  109. ***************
  110. *** 206,212 ****
  111.     gtype = SVIEW ;
  112.     pr[(int) DISP_NAME] = pr[(int) DISP_OTHER] = NULL ;
  113.     old_pr[(int) DISP_NAME] = old_pr[(int) DISP_OTHER] = NULL ;
  114. -   toclear = 0 ;
  115.     return 0 ;
  116.   }
  117.   
  118. --- 203,208 ----
  119. ***************
  120. *** 288,294 ****
  121.   Pixwin *pw ;
  122.   Rectlist *repaint_area ;
  123.   {
  124. !   PW_ROP(pw, 0, 0, width, height, PIX_SRC, pr[(int) wdtype], 0, 0) ;
  125.   }
  126.   
  127.   
  128. --- 284,290 ----
  129.   Pixwin *pw ;
  130.   Rectlist *repaint_area ;
  131.   {
  132. !   draw_screen(wdtype) ;
  133.   }
  134.   
  135.   
  136. ***************
  137. *** 331,337 ****
  138.     temprect->r_height = height + 10 ;
  139.     temprect->r_width = width + 10 ;
  140.     WINDOW_SET(frame, FRAME_OPEN_RECT, temprect, 0) ;
  141. !   PW_ROP(pw, 0, 0, width, height, PIX_SRC, pr[(int) wdtype], 0, 0) ;
  142.   
  143.     if (newmail) beep_flash(beeps, flashes) ;
  144.     if (old_pr[(int) DISP_NAME])    PR_DESTROY(old_pr[(int) DISP_NAME]) ;
  145. --- 327,333 ----
  146.     temprect->r_height = height + 10 ;
  147.     temprect->r_width = width + 10 ;
  148.     WINDOW_SET(frame, FRAME_OPEN_RECT, temprect, 0) ;
  149. !   draw_screen(wdtype) ;
  150.   
  151.     if (newmail) beep_flash(beeps, flashes) ;
  152.     if (old_pr[(int) DISP_NAME])    PR_DESTROY(old_pr[(int) DISP_NAME]) ;
  153.  
  154. ------- extern.h -------
  155. *** /tmp/da09679    Tue Aug 14 07:20:18 1990
  156. --- extern.h    Wed Aug  8 17:45:02 1990
  157. ***************
  158. *** 33,38 ****
  159. --- 33,39 ----
  160.   extern enum gr_type gtype ;  /* Indicates what graphics system is being used. */
  161.   extern enum mon_type mtype ; /* What type of monitoring we should do. */
  162.   
  163. + extern char bgcolor[] ;    /* X11 background color. */
  164.   extern char bgicon[] ;     /* Alternate background pattern. */
  165.   extern char community[] ;  /* Community name ("real" host name). */
  166.   extern char defdir[] ;     /* The default face directory. */
  167. ***************
  168. *** 41,47 ****
  169.   extern char face_host[] ;  /* Pointer to host name from the "From" line. */
  170.   extern char face_ts[] ;    /* Pointer to time stamp from the "From" line. */
  171.   extern char face_user[] ;  /* Pointer to user name from the "From" line. */
  172. ! extern char facedir[] ;    /* Alternate face image directory. */
  173.   extern char fname[MAXTYPES][MAXLINE] ;  /* Array of various face name types. */
  174.   extern char geometry[] ;   /* X11 geometry information. */
  175.   extern char hostname[] ;   /* Machine name to monitor. */
  176. --- 42,50 ----
  177.   extern char face_host[] ;  /* Pointer to host name from the "From" line. */
  178.   extern char face_ts[] ;    /* Pointer to time stamp from the "From" line. */
  179.   extern char face_user[] ;  /* Pointer to user name from the "From" line. */
  180. ! extern char facedirs[] ;   /* Colon separated list of face directories. */
  181. ! extern char *facepath[] ;  /* Array of face image directories. */
  182. ! extern char fgcolor[] ;                 /* X11 foreground color. */
  183.   extern char fname[MAXTYPES][MAXLINE] ;  /* Array of various face name types. */
  184.   extern char geometry[] ;   /* X11 geometry information. */
  185.   extern char hostname[] ;   /* Machine name to monitor. */
  186. ***************
  187. *** 52,57 ****
  188. --- 55,61 ----
  189.   extern char peopfile[] ;   /* Name of the people/username file. */
  190.   extern char printer[] ;    /* Printer name to monitor. */
  191.   extern char progname[] ;   /* Name of this program. */
  192. + extern char realcomm[] ;   /* Real community for this user. */
  193.   extern char realname[] ;   /* Real username for this user. */
  194.   extern char revtable[] ;   /* Table for reversing the bits in a byte. */
  195.   extern char spoolfile[] ;  /* Full pathname of users current mail. */
  196. ***************
  197. *** 88,93 ****
  198. --- 92,98 ----
  199.   extern int period ;        /* Period in seconds for checking new mail. */
  200.   extern int posspec ;       /* Set if -Wp or -g option is present (for X11) */
  201.   extern int row ;           /* Row number for next icon. */
  202. + extern int toclear ;       /* Set if faces memory area needs clearing. */
  203.   extern int update ;        /* If set, send mail to update faces database. */
  204.   extern int width ;         /* Width in pixels of faces display. */
  205.   extern int wx ;            /* Initial X position of the window. */
  206.  
  207. ------- faces.h -------
  208. *** /tmp/da09682    Tue Aug 14 07:20:19 1990
  209. --- faces.h    Sat Aug  4 22:38:31 1990
  210. ***************
  211. *** 14,19 ****
  212. --- 14,34 ----
  213.    *  reported to me then an attempt will be made to fix them.
  214.    */
  215.   
  216. + #ifndef FALSE
  217. + #define  FALSE  (0 == 1)
  218. + #define  TRUE   (0 == 0)
  219. + #endif /*FALSE*/
  220. + /* If your compiler can handle inline functions, define INLINE as `inline',
  221. +  * otherwise define it as `'.
  222. +  */
  223. + #ifdef __GNU_CC__
  224. + #define  INLINE  inline
  225. + #else
  226. + #define  INLINE
  227. + #endif /*__GNU_CC__*/
  228.   #ifdef DEBUG
  229.   #define  IF_DEBUG(stmt)  stmt
  230.   #else
  231. ***************
  232. *** 20,25 ****
  233. --- 35,44 ----
  234.   #define  IF_DEBUG(stmt)
  235.   #endif /*DEBUG*/
  236.   
  237. + #ifndef FACEDIR
  238. + #define  FACEDIR  "/usr/local/faces"
  239. + #endif /*FACEDIR*/
  240.   #define  FCLOSE        (void) fclose      /* To make lint happy. */
  241.   #define  FFLUSH        (void) fflush
  242.   #define  FGETS         (void) fgets
  243. ***************
  244. *** 74,81 ****
  245.   #define  PAINTED         101  /* Canvas/Icon needs repainting. */
  246.   #define  LEFTDOWN        102  /* Left mouse button has been pressed. */
  247.   
  248.   #define  BLITHEIGHT      48       /* Maximum number of lines in a blit icon. */
  249. - #define  DEL             '\177'   /* Clear faces display. */
  250.   #define  EQUAL(str,val)  !strncmp(str,val,strlen(val))
  251.   #define  ICONHEIGHT      64   /* Default height of individual face icons. */
  252.   #define  ICONWIDTH       64   /* Default width of individual face icons. */
  253. --- 93,104 ----
  254.   #define  PAINTED         101  /* Canvas/Icon needs repainting. */
  255.   #define  LEFTDOWN        102  /* Left mouse button has been pressed. */
  256.   
  257. + /* Keyboard actions. */
  258. + #define  KEY_CLEAR       '\177'   /* Clear faces display. */
  259. + #define  KEY_REFRESH     '\014'   /* Refresh faces display. */
  260. + #define  KEY_QUIT        'q'      /* Terminate faces display. */
  261.   #define  BLITHEIGHT      48       /* Maximum number of lines in a blit icon. */
  262.   #define  EQUAL(str,val)  !strncmp(str,val,strlen(val))
  263.   #define  ICONHEIGHT      64   /* Default height of individual face icons. */
  264.   #define  ICONWIDTH       64   /* Default width of individual face icons. */
  265. ***************
  266. *** 94,101 ****
  267.   
  268.   #ifndef  MAXLINE
  269.   #define  MAXLINE         200  /* Maximum length for character strings. */
  270. ! #endif   MAXLINE
  271.   
  272.   #define  MAXTYPES        4    /* Maximum number of different face types. */
  273.   #define  NO_PER_ROW      10   /* Default number of faces per row. */
  274.   
  275. --- 117,128 ----
  276.   
  277.   #ifndef  MAXLINE
  278.   #define  MAXLINE         200  /* Maximum length for character strings. */
  279. ! #endif /*MAXLINE*/
  280.   
  281. + #ifndef  MAXPATHS
  282. + #define     MAXPATHS        10   /* Maximum number of dirs in FACEPATH list */
  283. + #endif /*MAXPATHS*/
  284.   #define  MAXTYPES        4    /* Maximum number of different face types. */
  285.   #define  NO_PER_ROW      10   /* Default number of faces per row. */
  286.   
  287. ***************
  288. *** 104,112 ****
  289.   #define  rindex       strrchr
  290.   #endif /*NOINDEX*/
  291.   
  292. ! char *getenv(), *malloc(), *sprintf() ;
  293.   void endpwent() ;
  294.   FILE *popen() ;
  295.   
  296.   /*  Various programs that are used by faces.
  297.    *  You might need to change these on some machines.
  298. --- 131,146 ----
  299.   #define  rindex       strrchr
  300.   #endif /*NOINDEX*/
  301.   
  302. ! #ifndef SYSV32
  303. ! char *getenv(), *malloc() ;
  304. ! #ifdef hpux
  305. ! int sprintf() ;
  306. ! #else
  307. ! char *sprintf() ;
  308. ! #endif /*hpux*/
  309.   void endpwent() ;
  310.   FILE *popen() ;
  311. + #endif /*SYSV32*/
  312.   
  313.   /*  Various programs that are used by faces.
  314.    *  You might need to change these on some machines.
  315. ***************
  316. *** 144,149 ****
  317. --- 178,184 ----
  318.   struct peopinfo                 /* Username/alias record. */
  319.     {
  320.       char *alias ;               /* Alias for this user. */
  321. +     char *community ;           /* Real community. */
  322.       char *username ;            /* Real username. */
  323.       struct peopinfo *next ;     /* Pointer to next record. */
  324.     } ;
  325.  
  326. ------- patchlevel.h -------
  327. *** /tmp/da09685    Tue Aug 14 07:20:20 1990
  328. --- patchlevel.h    Fri Aug  3 12:04:40 1990
  329. ***************
  330. *** 14,17 ****
  331.    *  reported to me then an attempt will be made to fix them.
  332.    */
  333.   
  334. ! #define  PATCHLEVEL  6
  335. --- 14,17 ----
  336.    *  reported to me then an attempt will be made to fix them.
  337.    */
  338.   
  339. ! #define  PATCHLEVEL  7
  340.  
  341. ------- README -------
  342. *** /tmp/da09688    Tue Aug 14 07:20:21 1990
  343. --- README    Tue Aug 14 07:19:51 1990
  344. ***************
  345. *** 101,106 ****
  346. --- 101,107 ----
  347.   These are:
  348.   
  349.   BACKGROUND    - alternate background icon pattern.
  350. + DNSLOOKUP     - use DNS (Domain Name Service) to try to convert hostnames.
  351.   DONTSHOWNO    - don't show number of message on face image.
  352.   DONTSHOWTIME  - don't show timestamp on face image.
  353.   DONTSHOWUSER  - don't show username on face image.
  354. ***************
  355. *** 107,112 ****
  356. --- 108,114 ----
  357.   FACEDIR       - alternate face database directory.
  358.   FMONTYPE      - default monitoring type.
  359.   INVERT        - inverse video.
  360. + NAMEUNKNOWN   - clump all unknown users together per community.
  361.   NEWSINCDIR    - NeWS only: location of the NeWS #include files.
  362.   NEWSLIBDIR    - NeWS only: location of the NeWS libraries.
  363.   NISLOOKUP     - uncomment to use Sun NIS (formerly YP) to look for hosts.
  364. ***************
  365. *** 113,120 ****
  366. --- 115,124 ----
  367.   NODOMAINS     - uncomment if you don't want full host domain names.
  368.   NOINDEX       - uncomment if you don't have the index() function.
  369.   PERIOD        - alternate period in seconds before recheck.
  370. + PLP           - uncomment if you are running PLP and monitoring printers.
  371.   REVORDER      - byte reversal for little-endian machines.
  372.   SELTYPE       - uncomment for old select(2) calls.
  373. + SPOOLDIR      - alternate directory for spoolfiles.
  374.   SPOOLFILE     - alternate default spoolfile to monitor.
  375.   SYSV          - uncomment if you are running Unix System V.
  376.   TTEXT         - SunView only: uncomment on SunOS v3.x systems.
  377. ***************
  378. *** 208,216 ****
  379.   
  380.       X-Face: `cat $HOME/.face`
  381.   
  382. ! In v7.1.2 (version 7.1 - patchlevel #2), the Mush mail program will look for
  383. ! the existence of a .face file (in the above format) in the users home
  384. ! directory, and generate a similar header.
  385.   
  386.   For users of other mailers, it is suggested that the X-Face: line[s] be
  387.   added to your .signature file. Note that in this case, the initial line
  388. --- 212,221 ----
  389.   
  390.       X-Face: `cat $HOME/.face`
  391.   
  392. ! Included with this faces distribution, is an unofficial patch to mush v7.1.2
  393. ! to allow for X-Face support. The Mush mail program will look for the
  394. ! existence of a .face file (in the above format) in the users home directory,
  395. ! and generate a similar header.
  396.   
  397.   For users of other mailers, it is suggested that the X-Face: line[s] be
  398.   added to your .signature file. Note that in this case, the initial line
  399. ***************
  400. *** 261,268 ****
  401.   
  402.   Hal Stern for the face_update shell script.
  403.   
  404. ! Dan Heller and Bart Schaefer for adding support for .face files in
  405. ! their latest patch to v7.1 of the mush mailer.
  406.   
  407.   Guy Harris for the basis of the previous manual page.
  408.   
  409. --- 266,273 ----
  410.   
  411.   Hal Stern for the face_update shell script.
  412.   
  413. ! Dan Heller and Bart Schaefer for suggesting what should be in the unofficial
  414. ! patch to mush v7.1.2 to support X-Face lines.
  415.   
  416.   Guy Harris for the basis of the previous manual page.
  417.   
  418. ***************
  419. *** 294,301 ****
  420.   Also thanks to Jeremy Cook, John Machin, Neil Crellin, Mark Andrews, Sjoerd
  421.   Mullender, Cameron Humphries, Rick Gunderson, Rich McAllister, Hakon Lie,
  422.   John Fong, Chris Maltby, Darryl K. Ramm, Steve Piette, Tony Landells, Pat
  423. ! Lashley, Dave Glowacki, Chris Steinbroner and Steven M. Miller for various
  424. ! bug reports, fixes and suggestions for improvement.
  425.   
  426.   
  427.   ----------------------------------------------------------------------------
  428. --- 299,307 ----
  429.   Also thanks to Jeremy Cook, John Machin, Neil Crellin, Mark Andrews, Sjoerd
  430.   Mullender, Cameron Humphries, Rick Gunderson, Rich McAllister, Hakon Lie,
  431.   John Fong, Chris Maltby, Darryl K. Ramm, Steve Piette, Tony Landells, Pat
  432. ! Lashley, Dave Glowacki, Chris Steinbroner, Steven M. Miller, Bob Posert,
  433. ! Hugues Leroy, Graham Dumpleton, Michael Schmidt, Robert Adams and Rod
  434. ! Whitby for various bug reports, fixes and suggestions for improvement.
  435.   
  436.   
  437.   ----------------------------------------------------------------------------
  438.  
  439. ------- faces.1 -------
  440. *** /tmp/da09691    Tue Aug 14 07:20:22 1990
  441. --- faces.1    Sat Aug  4 20:35:14 1990
  442. ***************
  443. *** 201,210 ****
  444.   face images. The format of these input records is described in a previous
  445.   section.
  446.   .TP
  447. ! .BI \-f " facedir"
  448. ! If specified, then this directory is searched first for face images. If
  449. ! they are not found, then the default face directory will be searched.
  450. ! The default face directory is
  451.   .BR /usr/local/faces .
  452.   .TP
  453.   .BI \-g " geometry"
  454. --- 201,213 ----
  455.   face images. The format of these input records is described in a previous
  456.   section.
  457.   .TP
  458. ! .BI \-f " facepath"
  459. ! If specified, this is a colon-separated list of paths to be searched for
  460. ! face images.  A null entry in the path will be replaced by the compiled
  461. ! in default face directory.  If not specified, the directories specified
  462. ! by the FACEPATH environment variable will be used.  If there is no FACEPATH
  463. ! environment variable, the default face directory will be searched.
  464. ! The default face directory is normally
  465.   .BR /usr/local/faces .
  466.   .TP
  467.   .BI \-g " geometry"
  468. ***************
  469. *** 292,311 ****
  470.   Blit icon.
  471.   .PP
  472.   To access the face for the mail name
  473. ! .I machine!uid
  474. ! take the result of the first successful open from the following list of files:
  475.   .RS 6
  476. ! /usr/local/faces/machine/uid/iconname
  477.   .br
  478. ! /usr/local/faces/misc./uid/iconname
  479.   .br
  480. ! /usr/local/faces/machine/unknown/iconname
  481.   .br
  482. ! /usr/local/faces/misc./unknown/iconname
  483.   .RE
  484.   If the
  485.   .B -f
  486. ! argument is specified the given directory is searched before
  487.   .IR /usr/local/faces .
  488.   The iconname above, consists of the following choices, in the given order:
  489.   .TS
  490. --- 295,323 ----
  491.   Blit icon.
  492.   .PP
  493.   To access the face for the mail name
  494. ! .I machine.dom.ain!uid
  495. ! take the result of the first successful open from the following list of files
  496. ! (where $DIR represents iteration over the list of directories in FACEPATH):
  497.   .RS 6
  498. ! $DIR/machine.dom.ain/uid/iconname
  499.   .br
  500. ! $DIR/dom.ain/uid/iconname
  501.   .br
  502. ! $DIR/ain/uid/iconname
  503.   .br
  504. ! $DIR/misc./uid/iconname
  505. ! .br
  506. ! $DIR/machine.dom.ain/unknown/iconname
  507. ! .br
  508. ! $DIR/dom.ain/unknown/iconname
  509. ! .br
  510. ! $DIR/ain/unknown/iconname
  511. ! .br
  512. ! $DIR/misc./unknown/iconname
  513.   .RE
  514.   If the
  515.   .B -f
  516. ! argument is specified the given directory is searched instead of
  517.   .IR /usr/local/faces .
  518.   The iconname above, consists of the following choices, in the given order:
  519.   .TS
  520. ***************
  521. *** 344,351 ****
  522.   .I stard
  523.   in community
  524.   .I sunaus.
  525. ! The people table associates a community/alias pair, with a real username.
  526.   .RS 6
  527.   sunaus/rburridge=richb
  528.   .RE
  529.   causes the alias
  530. --- 356,372 ----
  531.   .I stard
  532.   in community
  533.   .I sunaus.
  534. ! The machine table may be used to alias entire communities; the line
  535.   .RS 6
  536. + wseng.sun.com=eng.sun.com
  537. + .RE
  538. + will cause the
  539. + .I wseng.sun.com
  540. + domain to be mapped to the
  541. + .I eng.sun.com
  542. + community. The people table associates a community/alias pair, with a
  543. + real username.
  544. + .RS 6
  545.   sunaus/rburridge=richb
  546.   .RE
  547.   causes the alias
  548. ***************
  549. *** 431,436 ****
  550. --- 452,475 ----
  551.   .TP
  552.   .B /usr/local/faces/machine.tab
  553.   machine/community equivalences
  554. + .SH ENVIRONMENT VARIABLES
  555. + .TP 15
  556. + .B DISPLAY
  557. + The X11 server to be used by the XView or X11 faces program to display
  558. + the face icons on.
  559. + .TP
  560. + .B FACEPATH
  561. + A colon separated list of directory paths to search for machine/user
  562. + face icons.
  563. + .TP
  564. + .B HOME
  565. + The home directory of the current user.  Used to locate the .mailrc file.
  566. + .TP
  567. + .B MAIL
  568. + The complete pathname of the mail spool file to monitor.
  569. + .TP
  570. + .B WINDOW_PARENT
  571. + Used to verify that the program is executing under a valid SunView environment.
  572.   .SH HISTORY
  573.   .I faces
  574.   is based on the Bell Labs Edition 8 program
  575.  
  576. ------- Makefile -------
  577. *** /tmp/da09694    Tue Aug 14 07:20:23 1990
  578. --- Makefile    Tue Aug 14 06:59:01 1990
  579. ***************
  580. *** 29,34 ****
  581. --- 29,50 ----
  582.   #
  583.   #BACKGROUND       = -DBACKGROUND=\"\"
  584.   #------------------------------------------------------------------------
  585. + #  Uncomment the following two lines to use the Domain Name Service to 
  586. + #  attempt to convert unqualified hostnames, or hostnames with partial
  587. + #  domains to fully qualified domain names.
  588. + #
  589. + #  When used with NISLOOKUP, DNSLOOKUP will take precedance.
  590. + #
  591. + #  NOTE that the domain name returned by DNS will be converted to lower
  592. + #  case before attempting a machines.tab match, or constructing an icon
  593. + #  file name.
  594. + #
  595. + #  NOTE that for this to work you must have at least a minimal
  596. + #  /etc/resolv.conf file containing a valid nameserver entry.
  597. + #
  598. + #DNSLOOKUP    = -DDNSLOOKUP
  599. + #DNSLIB        = -lresolv
  600. + #------------------------------------------------------------------------
  601.   #  If you do not want to show the number of messages on the face icon,
  602.   #  then uncomment the next line.
  603.   # 
  604. ***************
  605. *** 46,52 ****
  606.   #------------------------------------------------------------------------
  607.   #  By default, faces looks for the face images in /usr/local/faces. If
  608.   #  you wish to specify an alternate location, then these two lines should
  609. ! #  be uncommented and set appropriately.
  610.   #               
  611.   FACEDIR           = /usr/local/faces
  612.   CFACEDIR    = -DFACEDIR=\"$(FACEDIR)\"
  613. --- 62,69 ----
  614.   #------------------------------------------------------------------------
  615.   #  By default, faces looks for the face images in /usr/local/faces. If
  616.   #  you wish to specify an alternate location, then these two lines should
  617. ! #  be uncommented and set appropriately. Note that the value must be
  618. ! #  a single directory name, not a colon separated list of paths.
  619.   #               
  620.   FACEDIR           = /usr/local/faces
  621.   CFACEDIR    = -DFACEDIR=\"$(FACEDIR)\"
  622. ***************
  623. *** 66,71 ****
  624. --- 83,96 ----
  625.   #
  626.   #INVERT           = -DINVERT
  627.   #------------------------------------------------------------------------
  628. + #  When no icon is found for a given user, the unknown icon may be displayed
  629. + #  either with the user name, or labeled as `unknown'.  The former case
  630. + #  provides the most information, the latter allows all unknown users
  631. + #  within a given community to be lumped into a single image.  To select
  632. + #  the latter case uncomment the following line.
  633. + #
  634. + #NAMEUNKNOWN    = -DNAMEUNKNOWN
  635. + #------------------------------------------------------------------------
  636.   #  If you are compiling the NeWS version, then the following two lines
  637.   #  should be uncommented, and set appropriately.
  638.   #
  639. ***************
  640. *** 72,81 ****
  641.   #NEWSINCDIR    = -I$(OPENWINHOME)/include
  642.   #NEWSLIBDIR    = -L$(OPENWINHOME)/lib
  643.   #------------------------------------------------------------------------
  644. ! #  Uncomment the following two lines to use the Sun Network Information
  645.   #  Services (NIS, formerly YP) to look for hosts which do not explicitly
  646. ! #  appear in the machines.tab file.
  647.   #
  648.   #NISLOOKUP    = -DNISLOOKUP
  649.   #------------------------------------------------------------------------
  650.   #  If you don't want faces to use full domain names for extracting face
  651. --- 97,110 ----
  652.   #NEWSINCDIR    = -I$(OPENWINHOME)/include
  653.   #NEWSLIBDIR    = -L$(OPENWINHOME)/lib
  654.   #------------------------------------------------------------------------
  655. ! #  Uncomment the following line to use the Sun Network Information
  656.   #  Services (NIS, formerly YP) to look for hosts which do not explicitly
  657. ! #  appear in the machines.tab file. When used with DNSLOOKUP, DNSLOOKUP
  658. ! #  takes precedance.
  659.   #
  660. + #  Note that the domain name will be converted to lower case before
  661. + #  attempting to match in the machines file, or create an icon filename.
  662. + #
  663.   #NISLOOKUP    = -DNISLOOKUP
  664.   #------------------------------------------------------------------------
  665.   #  If you don't want faces to use full domain names for extracting face
  666. ***************
  667. *** 97,102 ****
  668. --- 126,137 ----
  669.   #
  670.   #PERIOD           = -DPERIOD=30
  671.   #------------------------------------------------------------------------
  672. + #  By default, faces will examine printer queues a la Berkeley Style.
  673. + #  Alternatively, if you have the PLP printer spooling system running, then
  674. + #  uncomment the next line.
  675. + #
  676. + #PLP              = -DPLP
  677. + #-------------------------------------------------------------------------
  678.   #  Faces is designed to work on a big-endian machine by default. If you
  679.   #  are compiling for a little-endian machine (such as the Sun 386i), then
  680.   #  you need to uncomment the following line.
  681. ***************
  682. *** 109,114 ****
  683. --- 144,154 ----
  684.   #
  685.   #SELTYPE        = -DNO_43SELECT
  686.   #------------------------------------------------------------------------
  687. + #  If the pending mail for users is in a different directory than
  688. + #  /usr/spool/mail, uncomment the following and set appropriately.
  689. + #
  690. + #SPOOLDIR    = -DSPOOLDIR=\"/usr/mail\"
  691. + #------------------------------------------------------------------------
  692.   #  If faces is setup to monitor mail, then the name of the default
  693.   #  spoolfile is /usr/spool/mail/username. An alternative spoolfile name
  694.   #  can be given by uncommenting the following line and setting
  695. ***************
  696. *** 119,125 ****
  697.   #  If you are running on a Unix System V machine, then you should uncomment
  698.   #  the next definition.
  699.   #
  700. ! #SYSV        = -DSYSV
  701.   #--------------------------------------------------------------------------
  702.   #  If you are running SunOS v3.x, then pr_ttext doesn't exist, and
  703.   #  you must uncomment this definition.
  704. --- 159,165 ----
  705.   #  If you are running on a Unix System V machine, then you should uncomment
  706.   #  the next definition.
  707.   #
  708. ! #SYSV        = -DSYSV32
  709.   #--------------------------------------------------------------------------
  710.   #  If you are running SunOS v3.x, then pr_ttext doesn't exist, and
  711.   #  you must uncomment this definition.
  712. ***************
  713. *** 173,183 ****
  714.   #
  715.   #  Compilation flags and standard macro definitions.
  716.   #
  717. ! CDEFS        = $(BACKGROUND) $(DONTSHOWNO) $(DONTSHOWTIME) \
  718.             $(DONTSHOWUSER) $(CFACEDIR) $(FMONTYPE) $(INVERT) \
  719. !           $(NEWSINCDIR) $(NISLOOKUP) $(NODOMAINS) $(NOINDEX) \
  720. !           $(PERIOD) $(REVORDER) $(SELTYPE) $(SPOOLFILE) $(SYSV) \
  721. !           $(TTEXT) $(UPDATE) $(X11INCDIR) $(XVIEWINCDIR) $(DEBUG)
  722.   CCOMP        = -g
  723.   CFLAGS        = $(CCOMP) $(CDEFS)
  724.   #
  725. --- 213,224 ----
  726.   #
  727.   #  Compilation flags and standard macro definitions.
  728.   #
  729. ! CDEFS        = $(BACKGROUND) $(DNSLOOKUP) $(DONTSHOWNO) $(DONTSHOWTIME) \
  730.             $(DONTSHOWUSER) $(CFACEDIR) $(FMONTYPE) $(INVERT) \
  731. !           $(NAMEUNKNOWN) $(NEWSINCDIR) $(NISLOOKUP) $(NODOMAINS) \
  732. !           $(NOINDEX) $(PERIOD) $(PLP) $(REVORDER) $(SELTYPE) \
  733. !           $(SPOOLDIR) $(SPOOLFILE) $(SYSV) $(TTEXT) $(UPDATE) \
  734. !           $(X11INCDIR) $(XVIEWINCDIR) $(DEBUG)
  735.   CCOMP        = -g
  736.   CFLAGS        = $(CCOMP) $(CDEFS)
  737.   #
  738. ***************
  739. *** 190,196 ****
  740.   
  741.   STDSRCS        = get.c main.c mon.c parsefrom.c rec.c
  742.   STDOBJS        = get.o main.o mon.o parsefrom.o rec.o
  743. ! STDLIBS        = compface/libcompface.a
  744.   
  745.   COMPFACE    = compface
  746.   FACES        = facedir
  747. --- 231,237 ----
  748.   
  749.   STDSRCS        = get.c main.c mon.c parsefrom.c rec.c
  750.   STDOBJS        = get.o main.o mon.o parsefrom.o rec.o
  751. ! STDLIBS        = compface/libcompface.a $(DNSLIB)
  752.   
  753.   COMPFACE    = compface
  754.   FACES        = facedir
  755. ***************
  756. *** 206,217 ****
  757.   SFILES2        = get.c parsefrom.c news.c sunview.c
  758.   SFILES3        = xview.c x11.c $(HDRS)
  759.   SFILES4        = CHANGES README TODO MANIFEST FILES Makefile
  760. ! SFILES5        = faces.1 face_update.1 faces_cps.cps face_update $(IMAGES)
  761.   SFILES6        = $(FACES) $(FILTERS)
  762.   SFILES7        = $(COMPFACE)
  763.   
  764.   NEWSLIBS    = $(NEWSLIBDIR) -lcps
  765.   SVIEWLIBS    = -lsuntool -lsunwindow -lpixrect
  766.   X11LIBS        = $(X11LIBDIR) -lX11
  767.   XVIEWLIBS    = $(XVIEWLIBDIR) -lxview -lolgx -lX11
  768.   
  769. --- 247,266 ----
  770.   SFILES2        = get.c parsefrom.c news.c sunview.c
  771.   SFILES3        = xview.c x11.c $(HDRS)
  772.   SFILES4        = CHANGES README TODO MANIFEST FILES Makefile
  773. ! SFILES5        = faces.1 face_update.1 faces_cps.cps face_update \
  774. !           mush.xface.patch $(IMAGES)
  775.   SFILES6        = $(FACES) $(FILTERS)
  776.   SFILES7        = $(COMPFACE)
  777.   
  778.   NEWSLIBS    = $(NEWSLIBDIR) -lcps
  779.   SVIEWLIBS    = -lsuntool -lsunwindow -lpixrect
  780. + #
  781. + #  The following definition can vary. Here are a few examples:
  782. + #
  783. + #  Sun/MIT X11R4:                  $(X11LIBDIR) -lX11
  784. + #  Dell Unix (Interactive 386/ix): $(X11LIBDIR) -lX11 -linet
  785. + #  AT&T's XWIN:                    $(X11LIBDIR) -lX11_s -lc_s -lnsl_s -lpt
  786. + #
  787.   X11LIBS        = $(X11LIBDIR) -lX11
  788.   XVIEWLIBS    = $(XVIEWLIBDIR) -lxview -lolgx -lX11
  789.   
  790.  
  791. ------- MANIFEST -------
  792. *** /tmp/da09697    Tue Aug 14 07:20:23 1990
  793. --- MANIFEST    Mon Aug  6 11:52:08 1990
  794. ***************
  795. *** 11,16 ****
  796. --- 11,17 ----
  797.   Makefile                               |    4
  798.   faces.1                                |    5
  799.   face_update.1                          |    5
  800. + mush.xface.patch                       |    5
  801.   face_update                            |    4
  802.   main.c                                 |    1
  803.   get.c                                  |    2
  804.  
  805. ------- x11.c -------
  806. *** /tmp/da09700    Tue Aug 14 07:20:24 1990
  807. --- x11.c    Sat Aug  4 16:58:48 1990
  808. ***************
  809. *** 62,68 ****
  810.   
  811.   unsigned long gc_mask ;
  812.   int screen ;
  813. - int toclear ;                /* Set if faces icon needs clearing. */
  814.   int xfd ;                    /* File descriptor for X11 server connection. */
  815.   unsigned int depth ;
  816.   long backgnd, foregnd ;
  817. --- 62,67 ----
  818. ***************
  819. *** 76,81 ****
  820. --- 75,81 ----
  821.     if (mtype == MONNEW)
  822.       XCopyArea(dpy, pr[(int) dtype], pr[(int) dtype], gc, 0, 0,
  823.                 (maxcols-1)*imagewidth, imageheight, imagewidth, 0) ;
  824.     XCopyArea(dpy, images[(int) itype], pr[(int) dtype], gc, 0, 0,
  825.               imagewidth, imageheight, column*imagewidth, row*imageheight) ;
  826.   }
  827. ***************
  828. *** 89,95 ****
  829. --- 89,99 ----
  830.     while (beeps > 0)
  831.       {
  832.         XBell(dpy, 56) ;
  833. + #ifndef SYSV32
  834.         SELECT(0, (fd_set *) 0, (fd_set *) 0, (fd_set *) 0, &btime) ;
  835. + #else
  836. +       sleep(1) ;
  837. + #endif /*SYSV32*/
  838.         beeps-- ;
  839.       }
  840.     while (flashes > 0)
  841. ***************
  842. *** 148,153 ****
  843. --- 152,167 ----
  844.   }
  845.   
  846.   
  847. + draw_screen(wdtype)
  848. + enum disp_type wdtype ;
  849. + {
  850. +   XCopyArea(dpy, pr[(int) wdtype], frame[F_WINDOW], gc, 0, 0,
  851. +             (unsigned int) width, (unsigned int) height, 0, 0) ;
  852. +   XCopyArea(dpy, pr[(int) DISP_ICON], frame[F_ICON], gc, 0, 0,
  853. +             (unsigned int) width, (unsigned int) height, 0, 0) ;
  854. + }
  855.   init_font()
  856.   {
  857.     if ((sfont = XLoadQueryFont(dpy, FONT)) == NULL)
  858. ***************
  859. *** 167,172 ****
  860. --- 181,188 ----
  861.     char *def_geom ;
  862.     int i, j ;
  863.     unsigned short buf[256] ;
  864. +   Colormap cmap ;
  865. +   XColor selcolor ;
  866.   
  867.     if ((dpy = XOpenDisplay(display)) == NULL)
  868.       {
  869. ***************
  870. *** 189,196 ****
  871.         (def_geom = XGetDefault(dpy, progname, "Geometry")) != NULL)
  872.       STRCPY(geometry, def_geom) ;
  873.   
  874. !   foregnd = BlackPixel(dpy, screen) ;
  875. !   backgnd = WhitePixel(dpy, screen) ;
  876.     depth = DefaultDepth(dpy, screen) ;
  877.   
  878.     init_font() ;
  879. --- 205,227 ----
  880.         (def_geom = XGetDefault(dpy, progname, "Geometry")) != NULL)
  881.       STRCPY(geometry, def_geom) ;
  882.   
  883. !   cmap = DefaultColormap(dpy, screen) ;
  884. !   if (strlen(fgcolor) == 0 || XDefaultDepth(dpy, screen) <= 2)
  885. !     foregnd = BlackPixel(dpy, screen) ;
  886. !   else
  887. !     {
  888. !       XParseColor(dpy, cmap, fgcolor, &selcolor) ;
  889. !       XAllocColor(dpy, cmap, &selcolor) ;
  890. !       foregnd = selcolor.pixel ;
  891. !     }
  892. !   if (strlen(bgcolor) == 0 || XDefaultDepth(dpy, screen) <= 2)
  893. !     backgnd = WhitePixel(dpy, screen) ;
  894. !   else
  895. !     {
  896. !       XParseColor(dpy, cmap, bgcolor, &selcolor) ;
  897. !       XAllocColor(dpy, cmap, &selcolor) ;
  898. !       backgnd = selcolor.pixel ;
  899. !     }
  900.     depth = DefaultDepth(dpy, screen) ;
  901.   
  902.     init_font() ;
  903. ***************
  904. *** 224,230 ****
  905.     gtype = X11 ;
  906.     pr[(int) DISP_NAME] = pr[(int) DISP_OTHER] = NULL ;
  907.     old_pr[(int) DISP_NAME] = old_pr[(int) DISP_OTHER] = NULL ;
  908. -   toclear = 0 ;
  909.     return(0) ;
  910.   }
  911.   
  912. --- 255,260 ----
  913. ***************
  914. *** 408,420 ****
  915.         first_time = 0 ;
  916.       }
  917.   
  918. -   XCopyArea(dpy, pr[(int) DISP_ICON], frame[F_ICON], gc, 0, 0,
  919. -             (unsigned int) width, (unsigned int) height, 0, 0) ;
  920.     XResizeWindow(dpy, frame[F_WINDOW],
  921.                   (unsigned int) width, (unsigned int) height) ;
  922. !   XCopyArea(dpy, pr[(int) wdtype], frame[F_WINDOW], gc, 0, 0,
  923. !             (unsigned int) width, (unsigned int) height, 0, 0) ;
  924.    
  925.     if (newmail) beep_flash(beeps, flashes) ;
  926.     if (old_pr[(int) DISP_NAME])  XFreePixmap(dpy, old_pr[(int) DISP_NAME]) ;
  927. --- 438,446 ----
  928.         first_time = 0 ;
  929.       }
  930.   
  931.     XResizeWindow(dpy, frame[F_WINDOW],
  932.                   (unsigned int) width, (unsigned int) height) ;
  933. !   draw_screen(wdtype) ;
  934.    
  935.     if (newmail) beep_flash(beeps, flashes) ;
  936.     if (old_pr[(int) DISP_NAME])  XFreePixmap(dpy, old_pr[(int) DISP_NAME]) ;
  937. ***************
  938. *** 439,444 ****
  939. --- 465,471 ----
  940.     for (;;)
  941.       {
  942.         readmask = fullmask ;
  943. + #ifndef SYSV32
  944.   #ifdef NO_43SELECT
  945.         SELECT(32, &readmask, 0, 0, &tval) ;
  946.         if (readmask && (1 << xfd))
  947. ***************
  948. *** 446,451 ****
  949. --- 473,491 ----
  950.         SELECT(FD_SETSIZE, &readmask, (fd_set *) 0, (fd_set *) 0, &tval) ;
  951.         if (FD_ISSET(xfd, &readmask))
  952.   #endif /*NO_43SELECT*/
  953. + #else
  954. +         {
  955. +           int contr = 0 ;       /* System 5.3.2.2 doesn't have a select */
  956. +           sleep(1) ;
  957. +           while ((XPending(dpy) == 0) && (contr < period))
  958. +             {
  959. +               sleep(5) ;
  960. +               contr += 5 ;
  961. +             }
  962. +         }
  963. +       if (XPending(dpy))
  964. + #endif /*SYSV32*/
  965.           do
  966.             {
  967.               XNextEvent(dpy, &event) ;
  968. ***************
  969. *** 465,476 ****
  970.               else if (event.type == Expose && event.xexpose.count == 0)
  971.                 {
  972.                   while (XCheckTypedEvent(dpy, Expose, &event)) /* do nothing. */ ;
  973. !                 XCopyArea(dpy, pr[(int) wdtype],
  974. !                           frame[F_WINDOW], gc, 0, 0,
  975. !                           (unsigned int) width, (unsigned int) height, 0, 0) ;
  976. !                 XCopyArea(dpy, pr[(int) DISP_ICON],
  977. !                           frame[F_ICON], gc, 0, 0,
  978. !                           (unsigned int) width, (unsigned int) height, 0, 0) ;
  979.                 }
  980.   
  981.   /* ButtonPress. */
  982. --- 505,511 ----
  983.               else if (event.type == Expose && event.xexpose.count == 0)
  984.                 {
  985.                   while (XCheckTypedEvent(dpy, Expose, &event)) /* do nothing. */ ;
  986. !                 draw_screen(wdtype) ;
  987.                 }
  988.   
  989.   /* ButtonPress. */
  990. ***************
  991. *** 479,503 ****
  992.                        event.xbutton.button == Button1)
  993.                 {
  994.                   wdtype = (wdtype == DISP_NAME) ? DISP_OTHER : DISP_NAME ;
  995. !                 XCopyArea(dpy, pr[(int) wdtype],
  996. !                           frame[F_WINDOW], gc, 0, 0,
  997. !                           (unsigned int) width, (unsigned int) height, 0, 0) ;
  998.                 }
  999.   
  1000.   /* KeyPress. */
  1001.   
  1002. !             else if (mtype == MONNEW && event.type == KeyPress)
  1003.                 {
  1004.                   key_event = (XKeyPressedEvent *) &event ;
  1005.                   (void) XLookupString(key_event, chs, 1, (KeySym *) NULL,
  1006.                                        (XComposeStatus *) NULL) ;
  1007. !                 if (chs[0] == DEL)
  1008. !                   {
  1009. !                     repl_image(DISP_NAME,  CUROFF, width, height) ;
  1010. !                     repl_image(DISP_OTHER, CUROFF, width, height) ;
  1011. !                     toclear = 1 ;
  1012. !                     do_check() ;
  1013. !                   }
  1014.                 }
  1015.             }
  1016.           while (XPending(dpy)) ;
  1017. --- 514,530 ----
  1018.                        event.xbutton.button == Button1)
  1019.                 {
  1020.                   wdtype = (wdtype == DISP_NAME) ? DISP_OTHER : DISP_NAME ;
  1021. !                 draw_screen(wdtype) ;
  1022.                 }
  1023.   
  1024.   /* KeyPress. */
  1025.   
  1026. !             else if (event.type == KeyPress)
  1027.                 {
  1028.                   key_event = (XKeyPressedEvent *) &event ;
  1029.                   (void) XLookupString(key_event, chs, 1, (KeySym *) NULL,
  1030.                                        (XComposeStatus *) NULL) ;
  1031. !                 do_key(chs[0]) ;
  1032.                 }
  1033.             }
  1034.           while (XPending(dpy)) ;
  1035.  
  1036. ------- TODO -------
  1037. *** /tmp/da09703    Tue Aug 14 07:20:25 1990
  1038. --- TODO    Tue Aug 14 06:47:04 1990
  1039. ***************
  1040. *** 3,18 ****
  1041.      seem to work at all, and of course its the wrong way round
  1042.      for the uk anyway.
  1043.   
  1044. ! 2/ Alias file people.tab should be capable of understanding:
  1045. !    sunaus/richb=sun/rburridge
  1046. !    or some such format.
  1047. ! 3/ From Ian Donaldson <rcodi@melomys.co.rmit.oz>
  1048.      Is it possible to have the faces cleared automatically once the
  1049.      mail has been read?  I'm clearing by clicking on the window at
  1050.      the moment.
  1051.   
  1052. ! 4/ From Pat Lashley <patl@Sun.COM>
  1053.      Have you given any thought to how to support multiple windowing systems at
  1054.      execution time?  I am currently using the sun386i version of architecture
  1055.      independant /vol trees to make locally installed programs available
  1056. --- 3,14 ----
  1057.      seem to work at all, and of course its the wrong way round
  1058.      for the uk anyway.
  1059.   
  1060. ! 2/ From Ian Donaldson <rcodi@melomys.co.rmit.oz>
  1061.      Is it possible to have the faces cleared automatically once the
  1062.      mail has been read?  I'm clearing by clicking on the window at
  1063.      the moment.
  1064.   
  1065. ! 3/ From Pat Lashley <patl@Sun.COM>
  1066.      Have you given any thought to how to support multiple windowing systems at
  1067.      execution time?  I am currently using the sun386i version of architecture
  1068.      independant /vol trees to make locally installed programs available
  1069. ***************
  1070. *** 23,58 ****
  1071.      windowing system is in use, and envoke the appropriate binary. The difficulty
  1072.      is in how to determine which system is in use.
  1073.   
  1074. ! 5/ From: Chris Orgill, cho%cs.aber.ac.uk@uunet.uu.net
  1075.      How about allowing the Sunview version to use arbitrary size Sun icons ?
  1076.   
  1077. ! 6/ From Lindsay F. Marshall <Lindsay.Marshall%newcastle.ac.uk@munnari.oz>
  1078.      There is a byte-order assumption somewhere that screws up
  1079.      any X bitmaps read in from a file - why dont you use the
  1080.      procedure provided by the system rather than writing your
  1081.      own?? That copes with the problems correctly.
  1082.   
  1083. ! 7/ The NeWS version needs to be finished.
  1084.      Remaining problems are:
  1085.   
  1086.       (a) There are two warnings on compiling news.c, due to FILE operations
  1087.           being performed on PSFILE variables.
  1088.   
  1089. !     (b) The new input functionality (click left mouse and Del) has to be
  1090. !         added in.
  1091.   
  1092. ! 8/ With the XView version, add a Properties pinup window which would
  1093.      allow you to change the various monitoring options on the fly.
  1094.   
  1095. ! 9/ Add in audio capabilities.
  1096.   
  1097. ! 10/ From Pat Lashley <patl@Sun.COM>
  1098. !     There is no reason that FaceSaver images couldn't be parsed by faces and
  1099. !     sent to NeWS with the appropriate transformation matrix to squeeze it down
  1100. !     to icon size.  Let the NeWS PostScript interpreter do the bit
  1101. !     compression/dithering.
  1102.   
  1103. ! 11/ If an X-Face is found inside a piece of mail that has been forwarded
  1104.       inside another mail item, and the -U option is set, then it is possible
  1105.       to update the wrong face in the faces database. The only clean solution
  1106.       to this, is if faces only recognises X-Face lines in the mail header.
  1107. --- 19,54 ----
  1108.      windowing system is in use, and envoke the appropriate binary. The difficulty
  1109.      is in how to determine which system is in use.
  1110.   
  1111. ! 4/ From: Chris Orgill, cho%cs.aber.ac.uk@uunet.uu.net
  1112.      How about allowing the Sunview version to use arbitrary size Sun icons ?
  1113.   
  1114. ! 5/ From Lindsay F. Marshall <Lindsay.Marshall%newcastle.ac.uk@munnari.oz>
  1115.      There is a byte-order assumption somewhere that screws up
  1116.      any X bitmaps read in from a file - why dont you use the
  1117.      procedure provided by the system rather than writing your
  1118.      own?? That copes with the problems correctly.
  1119.   
  1120. ! 6/ The NeWS version needs to be finished.
  1121.      Remaining problems are:
  1122.   
  1123.       (a) There are two warnings on compiling news.c, due to FILE operations
  1124.           being performed on PSFILE variables.
  1125.   
  1126. !     (b) The new input functionality (click left mouse, Del, ^L and q) has
  1127. !         to be added in.
  1128.   
  1129. ! 7/ With the XView version, add a Properties pinup window which would
  1130.      allow you to change the various monitoring options on the fly.
  1131.   
  1132. ! 8/ Add in audio capabilities.
  1133.   
  1134. ! 9/ From Pat Lashley <patl@Sun.COM>
  1135. !    There is no reason that FaceSaver images couldn't be parsed by faces and
  1136. !    sent to NeWS with the appropriate transformation matrix to squeeze it down
  1137. !    to icon size.  Let the NeWS PostScript interpreter do the bit
  1138. !    compression/dithering.
  1139.   
  1140. ! 10/ If an X-Face is found inside a piece of mail that has been forwarded
  1141.       inside another mail item, and the -U option is set, then it is possible
  1142.       to update the wrong face in the faces database. The only clean solution
  1143.       to this, is if faces only recognises X-Face lines in the mail header.
  1144. ***************
  1145. *** 62,68 ****
  1146.       resolved by a flag which would restrict X-Face: recognition to the header
  1147.       or the first non-blank line of the body.
  1148.   
  1149. ! 12/ From Pat Lashley <patl@Sun.COM>
  1150.       An entry of the form `+domainname=community' in the machines.tab file to
  1151.       indicate that if a hostname is found without domain specifier, and it
  1152.       doesn't match any other machines.tab entry, and YP (oops, NIS) access to
  1153. --- 58,64 ----
  1154.       resolved by a flag which would restrict X-Face: recognition to the header
  1155.       or the first non-blank line of the body.
  1156.   
  1157. ! 11/ From Pat Lashley <patl@Sun.COM>
  1158.       An entry of the form `+domainname=community' in the machines.tab file to
  1159.       indicate that if a hostname is found without domain specifier, and it
  1160.       doesn't match any other machines.tab entry, and YP (oops, NIS) access to
  1161. ***************
  1162. *** 71,109 ****
  1163.       indicates that the current NIS domain should be used.  This should
  1164.       probably be enabled by a compile-time option for those who don't run NIS.
  1165.   
  1166. ! 13/ From Pat Lashley <patl@Sun.COM>
  1167.       An option to display unknown users individually with the username,
  1168.       instead of clustered under a single `unknown' user.  Really hot would be
  1169.       some way to specify this on a per-community basis...
  1170.   
  1171. ! 14/ From Pat Lashley <patl@Sun.COM>
  1172.       Multiple face directory hierarchies. I.e:
  1173.       `-f $HOME/facedir -f /import/group/facedir -f /import/global/facedir ...'
  1174.       The order of specification would indicate the search order.
  1175.   
  1176. ! 15/ From Pat Lashley <patl@Sun.COM>
  1177.       Accept SIGHUP as an indication that various internal databases should be
  1178.       updated from the files (i.e. machines.tab), and that the display should be
  1179.       immediatly updated to reflect current state instead of waiting for the
  1180.       polling period to end.
  1181.   
  1182. ! 16/ From Pat Lashley <patl@Sun.COM>
  1183.       Accept SIGALRM as an indication that the current polling period should be
  1184.       immediatly terminated, and the display updated.
  1185.   
  1186. ! 17/ From Pat Lashley <patl@Sun.COM>
  1187.       More internal comments and a general design document.
  1188.   
  1189. ! 18/ Provide a template of what each of the independent graphics routine do,
  1190.       to aid porting to new graphics environments.
  1191.   
  1192. ! 19/ Add an option to disable flashing and beeping when new mail arrives.
  1193.   
  1194. ! 20/ From Pat Lashley <patl@Sun.COM>
  1195.       Change window header to show what is being monitored (mail, lp1, users,
  1196.       etc.)
  1197.   
  1198. ! 21/ From Pat Lashley <patl@Sun.COM>
  1199.       A mixed-mode version which would use xview for the basic windowing and
  1200.       property sheets; but use NeWS for the rendering. It is, of course,
  1201.       dependant upon having the X/NeWS server, but there may be some way to
  1202. --- 67,105 ----
  1203.       indicates that the current NIS domain should be used.  This should
  1204.       probably be enabled by a compile-time option for those who don't run NIS.
  1205.   
  1206. ! 12/ From Pat Lashley <patl@Sun.COM>
  1207.       An option to display unknown users individually with the username,
  1208.       instead of clustered under a single `unknown' user.  Really hot would be
  1209.       some way to specify this on a per-community basis...
  1210.   
  1211. ! 13/ From Pat Lashley <patl@Sun.COM>
  1212.       Multiple face directory hierarchies. I.e:
  1213.       `-f $HOME/facedir -f /import/group/facedir -f /import/global/facedir ...'
  1214.       The order of specification would indicate the search order.
  1215.   
  1216. ! 14/ From Pat Lashley <patl@Sun.COM>
  1217.       Accept SIGHUP as an indication that various internal databases should be
  1218.       updated from the files (i.e. machines.tab), and that the display should be
  1219.       immediatly updated to reflect current state instead of waiting for the
  1220.       polling period to end.
  1221.   
  1222. ! 15/ From Pat Lashley <patl@Sun.COM>
  1223.       Accept SIGALRM as an indication that the current polling period should be
  1224.       immediatly terminated, and the display updated.
  1225.   
  1226. ! 16/ From Pat Lashley <patl@Sun.COM>
  1227.       More internal comments and a general design document.
  1228.   
  1229. ! 17/ Provide a template of what each of the independent graphics routine do,
  1230.       to aid porting to new graphics environments.
  1231.   
  1232. ! 18/ Add an option to disable flashing and beeping when new mail arrives.
  1233.   
  1234. ! 19/ From Pat Lashley <patl@Sun.COM>
  1235.       Change window header to show what is being monitored (mail, lp1, users,
  1236.       etc.)
  1237.   
  1238. ! 20/ From Pat Lashley <patl@Sun.COM>
  1239.       A mixed-mode version which would use xview for the basic windowing and
  1240.       property sheets; but use NeWS for the rendering. It is, of course,
  1241.       dependant upon having the X/NeWS server, but there may be some way to
  1242. ***************
  1243. *** 110,127 ****
  1244.       determine at run-time whether the NeWS operations are available, or
  1245.       whether to stick to XView/X11 mechanisms.
  1246.   
  1247. ! 22/ From Steven M. Miller <miller@SCTC.COM>
  1248.       I would like to use -iconic to specify iconic mode for X. This would
  1249.       require change -i to -I for inverse in get.c and having -i to set iconic=1.
  1250.   
  1251. ! 23/ From Steven M. Miller <miller@SCTC.COM>
  1252.       Under X, when faces is started up in iconic mode nothing is displayed in
  1253.       the icon until the icon is clicked on and opened and then closed again.
  1254.   
  1255. ! 24/ From Kee Hinckley <nazgul@alphalpha.com>
  1256.       Any possibility of changing that header to an RFC1154 (I think that's
  1257.       the number) conformant form?  Namely an encoding field in the
  1258.       header (presumbably with a new name for the faces format, or using
  1259.       one of the existing ones (G3Fax uuencode would probably be good)).
  1260.   
  1261. ! 25/ Optimise.
  1262. --- 106,146 ----
  1263.       determine at run-time whether the NeWS operations are available, or
  1264.       whether to stick to XView/X11 mechanisms.
  1265.   
  1266. ! 21/ From Steven M. Miller <miller@SCTC.COM>
  1267.       I would like to use -iconic to specify iconic mode for X. This would
  1268.       require change -i to -I for inverse in get.c and having -i to set iconic=1.
  1269.   
  1270. ! 22/ From Steven M. Miller <miller@SCTC.COM>
  1271.       Under X, when faces is started up in iconic mode nothing is displayed in
  1272.       the icon until the icon is clicked on and opened and then closed again.
  1273.   
  1274. ! 23/ From Kee Hinckley <nazgul@alphalpha.com>
  1275.       Any possibility of changing that header to an RFC1154 (I think that's
  1276.       the number) conformant form?  Namely an encoding field in the
  1277.       header (presumbably with a new name for the faces format, or using
  1278.       one of the existing ones (G3Fax uuencode would probably be good)).
  1279.   
  1280. ! 24/ From Michael Schmidt <michael@uni-paderborn.de>
  1281. !     Perhaps my configuration (SparcStation, SunOS4.0.3, X11R4, twm with
  1282. !     ForceIcons, IconManager and IconRegion) is wierd, but... The icon is
  1283. !     not placed in the IconRegion, but just at 0x0 (or 1x1, or so). Then I
  1284. !     cannot deiconify the icon by a mouse click (all other icons deiconify
  1285. !     on a left button click).
  1286. ! 25/ Get the SunView, XView and NeWS drivers to use the -bg and -fg color
  1287. !     options.
  1288. ! 26/ From Ken Wood <kwood@adl.austek.oz.au>
  1289. !     Sometimes the display gets stuck while changing from "No mail" to a
  1290. !     single face or vice-versa. xfaces just displays a plain grey window.
  1291. ! 27/ From Ken Wood <kwood@adl.austek.oz.au>
  1292. !     Quite often, users who don't have a face file are shown as "unknown"
  1293. !     with the unknown face, rather than putting the username with the unknown
  1294. !     face.
  1295. ! 28/ From Ken Wood <kwood@adl.austek.oz.au>
  1296. !     Do you have any plans to get xfaces to read geometry etc from the
  1297. !     database ?
  1298. ! 29/ Optimise.
  1299.  
  1300. ------- xview.c -------
  1301. *** /tmp/da09706    Tue Aug 14 07:20:26 1990
  1302. --- xview.c    Sat Aug  4 03:31:06 1990
  1303. ***************
  1304. *** 58,64 ****
  1305.   XFontStruct *sfont ;
  1306.   XGCValues gc_val ;            /* Used to setup graphics context values. */
  1307.   int screen ;                  /* Default graphics display screen. */
  1308. - int toclear ;                 /* Set if faces icon needs clearing. */
  1309.   unsigned int depth ;
  1310.   unsigned long backgnd ;       /* Default background color. */
  1311.   unsigned long foregnd ;       /* Default foreground color. */
  1312. --- 58,63 ----
  1313. ***************
  1314. *** 102,117 ****
  1315.     if (event_is_down(event) && nextc == MS_LEFT)
  1316.       {
  1317.         wdtype = (wdtype == DISP_NAME) ? DISP_OTHER : DISP_NAME ;
  1318. !       XCopyArea(dpy, pr[(int) wdtype], xid[F_WINDOW], gc, 0, 0,
  1319. !                 width, height, 0, 0) ;
  1320.       }
  1321. !   else if (mtype == MONNEW && event_is_ascii(event) && nextc == DEL)
  1322. !     {
  1323. !       repl_image(DISP_NAME,  CUROFF, width, height) ;
  1324. !       repl_image(DISP_OTHER, CUROFF, width, height) ;
  1325. !       toclear = 1 ;
  1326. !       do_check() ;
  1327. !     }
  1328.   }
  1329.   
  1330.   
  1331. --- 101,109 ----
  1332.     if (event_is_down(event) && nextc == MS_LEFT)
  1333.       {
  1334.         wdtype = (wdtype == DISP_NAME) ? DISP_OTHER : DISP_NAME ;
  1335. !       draw_screen(wdtype) ;
  1336.       }
  1337. !   else if (event_is_ascii(event)) do_key(nextc) ;
  1338.   }
  1339.   
  1340.   
  1341. ***************
  1342. *** 160,165 ****
  1343. --- 152,165 ----
  1344.   }
  1345.   
  1346.   
  1347. + draw_screen(wdtype)
  1348. + enum disp_type wdtype ;
  1349. + {
  1350. +   XCopyArea(dpy, pr[(int) wdtype], xid[F_WINDOW], gc, 0, 0,
  1351. +             width, height, 0, 0) ;
  1352. + }
  1353.   static Notify_value
  1354.   frame_interpose(frame, event, arg, type)
  1355.   Frame frame ;
  1356. ***************
  1357. *** 244,250 ****
  1358.     gtype = XVIEW ;
  1359.     pr[(int) DISP_NAME] = pr[(int) DISP_OTHER] = NULL ;
  1360.     old_pr[(int) DISP_NAME] = old_pr[(int) DISP_OTHER] = NULL ;
  1361. -   toclear = 0 ;
  1362.     return 0 ;
  1363.   }
  1364.   
  1365. --- 244,249 ----
  1366. ***************
  1367. *** 334,341 ****
  1368.   Xv_Window window ;
  1369.   Rectlist *repaint_area ;
  1370.   {
  1371. !   XCopyArea(dpy, pr[(int) wdtype], xid[F_WINDOW], gc, 0, 0,
  1372. !             (unsigned int) width, (unsigned int) height, 0, 0) ;
  1373.   }
  1374.   
  1375.   
  1376. --- 333,339 ----
  1377.   Xv_Window window ;
  1378.   Rectlist *repaint_area ;
  1379.   {
  1380. !   draw_screen(wdtype) ;
  1381.   }
  1382.   
  1383.   
  1384. ***************
  1385. *** 374,382 ****
  1386.     temprect->r_height = height ;
  1387.     temprect->r_width = width ;
  1388.     XV_SET(frame, FRAME_OPEN_RECT, temprect, 0) ;
  1389. !   XCopyArea(dpy, pr[(int) wdtype], xid[F_WINDOW], gc, 0, 0,
  1390. !             (unsigned int) width, (unsigned int) height, 0, 0) ;
  1391.   
  1392.     if (newmail) beep_flash(beeps, flashes) ;
  1393.     if (old_pr[(int) DISP_NAME])  XFreePixmap(dpy, old_pr[(int) DISP_NAME]) ;
  1394. --- 372,378 ----
  1395.     temprect->r_height = height ;
  1396.     temprect->r_width = width ;
  1397.     XV_SET(frame, FRAME_OPEN_RECT, temprect, 0) ;
  1398. !   draw_screen(wdtype) ;
  1399.   
  1400.     if (newmail) beep_flash(beeps, flashes) ;
  1401.     if (old_pr[(int) DISP_NAME])  XFreePixmap(dpy, old_pr[(int) DISP_NAME]) ;
  1402.  
  1403. ------- CHANGES -------
  1404. *** /tmp/da09709    Tue Aug 14 07:20:26 1990
  1405. --- CHANGES    Tue Aug 14 06:57:13 1990
  1406. ***************
  1407. *** 181,183 ****
  1408. --- 181,290 ----
  1409.          * From Chris Steinbroner <hesh@lll-crg.llnl.gov>
  1410.            ikon2icon in the filters directory uses index(), so you have to do
  1411.            the NOINDEX define stuff there too.
  1412. + v1.4 - patchlevel 7 - 6th August 1990.
  1413. +        * From Chris Steinbroner <hesh@lll-crg.llnl.gov>
  1414. +          From Bob Posert <psitech.psitech!bob@uunet.UU.NET>
  1415. +          Incoming mail is not always stored in /usr/spool/mail/username.
  1416. +          HP-UX and Dell Unix (Interactive 386/ix) store it in
  1417. +          /usr/mail/username. Another definition (SPOOLDIR), has been added
  1418. +          to the Makefile. The README file has also been updated.
  1419. +        * From Hugues Leroy <Hugues.Leroy@irisa.fr>
  1420. +          From Graham Dumpleton <grahamd@otc.otca.oz.au>
  1421. +          From Peter Chubb <peterc@softway.oz.au>
  1422. +          From Robert Adams <adams@trim.intel.com>
  1423. +          The parsefrom() function was not replacing a '\n' at the end of
  1424. +          a line with '\0' before preceding.
  1425. +        * From Michael Schmidt <michael@uni-paderborn.de>
  1426. +          The faces window now accepts two more keyboard characters:
  1427. +             q - to terminate the faces program.
  1428. +            ^L - to refresh the faces window.
  1429. +        * From Michael Schmidt <michael@uni-paderborn.de>
  1430. +          Added support for printer monitoring with the PLP printer
  1431. +          spooling system. Another definition (PLP) has been added to
  1432. +          the Makefile. The README file has been updated.
  1433. +        * From Chris Steinbroner <hesh@lll-crg.llnl.gov>
  1434. +          Diffs included to allow faces to run under HP-UX.
  1435. +        * From Robert Adams <adams@trim.intel.com>
  1436. +          Changed the SYSV definition to SYSV32 because I work with both
  1437. +      System V.3.2.2 and System V.4.0 from AT&T and they need different
  1438. +          defines.
  1439. +        * From Robert Adams <adams@trim.intel.com>
  1440. +          Added -bg and -fg to the parameter string and modified x11.c
  1441. +      to set the background and foreground colors. Currently this is
  1442. +          only available with the X11 graphics driver.
  1443. +        * From Robert Adams <adams@trim.intel.com>
  1444. +          people.tab now accepts the syntax "aliascomm/alias=comm/name"
  1445. +          to map a whole name (this is one of the TODO points).
  1446. +          It still accepts the old syntax. As a side effect, the
  1447. +          people.tab and machine.tab routines were re-written to be
  1448. +          better parsers and are now forgiving of white space.
  1449. +        * From Robert Adams <adams@trim.intel.com>
  1450. +          make_iconname was rewritten to get rid of the cut and paste
  1451. +          code and now is a gaggle of 'for' loops.
  1452. +        * From Robert Adams <adams@trim.intel.com>
  1453. +          From Michael Schmidt <michael@uni-paderborn.de>
  1454. +          The domain name parsing code in make_iconname was not working.
  1455. +          The problem was that the 'old_style' code 'goto'ed out of the
  1456. +          middle of the domain breakdown loop thus defeating same.
  1457. +        * From Robert Adams <adams@trim.intel.com>
  1458. +          The code for building the name for people.tab and machine.tab was
  1459. +          broken if an alternate directory ("-f") was specified (changes
  1460. +          in rec.c in read_alias and read_machines).
  1461. +        * From Robert Adams <adams@trim.intel.com>
  1462. +          If 'host' does not appear in an RFC822 address, the code would
  1463. +          assume "LOCAL".  The code has been fixed to assume 'hostname'
  1464. +          instead (fix to parsefrom.c).
  1465. +        * From Robert Adams <adams@trim.intel.com>
  1466. +          There was a strange bug that would cause icons on the end of the
  1467. +          list (after entries were deleted) to get mangled.  This usually
  1468. +          showed up as the NOMAIL icon not being shown but garbage being
  1469. +          shown instead.  The problem was that in 'garbage_collect', there
  1470. +          was a local variable 'last' that was hidding the global variable
  1471. +          of the same name and thus the global was not getting updated
  1472. +        * From Pat Lashley <patl@Sun.COM>
  1473. +          Added code to use the Domain Name Service to attempt to convert
  1474. +          unqualified hostnames, or hostnames with partial domains to fully
  1475. +          qualified domain names. Another definition (DNSLOOKUP) has been
  1476. +          added to the Makefile. The README file has been updated.
  1477. +        * From Pat Lashley <patl@Sun.COM>
  1478. +          When no icon is found for a given user, the unknown icon may be
  1479. +          displayed either with the user name, or labeled as `unknown'.
  1480. +          The former case provides the most information, the latter allows
  1481. +          all unknown users within a given community to be lumped into a
  1482. +          single image. Another definition (NAMEUNKNOWN) has been added to
  1483. +          the Makefile. The README file has been updated.
  1484. +        * From Pat Lashley <patl@Sun.COM>
  1485. +          Support is now included for multiple face directories. Faces
  1486. +          will search for the environment variable FACEPATH, and use this
  1487. +          as a list of colon separated face directories. See the manual
  1488. +          page for more details.
  1489. +        * Official support for X-Face lines was not included with patch #2
  1490. +          to mush v7.1. Dan and Bart suggested that instead, a new file
  1491. +          (mush.xface.patch) should be included with the faces distribution
  1492. +          which in an unofficial patch to mush v7.1.2, to allow that X-Face
  1493. +          support. The README, MANIFEST and FILES files have been updated.
  1494. +        * From Rod Whitby <rwhitby@austek.oz.au>
  1495. +          faces v.1.4.6 dumps core when the following message (cut down to the
  1496. +          smallest case) is in my mail box. This was a case of a valid X-Face:
  1497. +          being followed by a line starting with the word "X-Face ". Faces now
  1498. +          searches for "X-Face:" rather than "X-Face". This really needs to be
  1499. +          tightened up some more.
  1500.  
  1501. ------- FILES -------
  1502. *** /tmp/da09712    Tue Aug 14 07:20:27 1990
  1503. --- FILES    Mon Aug  6 11:54:02 1990
  1504. ***************
  1505. *** 12,17 ****
  1506. --- 12,18 ----
  1507.   faces.1         - the faces manual page (tbl + troff/nroff -man format).
  1508.   face_update     - shell script to automatically update the faces database.
  1509.   face_update.1   - the face_update manual page (troff/nroff -man format)
  1510. + mush.xface.patch - unofficial patch to mush v7.1.2 to support X-Face lines.
  1511.   
  1512.   main.c          - STANDARD SOURCE FILES: includes declarations and main().
  1513.   get.c           - routines to get information, objects, icons etc..
  1514.  
  1515. ------- parsefrom.c -------
  1516. *** /tmp/da09715    Tue Aug 14 07:20:28 1990
  1517. --- parsefrom.c    Sat Aug  4 19:18:57 1990
  1518. ***************
  1519. *** 15,26 ****
  1520.    */
  1521.   
  1522.   #include <stdio.h>
  1523. ! #ifdef SYSV
  1524.   #include <string.h>
  1525.   #else
  1526.   #include <strings.h>
  1527. ! #endif /*SYSV*/
  1528.   #include "faces.h"
  1529.   
  1530.   
  1531.   int
  1532. --- 15,27 ----
  1533.    */
  1534.   
  1535.   #include <stdio.h>
  1536. ! #ifdef SYSV32 || hpux
  1537.   #include <string.h>
  1538.   #else
  1539.   #include <strings.h>
  1540. ! #endif /* SYSV32 || hpux */
  1541.   #include "faces.h"
  1542. + #include "extern.h"
  1543.   
  1544.   
  1545.   int
  1546. ***************
  1547. *** 94,104 ****
  1548.           user = p;
  1549.       }
  1550.       if (host == NULL)
  1551. !         host = "LOCAL";
  1552.   #ifdef    NODOMAINS
  1553.       else if ((p = index(host, '.')) != NULL)
  1554.           *p = '\0';
  1555.   #endif    /* NODOMAINS */
  1556.       *hostp = host;
  1557.       *userp = user;
  1558.       return 1;
  1559. --- 95,107 ----
  1560.           user = p;
  1561.       }
  1562.       if (host == NULL)
  1563. !         host = hostname;
  1564.   #ifdef    NODOMAINS
  1565.       else if ((p = index(host, '.')) != NULL)
  1566.           *p = '\0';
  1567.   #endif    /* NODOMAINS */
  1568. +     if ((p = index(host, '\n')) != NULL)
  1569. +         *p = '\0';
  1570.       *hostp = host;
  1571.       *userp = user;
  1572.       return 1;
  1573. Funky_Stuff
  1574. len=`wc -c < patch.7`
  1575. if [ $len !=   101860 ] ; then
  1576. echo error: patch.7 was $len bytes long, should have been   101860
  1577. fi
  1578. fi # end of overwriting check
  1579. ------CUT HERE------CUT HERE------CUT HERE------CUT HERE------
  1580.  
  1581. Rich Burridge,          DOMAIN: richb@Aus.Sun.COM
  1582. Sun Microsystems.       ACSNET: richb@sunaus.sun.oz
  1583. PHONE: +61 2 413 2666   UUCP:   {uunet,mcvax,ukc}!munnari!sunaus.oz!richb
  1584.  
  1585.