home *** CD-ROM | disk | FTP | other *** search
/ rtfm.mit.edu / 2014.07.rtfm.mit.edu.tar / rtfm.mit.edu / pub / x11_release < prev    next >
Text File  |  1988-04-01  |  35KB  |  1,233 lines

  1. Follow these steps to patch the X11 support in a standard 18.50 GNU
  2. Emacs distribution:
  3.  
  4. 1) Apply the diffs below to change:
  5.  
  6.     lisp/x-mouse.el
  7.     lisp/term/x-win.el
  8.     src/dispnew.c
  9.     src/emacs.c
  10.     src/keyboard.c
  11.     src/process.c
  12.     src/x11fns.c
  13.     src/x11term.c
  14.     src/x11term.h
  15.  
  16. 2) Install the new files:
  17.  
  18.     src/sink_11.h
  19.     src/sinkmask_11.h
  20. ================================= Diffs ==================================
  21. diff -rc2 dist-18.50/lisp/x-mouse.el dist-18.51/lisp/x-mouse.el
  22. *** dist-18.50/lisp/x-mouse.el    Sat Mar  5 13:17:12 1988
  23. --- dist-18.51/lisp/x-mouse.el    Mon Mar 21 17:20:10 1988
  24. ***************
  25. *** 235,246 ****
  26.       (and selection (call-interactively selection))))
  27.   
  28. ! (define-key mouse-map x-button-c-s-middle 'x-help)
  29. ! (define-key mouse-map x-button-c-s-left 'x-buffer-menu)
  30. ! (define-key mouse-map x-button-right 'x-mouse-select)
  31. ! (define-key mouse-map x-button-left 'x-mouse-set-mark)
  32.   (define-key mouse-map x-button-c-s-right 'x-mouse-keep-one-window)
  33.   (define-key mouse-map x-button-c-right 'x-mouse-select-and-split)
  34. - (define-key mouse-map x-button-middle 'x-mouse-set-point)
  35.   (define-key mouse-map x-button-s-middle 'x-cut-text)
  36.   (define-key mouse-map x-button-s-right 'x-paste-text)
  37.   (define-key mouse-map x-button-c-middle 'x-cut-and-wipe-text)
  38. --- 235,282 ----
  39.       (and selection (call-interactively selection))))
  40.   
  41. ! ; Prevent beeps on button-up.  If the button isn't bound to anything, it
  42. ! ; will beep on button-down.
  43. ! (define-key mouse-map x-button-right-up 'x-mouse-ignore)
  44. ! (define-key mouse-map x-button-middle-up 'x-mouse-ignore)
  45. ! (define-key mouse-map x-button-left-up 'x-mouse-ignore)
  46. ! (define-key mouse-map x-button-s-right-up 'x-mouse-ignore)
  47. ! (define-key mouse-map x-button-s-middle-up 'x-mouse-ignore)
  48. ! (define-key mouse-map x-button-s-left-up 'x-mouse-ignore)
  49. ! (define-key mouse-map x-button-m-right-up 'x-mouse-ignore)
  50. ! (define-key mouse-map x-button-m-middle-up 'x-mouse-ignore)
  51. ! (define-key mouse-map x-button-m-left-up 'x-mouse-ignore)
  52. ! (define-key mouse-map x-button-c-right-up 'x-mouse-ignore)
  53. ! (define-key mouse-map x-button-c-middle-up 'x-mouse-ignore)
  54. ! (define-key mouse-map x-button-c-left-up 'x-mouse-ignore)
  55. ! (define-key mouse-map x-button-m-s-right-up 'x-mouse-ignore)
  56. ! (define-key mouse-map x-button-m-s-middle-up 'x-mouse-ignore)
  57. ! (define-key mouse-map x-button-m-s-left-up 'x-mouse-ignore)
  58. ! (define-key mouse-map x-button-c-s-right-up 'x-mouse-ignore)
  59. ! (define-key mouse-map x-button-c-s-middle-up 'x-mouse-ignore)
  60. ! (define-key mouse-map x-button-c-s-left-up 'x-mouse-ignore)
  61. ! (define-key mouse-map x-button-c-m-right-up 'x-mouse-ignore)
  62. ! (define-key mouse-map x-button-c-m-middle-up 'x-mouse-ignore)
  63. ! (define-key mouse-map x-button-c-m-left-up 'x-mouse-ignore)
  64. ! (define-key mouse-map x-button-c-m-s-right-up 'x-mouse-ignore)
  65. ! (define-key mouse-map x-button-c-m-s-middle-up 'x-mouse-ignore)
  66. ! (define-key mouse-map x-button-c-m-s-left-up 'x-mouse-ignore)
  67.   (define-key mouse-map x-button-c-s-right 'x-mouse-keep-one-window)
  68.   (define-key mouse-map x-button-c-right 'x-mouse-select-and-split)
  69.   (define-key mouse-map x-button-s-middle 'x-cut-text)
  70.   (define-key mouse-map x-button-s-right 'x-paste-text)
  71.   (define-key mouse-map x-button-c-middle 'x-cut-and-wipe-text)
  72. + (if (or (not (boundp 'window-system-version))
  73. +     (eq window-system-version 10))
  74. +     (progn
  75. +       (define-key mouse-map x-button-c-s-middle 'x-help)
  76. +       (define-key mouse-map x-button-c-s-left 'x-buffer-menu)
  77. +       (define-key mouse-map x-button-right 'x-mouse-select)
  78. +       (define-key mouse-map x-button-left 'x-mouse-set-mark)
  79. +       (define-key mouse-map x-button-middle 'x-mouse-set-point))
  80. +   (define-key mouse-map x-button-c-s-middle 'x-mouse-ignore)
  81. +   (define-key mouse-map x-button-c-s-left 'x-mouse-ignore)
  82. +   (define-key mouse-map x-button-right 'x-cut-text)
  83. +   (define-key mouse-map x-button-left 'x-mouse-set-point)
  84. +   (define-key mouse-map x-button-middle 'x-paste-text))
  85. diff -rc2 dist-18.50/lisp/term/x-win.el dist-18.51/lisp/term/x-win.el
  86. *** dist-18.50/lisp/term/x-win.el    Sat Mar  5 13:16:00 1988
  87. --- dist-18.51/lisp/term/x-win.el    Mon Mar 21 17:20:34 1988
  88. ***************
  89. *** 28,45 ****
  90.     (setq x-switches '((\"-r\" . t) (\"-font\" . \"foo\") (\"-b\" . \"8\")))")
  91.   
  92. ! (setq command-switch-alist
  93. !       (append '(("-r" . x-handle-switch)
  94. !         ("-i" . x-handle-switch)
  95. !         ("-font" . x-handle-switch)
  96. !         ("-w" . x-handle-switch)
  97. !         ("-b" . x-handle-switch)
  98. !         ("-ib" . x-handle-switch)
  99. !         ("-fg" . x-handle-switch)
  100. !         ("-bg" . x-handle-switch)
  101. !         ("-bd" . x-handle-switch)
  102. !         ("-cr" . x-handle-switch)
  103. !         ("-ms" . x-handle-switch))
  104. !           command-switch-alist))
  105.   
  106.   ;; This is run after the command args are parsed.
  107.   (defun x-handle-switch (switch)
  108. --- 28,68 ----
  109.     (setq x-switches '((\"-r\" . t) (\"-font\" . \"foo\") (\"-b\" . \"8\")))")
  110.   
  111. ! (if (or (not (boundp 'window-system-version))
  112. !     (eq window-system-version 10))
  113. !     (setq command-switch-alist
  114. !       (append '(("-r" . x-handle-switch)
  115. !             ("-i" . x-handle-switch)
  116. !             ("-font" . x-handle-switch)
  117. !             ("-w" . x-handle-switch)
  118. !             ("-b" . x-handle-switch)
  119. !             ("-ib" . x-handle-switch)
  120. !             ("-fg" . x-handle-switch)
  121. !             ("-bg" . x-handle-switch)
  122. !             ("-bd" . x-handle-switch)
  123. !             ("-cr" . x-handle-switch)
  124. !             ("-ms" . x-handle-switch))
  125. !           command-switch-alist))
  126. !   (setq command-switch-alist
  127. !     (append '(("-r" . ignore)
  128. !           ("-i" . ignore)
  129. !           ("-rn" . xignore)
  130. !           ("-font" . xignore)
  131. !           ("-fn" . xignore)
  132. !           ("-wn" . xignore)
  133. !           ("-in" . xignore)
  134. !           ("-w" . xignore)
  135. !           ("-geometry" . xignore)
  136. !           ("-b" . xignore)
  137. !           ("-ib" . xignore)
  138. !           ("-fg" . xignore)
  139. !           ("-bg" . xignore)
  140. !           ("-bd" . xignore)
  141. !           ("-cr" . xignore)
  142. !           ("-ms" . xignore))
  143. !         command-switch-alist)))
  144.   
  145. + (defun xignore (&rest ignore)
  146. +   (setq command-line-args-left (cdr command-line-args-left)))
  147.   ;; This is run after the command args are parsed.
  148.   (defun x-handle-switch (switch)
  149. ***************
  150. *** 160,173 ****
  151.   ;; only if Emacs has been compiled to support direct interface to X.
  152.   
  153. ! (if (fboundp 'x-change-display)
  154.       (progn
  155. -       ;; xterm.c depends on using interrupt-driven input.
  156. -       (set-input-mode t nil)
  157. -       ;; Not defvar!  This is not DEFINING this variable, just specifying
  158. -       ;; a value for it.
  159. -       (setq window-setup-hook 'x-pop-up-window)
  160.         (require 'x-mouse)
  161.   
  162.         (put 'suspend-emacs 'disabled
  163. --- 183,201 ----
  164.   ;; only if Emacs has been compiled to support direct interface to X.
  165.   
  166. ! (if (eq window-system 'x)
  167.       (progn
  168.         (require 'x-mouse)
  169. +       (if (or (not (boundp 'window-system-version))
  170. +           (eq window-system-version 10))
  171. +       (progn
  172. +         ;; xterm.c depends on using interrupt-driven input.
  173. +         (set-input-mode t nil)
  174. +         
  175. +         ;; Not defvar!  This is not DEFINING this variable, just specifying
  176. +         ;; a value for it.
  177. +         (setq term-setup-hook 'x-pop-up-window)
  178. +         (while x-switches
  179. +           (x-handle-switch-1 (car (car x-switches)) (cdr (car x-switches)))
  180. +           (setq x-switches (cdr x-switches)))))
  181.   
  182.         (put 'suspend-emacs 'disabled
  183. ***************
  184. *** 177,185 ****
  185.         (substitute-key-definition 'suspend-emacs nil global-map)
  186.         (substitute-key-definition 'suspend-emacs nil esc-map)
  187. !       (substitute-key-definition 'suspend-emacs nil ctl-x-map)
  188. !       ;; Not needed any more -- done in C.
  189. !       ;; (if (not x-processed-defaults) (x-get-default-args))
  190. !       ;; Process switch settings made by .emacs file.
  191. !       (while x-switches
  192. !     (x-handle-switch-1 (car (car x-switches)) (cdr (car x-switches)))
  193. !     (setq x-switches (cdr x-switches)))))
  194. --- 205,207 ----
  195.         (substitute-key-definition 'suspend-emacs nil global-map)
  196.         (substitute-key-definition 'suspend-emacs nil esc-map)
  197. !       (substitute-key-definition 'suspend-emacs nil ctl-x-map)))
  198. diff -rc2 dist-18.50/src/dispnew.c dist-18.51/src/dispnew.c
  199. *** dist-18.50/src/dispnew.c    Mon Feb 29 12:46:38 1988
  200. --- dist-18.51/src/dispnew.c    Mon Mar 21 17:21:13 1988
  201. ***************
  202. *** 95,98 ****
  203. --- 95,102 ----
  204.                      ('x is the only current possibility) */
  205.   
  206. + Lisp_Object Vwindow_system_version;    /* Version of the window system;
  207. +                        current values for 'x are
  208. +                        10 and 11 */
  209.   /* Nonzero means reading single-character input with prompt
  210.      so put cursor on minibuffer after the prompt.  */
  211. ***************
  212. *** 1295,1300 ****
  213.   #ifdef HAVE_X_WINDOWS
  214.     extern Lisp_Object Vxterm;
  215.     Vxterm = Qnil;
  216. ! #endif
  217.   
  218.     MetaFlag = 0;
  219. --- 1299,1306 ----
  220.   #ifdef HAVE_X_WINDOWS
  221.     extern Lisp_Object Vxterm;
  222. +   extern Lisp_Object Vwindow_system_version;
  223.     Vxterm = Qnil;
  224. ! #endif /* HAVE_X_WINDOWS */
  225.   
  226.     MetaFlag = 0;
  227. ***************
  228. *** 1303,1306 ****
  229. --- 1309,1313 ----
  230.     terminal_type = (char *) 0;
  231.   
  232. +   Vxterm = Qnil;
  233.     if (!inhibit_window_system)
  234.       {
  235. ***************
  236. *** 1307,1318 ****
  237.   #ifdef HAVE_X_WINDOWS
  238.         extern char *alternate_display;
  239. !       if (alternate_display || egetenv ("DISPLAY"))
  240.       {
  241.         x_term_init ();
  242.         Vxterm = Qt;
  243.   #ifdef X11
  244. !       Vwindow_system = intern ("x11");
  245.   #else
  246. !       Vwindow_system = intern ("x");
  247.   #endif /* X11 */
  248.         goto term_init_done;
  249. --- 1314,1329 ----
  250.   #ifdef HAVE_X_WINDOWS
  251.         extern char *alternate_display;
  252. !       /* Changed to deal with KSH lossage */
  253. !       char *disp = egetenv ("DISPLAY");
  254. !       if (alternate_display || (disp && *disp))
  255.       {
  256.         x_term_init ();
  257.         Vxterm = Qt;
  258. +       Vwindow_system = intern ("x");
  259.   #ifdef X11
  260. !       XSET (Vwindow_system_version, Lisp_Int, 11);
  261.   #else
  262. !       XSET (Vwindow_system_version, Lisp_Int, 10);
  263.   #endif /* X11 */
  264.         goto term_init_done;
  265. ***************
  266. *** 1376,1379 ****
  267. --- 1387,1394 ----
  268.   \(such as `x') or nil if emacs is running on an ordinary terminal.");
  269.     Vwindow_system = Qnil;
  270. +   DEFVAR_LISP ("window-system-version", &Vwindow_system_version,
  271. +     "A symbol naming the version of the window-system under which emacs\n\
  272. + is running.");
  273. +   Vwindow_system_version = Qnil;
  274.     DEFVAR_BOOL ("cursor-in-echo-area", &cursor_in_echo_area,
  275.       "Non-nil means put cursor in minibuffer after any message displayed there.");
  276. diff -rc2 dist-18.50/src/emacs.c dist-18.51/src/emacs.c
  277. *** dist-18.50/src/emacs.c    Mon Feb 29 12:46:41 1988
  278. --- dist-18.51/src/emacs.c    Mon Feb 29 12:48:28 1988
  279. ***************
  280. *** 73,79 ****
  281.      the display to use.  */
  282.   char *alternate_display;
  283.   char **xargv;
  284.   int xargc;
  285. ! #endif /* HAVE_X_WINDOWS */
  286.   
  287.   /* Nonzero means running Emacs without interactive terminal.  */
  288. --- 73,82 ----
  289.      the display to use.  */
  290.   char *alternate_display;
  291. + #endif /* HAVE_X_WINDOWS */
  292. + #ifdef X11
  293.   char **xargv;
  294.   int xargc;
  295. ! #endif /* X11 */
  296.   
  297.   /* Nonzero means running Emacs without interactive terminal.  */
  298. ***************
  299. *** 224,231 ****
  300.     inhibit_window_system = 0;
  301.   
  302. ! #ifdef HAVE_X_WINDOWS
  303.     xargv = argv;
  304.     xargc = argc;
  305. ! #endif
  306.   
  307.   /* Handle the -t switch, which specifies filename to use as terminal */
  308. --- 227,234 ----
  309.     inhibit_window_system = 0;
  310.   
  311. ! #ifdef X11
  312.     xargv = argv;
  313.     xargc = argc;
  314. ! #endif /* X11 */
  315.   
  316.   /* Handle the -t switch, which specifies filename to use as terminal */
  317. diff -rc2 dist-18.50/src/keyboard.c dist-18.51/src/keyboard.c
  318. *** dist-18.50/src/keyboard.c    Mon Feb 29 12:46:46 1988
  319. --- dist-18.51/src/keyboard.c    Sat Mar  5 12:57:55 1988
  320. ***************
  321. *** 960,963 ****
  322. --- 960,965 ----
  323.        int *addr;
  324.   {
  325. +   unsigned char buf[64 * BUFFER_SIZE_FACTOR];
  326. +   int i;
  327.   #ifdef VMS
  328.     /* On VMS, we always have something in the buffer
  329. ***************
  330. *** 970,973 ****
  331. --- 972,987 ----
  332.     else if (ioctl (0, FIONREAD, addr) < 0)
  333.       *addr = 0;
  334. +   else if (*addr > 0 && read_socket_hook) {
  335. +     *addr = (*read_socket_hook) (0, buf, sizeof buf);
  336. +     for (i = 0; i < *addr; i++)
  337. +       {
  338. +     kbd_buffer_store_char (buf[i]);
  339. +     /* Don't look at input that follows a C-g too closely.
  340. +        This reduces lossage due to autorepeat on C-g.  */
  341. +     if (buf[i] == Ctl('G'))
  342. +       break;
  343. +       }
  344. +     *addr = kbd_count;
  345. +   }
  346.   #else /* no FIONREAD */
  347.     read_avail_input ();
  348. diff -rc2 dist-18.50/src/process.c dist-18.51/src/process.c
  349. *** dist-18.50/src/process.c    Mon Feb 29 12:46:53 1988
  350. --- dist-18.51/src/process.c    Mon Mar 21 17:23:35 1988
  351. ***************
  352. *** 1233,1237 ****
  353.     int wait_channel = 0;
  354.     struct Lisp_Process *wait_proc = 0;
  355. !   extern kbd_count;
  356.   
  357.     /* Detect when read_kbd is really the address of a Lisp_Process.  */
  358. --- 1233,1237 ----
  359.     int wait_channel = 0;
  360.     struct Lisp_Process *wait_proc = 0;
  361. !   extern kbd_count, interrupt_input;
  362.   
  363.     /* Detect when read_kbd is really the address of a Lisp_Process.  */
  364. ***************
  365. *** 1380,1385 ****
  366.        to give it higher priority than subprocesses */
  367.   
  368. !       if (read_kbd && (kbd_count || !NULL (Vquit_flag)))
  369. !     break;
  370.   
  371.         if (read_kbd && (Available & ChannelMask (0)))
  372. --- 1380,1390 ----
  373.        to give it higher priority than subprocesses */
  374.   
  375. !       if (read_kbd)
  376. !     {      
  377. !           if (interrupt_input && (kbd_count || !NULL (Vquit_flag)))
  378. !             break;
  379. !           if (!interrupt_input && detect_input_pending())
  380. !         break;
  381. !         } 
  382.   
  383.         if (read_kbd && (Available & ChannelMask (0)))
  384. diff -rc2 dist-18.50/src/x11fns.c dist-18.51/src/x11fns.c
  385. *** dist-18.50/src/x11fns.c    Mon Feb 29 12:46:57 1988
  386. --- dist-18.51/src/x11fns.c    Sat Mar  5 12:57:16 1988
  387. ***************
  388. *** 103,106 ****
  389. --- 103,108 ----
  390.   extern int XXpid;
  391.   
  392. + extern char *XXidentity;
  393.   extern Display *XXdisplay;
  394.   extern int bitblt, CursorExists, VisibleX, VisibleY;
  395. ***************
  396. *** 423,427 ****
  397.       default_name = (char *) XSTRING (arg)->data;
  398.   
  399. !     value = XGetDefault (progname, default_name);
  400.       if (value)
  401.           return build_string (value);
  402. --- 425,433 ----
  403.       default_name = (char *) XSTRING (arg)->data;
  404.   
  405. !     if (XXidentity)
  406. !         value = XGetDefault (XXdisplay, XXidentity, default_name);
  407. !     else
  408. !         value = XGetDefault (XXdisplay, CLASS, default_name);
  409. !     
  410.       if (value)
  411.           return build_string (value);
  412. ***************
  413. *** 657,664 ****
  414.       sigsetmask (mask);
  415.   
  416. - #if 0
  417. -     if (QLength(XXdisplay) > 0)
  418. - #endif        read_events_block ();
  419.       return Qt;
  420.   }
  421. --- 663,666 ----
  422. ***************
  423. *** 684,692 ****
  424.       XSetWindowSize(screen_height,screen_width);
  425.       sigsetmask (mask);
  426. - #if 0
  427. -     if (QLength(XXdisplay) > 0)
  428. -         read_events_block ();
  429. - #endif
  430.   
  431.       return Qt;
  432. --- 686,689 ----
  433. diff -rc2 dist-18.50/src/x11term.c dist-18.51/src/x11term.c
  434. *** dist-18.50/src/x11term.c    Mon Feb 29 12:47:04 1988
  435. --- dist-18.51/src/x11term.c    Sat Mar  5 12:57:16 1988
  436. ***************
  437. *** 23,42 ****
  438.   /* Thanks to Mark Biggers for all of the Window Manager support */
  439.   
  440. - /* PLEASE NOTE!
  441. -  *
  442. -  * This is only a test copy of the X11 code -- it is NOT suitable
  443. -  * for distribution beyond test sites!!!!
  444. -  *
  445. -  */
  446.   /*
  447. !  *    $Source: /mit/emacs/src/RCS/xterm_11.c,v $
  448.    *    $Author: rfrench $
  449.    *    $Locker:  $
  450. !  *    $Header: xterm_11.c,v 1.9 88/01/16 15:33:35 rfrench Exp $
  451.    */
  452.   
  453.   #ifndef lint
  454. ! static char *rcsid_xterm_c = "$Header: xterm_11.c,v 1.9 88/01/16 15:33:35 rfrench Exp $";
  455.   #endif    lint
  456.   
  457. --- 23,35 ----
  458.   /* Thanks to Mark Biggers for all of the Window Manager support */
  459.   
  460.   /*
  461. !  *    $Source: /mit/emacs/src/RCS/x11term.c,v $
  462.    *    $Author: rfrench $
  463.    *    $Locker:  $
  464. !  *    $Header: x11term.c,v 1.12 88/02/29 14:11:07 rfrench Exp $
  465.    */
  466.   
  467.   #ifndef lint
  468. ! static char *rcsid_xterm_c = "$Header: x11term.c,v 1.12 88/02/29 14:11:07 rfrench Exp $";
  469.   #endif    lint
  470.   
  471. ***************
  472. *** 54,59 ****
  473.    * if this is not done before the other system files.  */
  474.   
  475. - /*#include "xdebug.h"*/
  476.   #include "x11term.h"
  477.   
  478. --- 47,50 ----
  479. ***************
  480. *** 80,85 ****
  481.   #include "termchar.h"
  482.   
  483. ! #include "sink.h"
  484. ! #include "sinkmask.h"
  485.   
  486.   #define min(a,b) ((a)<(b) ? (a) : (b))
  487. --- 71,76 ----
  488.   #include "termchar.h"
  489.   
  490. ! #include "sink_11.h"
  491. ! #include "sinkmask_11.h"
  492.   
  493.   #define min(a,b) ((a)<(b) ? (a) : (b))
  494. ***************
  495. *** 96,101 ****
  496.   #define MAXHEIGHT 300    /* In lines */
  497.   
  498. - #define CLASS  "emacs"    /* class id for GNU Emacs, used in .Xdefaults, etc. */
  499.   int pixelwidth,pixelheight;
  500.   char *progname;
  501. --- 87,90 ----
  502. ***************
  503. *** 125,130 ****
  504.   int WindowMapped;
  505.   
  506. ! static char  *XXidentity;    /* Resource name of this invocation of Emacs */
  507.   static char  *XXicon_name;    /* user-supplied icon info */
  508.   static char  *XXheader;        /* user-supplied window header info */
  509.   
  510. --- 114,120 ----
  511.   int WindowMapped;
  512.   
  513. ! char  *XXidentity;        /* Resource name of this invocation of Emacs */
  514.   static char  *XXicon_name;    /* user-supplied icon info */
  515. + static int   XXicon_usebitmap;    /* Use bitmap or not */
  516.   static char  *XXheader;        /* user-supplied window header info */
  517.   
  518. ***************
  519. *** 139,142 ****
  520. --- 129,135 ----
  521.   
  522.   int CursorExists;        /* during updates cursor is turned off */
  523. + int CursorOutline;             /* when the pointer is not in the Emacs
  524. +                                  * widow the cursor should be drawn in
  525. +                                  * outline form a la xterm */
  526.   static int InUpdate;        /* many of functions here may be invoked
  527.                    * even if no update in progress; when
  528. ***************
  529. *** 176,183 ****
  530.   char *rindex();
  531.   
  532. - #ifdef BIGDEBUG
  533. - char debug_string[500000];
  534. - #endif BIGDEBUG
  535.   /* HLmode -- Changes the GX function for output strings.  Could be used to
  536.    * change font.  Check an XText library function call. 
  537. --- 169,172 ----
  538. ***************
  539. *** 230,233 ****
  540. --- 219,223 ----
  541.       if (!initialized) {
  542.           CursorExists = 0;
  543. +         CursorOutline = 1;
  544.           VisibleX = 0;
  545.           VisibleY = 0;
  546. ***************
  547. *** 234,244 ****
  548.       }
  549.       XTclear_screen ();
  550. - #if 0
  551. - #ifdef FIONREAD
  552. -     ioctl (0, FIONREAD, &stuffpending);
  553. -     if (stuffpending)
  554. -         read_events_block ();
  555. - #endif
  556. - #endif /* 0 */
  557.   }
  558.   
  559. --- 224,227 ----
  560. ***************
  561. *** 505,522 ****
  562.   }
  563.   
  564. - /* The following routine is for the deaf or for the pervert who prefers 
  565. -  * that his terminal flashes at him rather than beep at him.
  566. -  */
  567. - static int flashedback;
  568.   XTflash ()
  569.   {
  570.       XGCValues gcv_temp;
  571. !     struct itimerval itimer;
  572.       int mask = sigblock (sigmask (SIGIO));
  573.   
  574. -     extern int flashback ();
  575.   #ifdef XDEBUG
  576.       fprintf (stderr, "XTflash\n");
  577. --- 488,497 ----
  578.   }
  579.   
  580.   XTflash ()
  581.   {
  582.       XGCValues gcv_temp;
  583. !     struct timeval to;
  584.       int mask = sigblock (sigmask (SIGIO));
  585.   
  586.   #ifdef XDEBUG
  587.       fprintf (stderr, "XTflash\n");
  588. ***************
  589. *** 528,540 ****
  590.             AllPlanes);
  591.       
  592. -     signal (SIGALRM, flashback);
  593. -     getitimer (ITIMER_REAL, &itimer);
  594. -     itimer.it_value.tv_usec += 250000;
  595. -     itimer.it_interval.tv_sec = 0;
  596. -     itimer.it_interval.tv_usec = 0;
  597. -     flashedback = 0;
  598. -     setitimer (ITIMER_REAL, &itimer, 0);
  599.       XFillRectangle (XXdisplay, XXwindow, XXgc_temp, 0, 0,
  600.               screen_width*XXfontw+2*XXInternalBorder,
  601. --- 503,506 ----
  602. ***************
  603. *** 544,565 ****
  604.       sigsetmask (mask);
  605.   
  606. !     while (!flashedback)
  607. !         pause ();
  608. !     XFreeGC(XXdisplay, XXgc_temp);
  609. ! }
  610. ! flashback ()
  611. ! {
  612. !     int mask = sigblock (sigmask (SIGIO) | sigmask (SIGALRM));
  613.       XFillRectangle (XXdisplay, XXwindow, XXgc_temp, 0, 0,
  614.               screen_width*XXfontw+2*XXInternalBorder,
  615.                  screen_height*XXfonth+2*XXInternalBorder);
  616.       XFlush (XXdisplay);
  617. -     flashedback = 1;
  618.       sigsetmask (mask);
  619. ! }    
  620.   
  621.   XTfeep ()
  622. --- 510,526 ----
  623.       sigsetmask (mask);
  624.   
  625. !     to.tv_sec = 0;
  626. !     to.tv_usec = 250000;
  627. !     
  628. !     select(0, 0, 0, 0, &to);
  629. !     
  630. !     mask = sigblock (sigmask (SIGIO));
  631.       XFillRectangle (XXdisplay, XXwindow, XXgc_temp, 0, 0,
  632.               screen_width*XXfontw+2*XXInternalBorder,
  633.                  screen_height*XXfonth+2*XXInternalBorder);
  634. +     XFreeGC(XXdisplay, XXgc_temp);
  635.       XFlush (XXdisplay);
  636.       sigsetmask (mask);
  637. ! }
  638.   
  639.   XTfeep ()
  640. ***************
  641. *** 587,590 ****
  642. --- 548,552 ----
  643.       if (!WindowMapped) {
  644.           CursorExists = 0;
  645. +         CursorOutline = 1;
  646.           return 0;
  647.           /* Currently the return values are not */
  648. ***************
  649. *** 611,615 ****
  650.                       &ActiveScreen[VisibleY+1]->body[VisibleX],
  651.                       1);
  652. !         else
  653.               XDrawImageString(XXdisplay, XXwindow, XXgc_curs,
  654.                       VisibleX*XXfontw+XXInternalBorder,
  655. --- 573,587 ----
  656.                       &ActiveScreen[VisibleY+1]->body[VisibleX],
  657.                       1);
  658. !         else if (CursorOutline) {
  659. !             XDrawImageString(XXdisplay, XXwindow, XXgc_norm,
  660. !                     VisibleX*XXfontw+XXInternalBorder,
  661. !                     VisibleY*XXfonth+XXInternalBorder+XXbase,
  662. !                     &ActiveScreen[VisibleY+1]->body[VisibleX],
  663. !                     1);
  664. !             XDrawRectangle (XXdisplay, XXwindow, XXgc_norm,
  665. !                     VisibleX*XXfontw+XXInternalBorder,
  666. !                     VisibleY*XXfonth+XXInternalBorder,
  667. !                     XXfontw - 1, XXfonth - 1);
  668. !         } else
  669.               XDrawImageString(XXdisplay, XXwindow, XXgc_curs,
  670.                       VisibleX*XXfontw+XXInternalBorder,
  671. ***************
  672. *** 623,626 ****
  673. --- 595,603 ----
  674.                       VisibleY*XXfonth+XXInternalBorder,
  675.                       XXfontw, XXfonth, 0);
  676. +         else if (CursorOutline)
  677. +             XDrawRectangle (XXdisplay, XXwindow, XXgc_norm,
  678. +                     VisibleX*XXfontw+XXInternalBorder,
  679. +                     VisibleY*XXfonth+XXInternalBorder,
  680. +                     XXfontw - 1, XXfonth - 1);
  681.           else
  682.               XFillRectangle (XXdisplay, XXwindow, XXgc_norm,
  683. ***************
  684. *** 650,653 ****
  685. --- 627,631 ----
  686.       if (!WindowMapped) {
  687.           CursorExists = 0;
  688. +         CursorOutline = 1;
  689.           sigsetmask (mask);
  690.           return;
  691. ***************
  692. *** 946,950 ****
  693.   #endif
  694.   
  695. !     return (internal_socket_read (bufp, numchars, 0));
  696.   }
  697.   
  698. --- 924,928 ----
  699.   #endif
  700.   
  701. !     return (internal_socket_read (bufp, numchars));
  702.   }
  703.   
  704. ***************
  705. *** 1105,1149 ****
  706.   #endif sun
  707.   
  708. ! #if 0
  709. ! /* All input is supposed to go through
  710. !    the usual mechanisms in keyboard.c, which do the actual I/O
  711. !    by calling XTread_socket via read_socket_hook.  A side-path such
  712. !    as this is not clean.
  713. !    Since keyboard input is normally done in a signal handler, any
  714. !    attempt to do it elsewhere is not only unmodular but risks a timing
  715. !    error as well.  It is also superfluous, unless there is a bug in
  716. !    the usual mechanisms or the use of read_socket_hook.  If so, fix it
  717. !    there; don't create a redundant mechanism here.  -- RMS.  */
  718. ! read_events_block ()
  719. ! {
  720. !     unsigned char buf[64];
  721. !     int i, nread;
  722. ! #ifdef XDEBUG
  723. !     fprintf(stderr,"read_events_block\n");
  724. ! #endif
  725. !     
  726. !     nread = internal_socket_read (buf, sizeof buf, 0);
  727. !     if (!nread)
  728. !         return (0);
  729. !     
  730. !     for (i=0; i < nread; i++) {
  731. !         kbd_buffer_store_char (buf[i]);
  732. !         /* Don't look at input that follows a C-g too closely.
  733. !          * This reduces lossage due to autorepeat on C-g.  */
  734. !         if (buf[i] == ('G' & 037))
  735. !             break;
  736. !     }
  737. !     return (nread);
  738. ! }
  739. ! #endif /* 0 */
  740. !     
  741. ! internal_socket_read(bufp, numchars, stopatkey)
  742.       register unsigned char *bufp;
  743.       register int numchars;
  744. -     int stopatkey;
  745.   {
  746.       int count,nbytes,rows,cols;
  747. --- 1083,1089 ----
  748.   #endif sun
  749.   
  750. ! internal_socket_read(bufp, numchars)
  751.       register unsigned char *bufp;
  752.       register int numchars;
  753.   {
  754.       int count,nbytes,rows,cols;
  755. ***************
  756. *** 1154,1189 ****
  757.       KeySym keysym;
  758.       
  759. -     extern int input_pending;
  760.       count = 0;
  761.   
  762. - #ifdef BIGDEBUG
  763. -     my_log("Entering internal_socket_read input_pending = %d\n",input_pending);
  764. - #endif BIGDEBUG
  765. -     
  766.       while (XPending (XXdisplay)) {
  767. -         if (stopatkey) {
  768. -             XPeekEvent(XXdisplay,&event);
  769. -             if ((event.type & 0177) == KeyPress) {
  770. -                 if (XLookupString (&event,
  771. -                            mapping_buf, 20, &keysym,
  772. -                            &status) ||
  773. -                     keysym == XK_Left ||
  774. -                     keysym == XK_Right ||
  775. -                     keysym == XK_Up ||
  776. -                     keysym == XK_Down)
  777. -                     return (1);
  778. -             }
  779. -             if (((event.type & 0177) == ButtonPress) ||
  780. -                 ((event.type & 0177) == ButtonRelease))
  781. -                 return (1);
  782. -         }
  783.           XNextEvent (XXdisplay,&event);
  784.           event.type &= 0177;       /* Mask out XSendEvent indication */
  785.   
  786. - #ifdef BIGDEBUG
  787. -         my_log("Got event %d\n",event.type);
  788. - #endif BIGDEBUG
  789.           switch (event.type) {
  790.   
  791. --- 1094,1103 ----
  792. ***************
  793. *** 1191,1194 ****
  794. --- 1105,1112 ----
  795.               break;
  796.   
  797. +         case MappingNotify:
  798. +             XRefreshKeyboardMapping(&event);
  799. +             break;
  800. +             
  801.           case MapNotify:
  802.               WindowMapped = 1;
  803. ***************
  804. *** 1242,1245 ****
  805. --- 1160,1181 ----
  806.               break;
  807.               
  808. +         /*
  809. +          * NOTE: No 'Focus' management is being done yet. If
  810. +          * some other window has grabbed the focus, emacs will
  811. +          * still show a filled cursor whenever the pointer
  812. +          * enters the emacs window.
  813. +          */ 
  814. +         case EnterNotify:
  815. +             CursorToggle ();
  816. +                         CursorOutline = 0;
  817. +             CursorToggle ();
  818. +                         break;
  819. +         case LeaveNotify:
  820. +             CursorToggle ();
  821. +                         CursorOutline = 1;
  822. +             CursorToggle ();
  823. +                         break;
  824.           case KeyPress:
  825.               nbytes = XLookupString (&event,
  826. ***************
  827. *** 1246,1249 ****
  828. --- 1182,1190 ----
  829.                           mapping_buf, 20, &keysym,
  830.                           &status);
  831. +             /*
  832. +              * Someday this will be unnecessary as we will
  833. +              * be able to use XRebindKeysym so XLookupString
  834. +              * will have already given us the string we want.
  835. +              */
  836.               if (IsFunctionKey(keysym) ||
  837.                   IsMiscFunctionKey(keysym)) {
  838. ***************
  839. *** 1388,1393 ****
  840.       desiredwindow = option;
  841.   
  842. !     if (option = XGetDefault(XXdisplay, class, "BodyFont"))
  843. !     temp_font = option;
  844.   }
  845.   
  846. --- 1329,1341 ----
  847.       desiredwindow = option;
  848.   
  849. !     /*
  850. !      * At X11 the .BodyFont was renamed to .Font, (see the resource
  851. !      * manager documentation), but allow backward compatibility.
  852. !      * First look for .Font and if that fails look at .BodyFont.
  853. !      */
  854. !     if (option = XGetDefault(XXdisplay, class, "Font"))
  855. !       temp_font = option;
  856. !     else if (option = XGetDefault(XXdisplay, class, "BodyFont"))
  857. !       temp_font = option;
  858.   }
  859.   
  860. ***************
  861. *** 1398,1401 ****
  862. --- 1346,1350 ----
  863.       register int xxargc;
  864.       register char **xxargv;
  865. +     char *ptr;
  866.       extern char *getenv ();
  867.       extern XTinterrupt_signal ();
  868. ***************
  869. *** 1481,1486 ****
  870. --- 1430,1439 ----
  871.       XXheader = (char *) NULL;
  872.   
  873. +     XXicon_usebitmap = 0;
  874. +     
  875.       temp_font = "fixed";
  876.       progname = xargv[0];
  877. +     if (ptr = rindex(progname, '/'))
  878. +         progname = ptr+1;
  879.       XXpid = getpid ();
  880.       default_window = "=80x24+0+0";
  881. ***************
  882. *** 1568,1571 ****
  883. --- 1521,1529 ----
  884.               xxargv++;
  885.           }
  886. +         if (xxargc && !strcmp (*xxargv, "-i")) {
  887. +             xxargc--;
  888. +             xxargv++;
  889. +             XXicon_usebitmap = 1;
  890. +         } 
  891.           if ((xxargc > 1) && !strcmp (*xxargv, "-b")) {
  892.               xxargc--;
  893. ***************
  894. *** 1582,1586 ****
  895.               xxargv++;
  896.           }
  897. !         if ((xxargc > 1) && !strcmp (*xxargv, "-w")) {
  898.               xxargc--;
  899.               xxargv++;
  900. --- 1540,1545 ----
  901.               xxargv++;
  902.           }
  903. !         if ((xxargc > 1) && (!strcmp (*xxargv, "-w") ||
  904. !                      !strcmp (*xxargv, "-geometry"))) {
  905.               xxargc--;
  906.               xxargv++;
  907. ***************
  908. *** 1773,1783 ****
  909.       request_sigio();
  910.   
  911. - #ifdef BIGDEBUG
  912. -     *debug_string = '\0';
  913. -     if (1) {
  914. -         int dump_log();
  915. -         signal(SIGUSR1,dump_log);
  916. -     } 
  917. - #endif BIGDEBUG    
  918.   }
  919.   
  920. --- 1732,1735 ----
  921. ***************
  922. *** 1859,1866 ****
  923.       {
  924.           sigsetmask (mask);
  925. - #if 0
  926. -         if (QLength (XXdisplay) > 0)
  927. -         read_events_block ();
  928. - #endif
  929.           return  -1;
  930.       }
  931. --- 1811,1814 ----
  932. ***************
  933. *** 1878,1885 ****
  934.   
  935.       sigsetmask (mask);
  936. ! #if 0
  937. !     if (QLength (XXdisplay) > 0)
  938. !         read_events_block ();
  939. ! #endif    
  940.       return 0;
  941.   }
  942. --- 1826,1830 ----
  943.   
  944.       sigsetmask (mask);
  945. !     
  946.       return 0;
  947.   }
  948. ***************
  949. *** 2139,2146 ****
  950.       XWMHints  wmhints;
  951.   
  952. -     wmhints.flags = InputHint | StateHint |
  953. -         IconPixmapHint | IconMaskHint;
  954.       
  955.       wmhints.input = True;
  956.       wmhints.initial_state = NormalState;
  957. --- 2084,2092 ----
  958.       XWMHints  wmhints;
  959.   
  960.       
  961. +     wmhints.flags = InputHint | StateHint;
  962. +     if (XXicon_usebitmap)
  963. +         wmhints.flags |= IconPixmapHint | IconMaskHint;
  964. +     
  965.       wmhints.input = True;
  966.       wmhints.initial_state = NormalState;
  967. ***************
  968. *** 2149,2153 ****
  969.                       sink_bits, sink_width,
  970.                       sink_height);
  971.       SinkMaskPixmap = XCreateBitmapFromData (XXdisplay, w,
  972.                           sink_mask_bits,
  973. --- 2095,2098 ----
  974. ***************
  975. *** 2154,2159 ****
  976.                           sink_mask_width,
  977.                           sink_mask_height);
  978. !     wmhints.icon_pixmap = SinkPixmap;
  979. !     wmhints.icon_mask = SinkMaskPixmap;
  980.   
  981.       XSetWMHints(XXdisplay, w, &wmhints);
  982. --- 2099,2110 ----
  983.                           sink_mask_width,
  984.                           sink_mask_height);
  985. !     if (XXicon_usebitmap) {
  986. !         wmhints.icon_pixmap = SinkPixmap;
  987. !         wmhints.icon_mask = SinkMaskPixmap;
  988. !     }
  989. !     else {
  990. !         wmhints.icon_pixmap = 0;
  991. !         wmhints.icon_mask = 0;
  992. !     } 
  993.   
  994.       XSetWMHints(XXdisplay, w, &wmhints);
  995. ***************
  996. *** 2186,2189 ****
  997. --- 2137,2143 ----
  998.       == (XFontStruct *) NULL)
  999.       {
  1000. +     fprintf (stderr, "X server unable to find requested font '%s'!.\n",
  1001. +          (XXcurrentfont == NULL) ? "(null)" :  XXcurrentfont);
  1002. +     fflush (stderr);
  1003.       exit (-98);
  1004.       }
  1005. ***************
  1006. *** 2204,2208 ****
  1007.       else
  1008.       {
  1009. !     desktop = RootWindow(XXdisplay, 0);
  1010.       }
  1011.   
  1012. --- 2158,2162 ----
  1013.       else
  1014.       {
  1015. !     desktop = RootWindow(XXdisplay, DefaultScreen(XXdisplay));
  1016.       }
  1017.   
  1018. ***************
  1019. *** 2240,2243 ****
  1020. --- 2194,2198 ----
  1021.       
  1022.       CursorExists = 0;
  1023. +     CursorOutline = 1;
  1024.       VisibleX = 0;
  1025.       VisibleY = 0;
  1026. ***************
  1027. *** 2255,2258 ****
  1028. --- 2210,2214 ----
  1029.       XSelectInput(XXdisplay, XXwindow, KeyPressMask | 
  1030.            ExposureMask | ButtonPressMask | ButtonReleaseMask |
  1031. +          EnterWindowMask | LeaveWindowMask |
  1032.            StructureNotifyMask);
  1033.   
  1034. ***************
  1035. *** 2261,2286 ****
  1036.   }
  1037.   
  1038. - #ifdef BIGDEBUG
  1039. - my_log(s,a,b,c,d,e,f,g,h)
  1040. -     char *s;
  1041. - {
  1042. -     char bfr[256];
  1043. -     
  1044. -     sprintf(bfr,s,a,b,c,d,e,f,g,h);
  1045. -     strcat(debug_string,bfr);
  1046. - }
  1047. - dump_log()
  1048. - {
  1049. -     fputs(debug_string,stderr);
  1050. -     fflush(stderr);
  1051. -     *debug_string = '\0';
  1052. - }
  1053. - #endif BIGDEBUG
  1054. -     
  1055.   #endif /* HAVE_X_WINDOWS */
  1056. - /*#include "xundebug.h"*/
  1057. --- 2217,2219 ----
  1058. diff -rc2 dist-18.50/src/x11term.h dist-18.51/src/x11term.h
  1059. *** dist-18.50/src/x11term.h    Mon Feb 29 12:51:43 1988
  1060. --- dist-18.51/src/x11term.h    Sat Mar  5 12:57:16 1988
  1061. ***************
  1062. *** 1,8 ****
  1063. ! #include <X/Xlib.h>
  1064. ! #include <X/Xatom.h>
  1065. ! #include <X/keysym.h>
  1066. ! #include <X/cursorfont.h>
  1067. ! #include <X/Xutil.h>
  1068. ! #include <X/X10.h>
  1069.   
  1070.   #ifndef X11
  1071. --- 1,8 ----
  1072. ! #include <X11/Xlib.h>
  1073. ! #include <X11/Xatom.h>
  1074. ! #include <X11/keysym.h>
  1075. ! #include <X11/cursorfont.h>
  1076. ! #include <X11/Xutil.h>
  1077. ! #include <X11/X10.h>
  1078.   
  1079.   #ifndef X11
  1080. ***************
  1081. *** 15,16 ****
  1082. --- 15,18 ----
  1083.   #define sigmask(no) (1L << ((no) - 1))
  1084.   #endif
  1085. + #define CLASS  "emacs"    /* class id for GNU Emacs, used in .Xdefaults, etc. */
  1086. ==================================================== New file src/sink_11.h
  1087. /* $Header: sink_11.h,v 1.1 88/02/06 16:55:50 rfrench Exp $ */
  1088. #define sink_width 48
  1089. #define sink_height 48
  1090. static char sink_bits[] = {
  1091.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  1092.    0xff, 0xff, 0xff, 0xff, 0x80, 0x9f, 
  1093.    0xff, 0xff, 0xff, 0xff, 0x9f, 0x9f, 
  1094.    0xff, 0xff, 0xff, 0xff, 0x00, 0x80, 
  1095.    0xff, 0xff, 0xff, 0x7f, 0xfe, 0xbf, 
  1096.    0xff, 0xff, 0xff, 0x7f, 0x03, 0xa0, 
  1097.    0xff, 0xff, 0xff, 0x7f, 0xfd, 0xaf, 
  1098.    0xff, 0xff, 0xff, 0x3f, 0xf9, 0xaf, 
  1099.    0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 
  1100.    0xff, 0xff, 0xff, 0xff, 0xfc, 0xaf, 
  1101.    0xff, 0xff, 0xff, 0x7f, 0xf8, 0xaf, 
  1102.    0xff, 0xff, 0xff, 0xff, 0xfc, 0xaf, 
  1103.    0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 
  1104.    0xff, 0xff, 0xff, 0xbf, 0xf7, 0xaf, 
  1105.    0xff, 0xff, 0xff, 0x3f, 0xf3, 0xaf, 
  1106.    0xff, 0xff, 0xff, 0xff, 0xfc, 0xaf, 
  1107.    0x3f, 0x00, 0x00, 0x00, 0x00, 0x20, 
  1108.    0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 
  1109.    0xdf, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  1110.    0xcf, 0xf9, 0x0f, 0xff, 0xff, 0xe7, 
  1111.    0xcf, 0xf9, 0xf7, 0xff, 0xff, 0xe7, 
  1112.    0xff, 0xf9, 0xf7, 0x63, 0xfb, 0xe7, 
  1113.    0xff, 0xf9, 0x37, 0x5a, 0xfb, 0xe7, 
  1114.    0xcf, 0xf9, 0xf7, 0x5a, 0xfb, 0xe7, 
  1115.    0xcf, 0xf9, 0xf7, 0x5a, 0xf9, 0xe7, 
  1116.    0xef, 0xf9, 0x0f, 0xdb, 0xfa, 0xe7, 
  1117.    0xff, 0xf9, 0xff, 0xff, 0xff, 0xe7, 
  1118.    0xdf, 0xf9, 0xff, 0xff, 0xff, 0xe7, 
  1119.    0xcf, 0x19, 0xfc, 0xff, 0xff, 0xe7, 
  1120.    0xcf, 0xd9, 0xff, 0xff, 0xff, 0xe7, 
  1121.    0xff, 0xd9, 0x47, 0xce, 0x73, 0xe6, 
  1122.    0xff, 0x19, 0xb6, 0xb5, 0xad, 0xe7, 
  1123.    0xcf, 0xd9, 0xb7, 0xb5, 0x7d, 0xe6, 
  1124.    0xc7, 0xd9, 0xb7, 0xb5, 0xed, 0xe5, 
  1125.    0xef, 0x19, 0xb4, 0x4d, 0x73, 0xe6, 
  1126.    0xff, 0xf1, 0xff, 0xff, 0xff, 0xe3, 
  1127.    0xff, 0x03, 0x80, 0x03, 0x00, 0xf0, 
  1128.    0xef, 0x07, 0x00, 0x01, 0x00, 0xf8, 
  1129.    0xc7, 0xff, 0x3f, 0xf9, 0xff, 0xff, 
  1130.    0xe7, 0xff, 0x7f, 0xfd, 0xe0, 0xff, 
  1131.    0xff, 0xff, 0x7f, 0x7d, 0xdf, 0xff, 
  1132.    0xff, 0xff, 0x7f, 0xbd, 0xb1, 0xff, 
  1133.    0xff, 0xff, 0x7f, 0xbb, 0xae, 0xff, 
  1134.    0xef, 0xff, 0xff, 0xda, 0xae, 0xff, 
  1135.    0xc7, 0xff, 0xff, 0x66, 0xaf, 0xff, 
  1136.    0xe7, 0xff, 0xff, 0xbd, 0xaf, 0xff, 
  1137.    0xff, 0xff, 0xff, 0xc3, 0xaf, 0xff, 
  1138.    0xff, 0xff, 0xff, 0xff, 0xaf, 0xff};
  1139. ==================================================== New file src/sinkmask_11.h
  1140. /* $Header: sinkmask_11.h,v 1.1 88/02/06 16:55:53 rfrench Exp $ */
  1141. #define sink_mask_width 48
  1142. #define sink_mask_height 48
  1143. static char sink_mask_bits[] = {
  1144.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1145.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1146.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1147.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1148.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1149.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1150.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1151.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1152.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1153.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1154.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1155.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1156.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1157.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1158.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1159.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1160.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1161.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1162.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1163.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1164.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1165.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1166.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1167.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1168.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1169.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1170.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1171.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1172.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1173.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1174.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1175.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1176.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1177.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1178.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1179.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1180.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1181.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1182.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1183.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1184.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1185.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1186.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1187.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1188.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1189.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1190.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1191.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; 
  1192.