home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / RELNOTES.TXT < prev    next >
Encoding:
Text File  |  1991-08-28  |  85.0 KB  |  2,377 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                     X Window System, Version 11, Release 5
  8.  
  9.                                  Release Notes
  10.  
  11.                             MIT X Consortium staff
  12.  
  13.                       MIT Laboratory for Computer Science
  14.  
  15.  
  16.  
  17. Copyright (C) 1991 by the Massachusetts Institute of Technology.
  18.  
  19. Permission to use, copy, modify, and distribute this document for  any  purpose
  20. and without fee is hereby granted, provided that the above copyright notice and
  21. this permission notice appear in all copies, and that the name of  MIT  not  be
  22. used  in advertising or publicity pertaining to this document without specific,
  23. written prior permission.  MIT makes no representations about  the  suitability
  24. of  this document for any purpose.  It is provided ``as is'' without express or
  25. implied warranty.
  26.  
  27. X Window System is a trademark of MIT.
  28.  
  29.  
  30.  
  31. This document describes how to build, install, and get started with  Release  5
  32. of  the  X Window System from MIT and gives a brief overview of the contents of
  33. the release.
  34.  
  35. 1.  For the Impatient Explorer
  36.  
  37. For those of you who will try to build the  distribution  without  reading  the
  38. entire release notes first, here is a quick summary of what to do.
  39.  
  40. If you want to build with gcc, edit  mit/config/site.def  by  uncommenting  the
  41. HasGcc line.
  42.  
  43. If  you   want   to   install   into   somewhere   other   than   /usr/bin/X11,
  44. /usr/include/X11,  etc.,  edit  mit/config/site.def by uncommenting the Projec-
  45. tRoot lines and changing "/usr/X11R5" to whatever directory you want to install
  46. into.  (Do not use DESTDIR.)
  47.  
  48. Check the appropriate mit/config/vendor.cf file to make sure  that  OSMajorVer-
  49. sion and OSMinorVersion are set correctly (change them if necessary).
  50.  
  51. Find the BootstrapCFlags line, if any, in the vendor.cf file.  If  there  isn't
  52. one, cd to the mit directory and type:
  53.  
  54.      make World >& world.log
  55.  
  56. If there is a BootstrapCFlags, take its value1 and type:
  57. _________________________
  58. 1.  If you are using the x386.cf file, you will have  to  compute  the  correct
  59. value.
  60.  
  61.  
  62.  
  63.  
  64. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                      - 2 -
  71.  
  72.  
  73.      make World BOOTSTRAPCFLAGS="value" >& world.log
  74.  
  75. Do not call the output file ``make.log'', or it will be deleted.  If the  build
  76. is successful, you can install most of it with:
  77.  
  78.      make install >& install.log
  79.  
  80. You can install man pages with:
  81.  
  82.      make install.man >& man.log
  83.  
  84. You can install lint libraries (if desired) with:
  85.  
  86.      make install.ln >& lintlib.log
  87.  
  88. If things fail, read the rest of the release notes.
  89.  
  90. 2.  Brief Overview of the Distribution
  91.  
  92. (If you want, you can skip to the  next  chapter  first,  and  get  your  build
  93. started.   While  it is compiling you will have plenty of time to read the rest
  94. of the release notes.)
  95.  
  96. There are two parts to the Release 5 distribution: MIT software and  documenta-
  97. tion, and user-contributed software and documentation.  The MIT part contains:
  98.  
  99. X Consortium Standards
  100.  
  101.      The MIT X Consortium produces standards:  documents which  define  network
  102.      protocols, programming interfaces, and other aspects of the X environment.
  103.      See the XStandards man page for a list of standards.  See the  XConsortium
  104.      man page for information about the X Consortium.
  105.  
  106. Sample Implementations
  107.  
  108.      For most of our standards, we provide  sample  implementations  to  demon-
  109.      strate  proof  of  concept.   These are not reference implementations; the
  110.      written specifications define the standards.
  111.  
  112. Fonts
  113.  
  114.      A collection of bitmap and outline fonts are included in the distribution,
  115.      contributed by various individuals and companies.
  116.  
  117. Utility Libraries
  118.  
  119.      A number of libraries, such as the Athena Widget Set, are included.  These
  120.      are  not  standards,  but are used in building MIT applications and may be
  121.      useful in building other applications.
  122.  
  123. Sample Programs
  124.  
  125.      We also provide a number of application programs.  A  few  of  these  pro-
  126.      grams,  such  as  xdm,  should  be  considered  essential  in  almost  all
  127.  
  128.  
  129.  
  130. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                      - 3 -
  137.  
  138.  
  139.      environments.  The rest of the applications carry no special status,  they
  140.      are  simply  programs  that have been developed and/or maintained by MIT X
  141.      Consortium staff.  In some cases, you will  find  better  substitutes  for
  142.      these programs in the user-contributed software.
  143.  
  144. The user-contributed part contains whatever  people  contribute.   You  find  a
  145. variety  of software and documentation here: application programs, demos, exam-
  146. ples, libraries, Asian input methods, X server extensions, etc.
  147.  
  148. 2.1.  Structure of the MIT Sources
  149.  
  150. All of the MIT sources are under a single directory, mit.  Sources  are  organ-
  151. ized into the following subdirectories:
  152.  
  153. clients
  154.  
  155.      This directory contains most of the sample applications.  See the  program
  156.      man pages for details.
  157.  
  158. config
  159.  
  160.      This directory contains configuration files and the imake program used  to
  161.      build the release.  Details are covered in other sections below.
  162.  
  163. demos
  164.  
  165.      This directory contains a small collection of graphics demonstration  pro-
  166.      grams,  a  few  utility/test  programs, and some performance demonstration
  167.      programs.  These are by no means the ``best'' demo programs  around,  they
  168.      just happen to be ones we try to maintain.
  169.  
  170. doc
  171.  
  172.      This directory contains troff sources to X  Consortium  standards,  server
  173.      internals documentation, documentation for various utility libraries, some
  174.      useful tutorial material.
  175.  
  176. extensions
  177.  
  178.      This directory contains implementations of X server extensions,  both  the
  179.      server  internals and the application programming libraries, and some test
  180.      programs.  Of particular note here, new in Release 5, is  PEX,  the  PHIGS
  181.      Extension  to  X  used  for 3D graphics, and the PHIGS programming library
  182.      which interfaces to the PEX protocol.
  183.  
  184. fonts
  185.  
  186.      This directory contains bitmap fonts in source form, some outline fonts, a
  187.      sample  font  server, a utility font library used by the X server and font
  188.      server, a client font library for interacting with the  font  server,  and
  189.      programs for building fonts and querying the font server.
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                      - 4 -
  203.  
  204.  
  205. hardcopy
  206.  
  207.      This directory contains pre-generated PostScript files for the client  man
  208.      pages  and  for most of the documentation found in the doc directory.  The
  209.      files are compressed with compress to save disk space.  If you do not have
  210.      compress  on your system, you will find a version in the mit/util/compress
  211.      directory.
  212.  
  213. include
  214.  
  215.      This directory contains various library-independent C header files  and  a
  216.      collection of bitmap files.
  217.  
  218. lib
  219.  
  220.      This directory contains programming libraries and support files.  Of  note
  221.      are  Xlib  (the  lowest-level  C  programming  interface  to X), Xt (the X
  222.      Toolkit Intrinsics), Xmu (an eclectic set of utility functions), Xaw  (the
  223.      Athena Widget Set), and CLX (a Common Lisp interface to X).
  224.  
  225. man
  226.  
  227.      This directory contains a few top-level man pages about the release  (gen-
  228.      eral  information, server access control mechanisms, the X Consortium, and
  229.      X Consortium standards),  and  man  pages  for  some  of  the  programming
  230.      libraries.
  231.  
  232. rgb
  233.  
  234.      This directory contains a program to generate the color database  used  by
  235.      the X server and sample databases.
  236.  
  237. server
  238.  
  239.      This directory contains the  X  server  sources,  both  device-independent
  240.      (dix)  and  device-dependent (ddx).  In this release, there is support for
  241.      building the following servers:
  242.  
  243.      DECstation 2100/3100 monochrome and color displays
  244.      DECstation 5000 CX and MX displays
  245.      IBM RS/6000 skyway adapter
  246.      Apple Macintosh monochrome and color displays
  247.      MIPS monochrome and color displays
  248.      OMRON LUNA monochrome displays (color displays operate in monochrome)
  249.      Tektronix 4319 color display
  250.      VAXstation QVSS and QDSS displays
  251.      Sun monochrome and 8-bit color displays (with GX support)
  252.      Various VGA displays under System V/386
  253.  
  254.      If your favorite hardware is not listed above, please do not blame  us  at
  255.      MIT,  we  ship what Consortium members provide.  Only in a few cases do we
  256.      try to maintain device-specific software for our own development needs.
  257.  
  258. util
  259.  
  260.  
  261.  
  262. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                      - 5 -
  269.  
  270.  
  271.      This directory contains miscellaneous utility programs and  shell  scripts
  272.      used to build, maintain, and install the release.
  273.  
  274. 3.  Building the Release
  275.  
  276. The core distribution (code under the mit directory) has been built and  tested
  277. at MIT on the following systems:
  278.  
  279.      AIX 3.1.5, on IBM RS/6000
  280.      Apollo SR10.3 (very minimal testing, bsd4.3 only)
  281.      AT&T Unix System V Release 4 V2, on AT&T WGS6386
  282.      A/UX 2.0.1
  283.      HP-UX 7.0, on HP9000/s300
  284.      IRIX 4.0
  285.      Mach 2.5 Version 1.13, on OMRON Luna 88k
  286.      NEWS-OS 4.1, on Sony NWS-1850
  287.      NEWS-OS 5.0U, on Sony NWS-3710
  288.      SunOS 4.1.1, on Sun 3, Sparc 1, and Sparc 2
  289.      Ultrix-32 4.2, VAX and RISC
  290.      UNICOS 5.1
  291.      UTek 4.0
  292.      VAX 4.3bsd (with unknown local changes)
  293.  
  294. In somes cases, we have not used the most recent version of the operating  sys-
  295. tem  (sorry).   Support for earlier versions of the operating systems listed is
  296. not claimed, and not guaranteed.
  297.  
  298. In addition to the systems above, support has been provided by vendors for:
  299.  
  300.      AIX 2.2 and AOS 4.3, on IBM RT
  301.      AIX 1.2.1, on IBM PS/2
  302.      ConvexOS V9.0
  303.      DG/UX 4.32
  304.      INTERACTIVE UNIX Version 2.2.1
  305.      Mach 2.5 Version 1.40, on OMRON Luna 68k
  306.      Motorola R32V2/R3V6.2 and R40V1
  307.      RISCOS 4.50
  308.      UNIOS-B 4.3BSD UNIX: 2.00
  309.      Unix System V/386 Release 3.2, on ESIX, SCO, and AT&T (``work in progress'')
  310.      Unix System V/386 Release 4.0, on DELL
  311.  
  312. 3.1.  Unpacking the Distribution
  313.  
  314. The distribution normally comes as multiple tar files, either on tape or across
  315. a  network.   Create  a directory to hold the distribution, cd to it, and untar
  316. everything from that directory.  For example:
  317.  
  318.      mkdir sourcedir
  319.      cd sourcedir
  320.      tar xfp tar-file-or-tape-device
  321.  
  322. If you have obtained compressed and split tar files over the network, then  the
  323. sequence for each part of the mit directory might be:
  324.  
  325.  
  326.  
  327.  
  328. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                      - 6 -
  335.  
  336.  
  337.      cd ftp-dir/mit-N
  338.      cat mit-N.?? | uncompress | (cd sourcedir; tar xfp -)
  339.  
  340. The sequence for each part of the contrib directory might be:
  341.  
  342.      cd ftp-dir/contrib-N
  343.      cat contrib-N.?? | uncompress | (cd sourcedir; tar xfp -)
  344.  
  345. The sourcedir directory you choose can be anywhere in any of  your  filesystems
  346. that  is  convenient  to  you.  After extracting the release, you should end up
  347. with an mit subdirectory, and  a  contrib  subdirectory  if  you  unpack  user-
  348. contributed  software.   You  will  need  about  100 megabytes of disk space to
  349. unpack the mit directory contents; building it will of course require more disk
  350. space.
  351.  
  352. 3.2.  Symbolic Link Trees
  353.  
  354. If you expect to build the distribution on more than one machine using a shared
  355. source tree, or you just want to keep the source tree pure, you may want to use
  356. the shell script mit/util/scripts/lndir.sh to create a symbolic  link  tree  on
  357. each  build  machine.   This is fairly expensive in disk space, however.  To do
  358. this, create a directory for the build, cd to it, and type:
  359.  
  360.      sourcedir/mit/util/scripts/lndir.sh sourcedir
  361.  
  362. where sourcedir is the pathname of the directory where you stored the  sources.
  363. All  of  the  build  instructions  given below should then be done in the build
  364. directory on each machine, rather than in the source directory.
  365.  
  366. The shell script is reasonably portable but quite slow to execute.  If you want
  367. you can instead try compiling a similar C program, but it is slightly tricky to
  368. do before the distribution is built; cd to the directory mit/util/progs and try
  369. typing:
  370.  
  371.      ln -s ../../include X11
  372.      cc -o lndir -I. lndir.c
  373.  
  374. If it compiles and links, it will probably work; otherwise you can try typing:
  375.  
  376.      cc -o lndir -I. -DNOSTDHDRS lndir.c
  377.  
  378. If it still fails, use the shell script.
  379.  
  380. 3.3.  Setting Configuration Parameters
  381.  
  382. You will notice that few if any of  the  subdirectories  under  mit  contain  a
  383. Makefile,  but  they do contain an Imakefile.  The Imakefile is a template file
  384. used to create a Makefile containing build rules and variables appropriate  for
  385. the  target  machine.  The Makefile is generated by the program imake.  Most of
  386. the configuration work prior to building the release is to  set  parameters  so
  387. that imake will generate correct files.
  388.  
  389. The directory mit/config contains configuration files that control how the dis-
  390. tribution  is  built.  On systems directly supported by this distribution, only
  391.  
  392.  
  393.  
  394. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                      - 7 -
  401.  
  402.  
  403. minimal editing of these files should be necessary.  If your system is not sup-
  404. ported  by  the distribution but conforms to ANSI C and POSIX.1 and has socket-
  405. style networking, then you should be able to build  a  new  configuration  file
  406. relatively easily.  Otherwise, edits to many files throughout the system may be
  407. necessary.  We only deal with minor editing for supported systems here.
  408.  
  409. The main files to be concerned with in the mit/config  directory  are  site.def
  410. and  one  of  the  vendor.cf  files.  The site.def file should be used for most
  411. site-specific configuration customizations.  The .cf file should normally  only
  412. need to be edited if you are using a different release of the operating system.
  413.  
  414. 3.3.1.  The vendor.cf File
  415.  
  416. Find the appropriate .cf file from this table:
  417.  
  418.      AIX                      ibm.cf
  419.      AOS                      ibm.cf
  420.      Apollo                   apollo.cf
  421.      AT&T Unix SVR4           att.cf
  422.      A/UX                     macII.cf
  423.      BSD                      bsd.cf
  424.      ConvexOS                 convex.cf
  425.      DG/UX                    DGUX.cf
  426.      HP-UX                    hp.cf
  427.      INTERACTIVE              x386.cf
  428.      IRIX                     sgi.cf
  429.      Mach (Luna)              luna.cf
  430.      Motorola                 moto.cf
  431.      NEWS-OS                  sony.cf
  432.      RISCOS                   Mips.cf
  433.      SunOS                    sun.cf
  434.      Ultrix                   ultrix.cf
  435.      UNICOS                   cray.cf
  436.      UTek                     pegasus.cf
  437.      UNIOS-B                  luna.cf
  438.      Unix System V/386        x386.cf
  439.  
  440. Look through this file, and check the OSMajorVersion and OSMinorVersion values.
  441. The  numbers have been preset to what was tested at MIT or what was supplied by
  442. the vendor.  If  the  version  numbers  match  the  operating  system  you  are
  443. currently  running, all is well.  If they do not, you will need to edit to file
  444. to make them correct.  In a few cases (specifically changing UNICOS from 5.1 to
  445. 6.0)  there  should not be a problem in moving the version numbers forward to a
  446. newer release.  However, if you are moving the version  numbers  backwards,  or
  447. moving forward to a version that hasn't been pre-tested, you may have problems,
  448. and you have have to edit other parts of the file (and possibly other files) to
  449. get things to work.
  450.  
  451. You can browse through the rest of the items in the .cf file, but most of  them
  452. you should not need to edit.
  453.  
  454. 3.3.2.  The site.def File
  455.  
  456. There are  two  main  variables  to  set  in  the  site.def  file:  HasGcc  and
  457.  
  458.  
  459.  
  460. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                      - 8 -
  467.  
  468.  
  469. ProjectRoot.   If  you are going to compile the distribution with gcc, find the
  470. line that looks like
  471.  
  472.      /* #define HasGcc YES */
  473.  
  474. and remove the comment markers, turning it into
  475.  
  476.      #define HasGcc YES
  477.  
  478. If you are sharing a single site.def across multiple systems, you can do  some-
  479. thing  more  complicated.   For example, if you only want to use gcc on a Sun 3
  480. (but not on Sparcs) you might use this:
  481.  
  482.      #ifdef SunArchitecture
  483.      #define HasGcc mc68000
  484.      #endif
  485.  
  486. The most common error when using gcc is to fail to run the  fixincludes  script
  487. (from  the gcc distribution) when installing gcc.  Make sure you have done this
  488. before compiling the release.  Another common error is likely to be  using  gcc
  489. ANSI  C  include  files when the vendor operating system supplies correct ones.
  490. The gcc include files assert.h, limits.h, and stddef.h are prime candidates for
  491. not installing.
  492.  
  493. The ProjectRoot  variable  controls  where  the  software  will  eventually  be
  494. installed.   The  default  as  distributed  for most systems is to install into
  495. ``system'' directories: /usr/bin/X11, /usr/include/X11, /usr/lib, and  /usr/man
  496. (this  is  the  behaviour  when  ProjectRoot is not defined).  If you prefer to
  497. install into alternate directories, the simplest thing to do is to set  Projec-
  498. tRoot.   Find the four ProjectRoot lines in the site.def file, and again remove
  499. the ``/*'' and ``*/'' comment markers that  surround  them.   You  will  see  a
  500. default  choice  for  ProjectRoot  of  /usr/X11R5;  if you don't like that one,
  501. replace it with another.  Assuming you have set  the  variable  to  some  value
  502. /path,  files  will  be installed into /path/bin, /path/include/X11, /path/lib,
  503. and /path/man.
  504.  
  505. Note that in a few cases (ibm.cf and x386.cf) the vendor-supplied .cf file sup-
  506. plies  a ProjectRoot by default.  If you want to accept this one, do not uncom-
  507. ment the one in site.def; otherwise the one you place in site.def will override
  508. the default setting.
  509.  
  510. The directories where the software will be installed are compiled in to various
  511. programs  and  files  during the build process, so it is important that you get
  512. the configuration correct at the outset.  If you change your  mind  later,  you
  513. will want to do a ``make Everything'' to rebuild correctly.
  514.  
  515. Notice that the site.def file  was  two  parts,  one  protected  with  ``#ifdef
  516. BeforeVendorCF''  and  one with ``#ifdef AfterVendorCF''.  The file is actually
  517. processed twice, once before the .cf file and once after.  About the only thing
  518. you need to set in the ``before'' section is HasGcc; just about everything else
  519. can be set in the ``after'' section.
  520.  
  521. There are a large number of parameters that you can modify to change what  gets
  522. built  and  how  it gets built.  An exhaustive list and explanation will not be
  523.  
  524.  
  525.  
  526. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                      - 9 -
  533.  
  534.  
  535. given here; you can browse through mit/config/README to see a list  of  parame-
  536. ters.   However,  here  are  some  notable  parameters  that you can set in the
  537. ``after'' section:
  538.  
  539. BuildXsi and BuildXimp
  540.  
  541.      New in this release, Xlib contains  support  for  internationalized  input
  542.      methods,  using  library-  or  network-based  implementation methods.  The
  543.      implementation details internal to Xlib can vary considerably depending on
  544.      the  types  of  input  methods  supported.  In this release, two different
  545.      implementations are supported, named Xsi and Ximp.   As  distributed,  the
  546.      default  on  all  systems  except  Sony  is  Xsi.  If you want to use Ximp
  547.      instead, add this:
  548.  
  549.      #define BuildXimp YES
  550.  
  551. BuildServer
  552.  
  553.      This controls whether or not an X server is built.  If the variable is not
  554.      set  to NO in the .cf file, then the default is to build a server.  If you
  555.      want to disable the server, add this:
  556.  
  557.      #define BuildServer NO
  558.  
  559. BuildFonts
  560.  
  561.      Compiled fonts take up a lot of disk space.  In this release, the compiled
  562.      form  (called  ``pcf'') can be shared across all machines of all architec-
  563.      tures, so you may only want to build the fonts on one machine.  To disable
  564.      font building, add this:
  565.  
  566.      #define BuildFonts NO
  567.  
  568. BuildPex
  569.  
  570.      PEX is an X extension supporting 3-D graphics and  the  PHIGS  programming
  571.      interface.   The  PEX  sources are known to cause some compilers to exceed
  572.      their static symbol table sizes.  If this happens to you, you can  disable
  573.      PEX by adding this:
  574.  
  575.      #define BuildPex NO
  576.  
  577. ManSuffix
  578.  
  579.      User program man pages are installed by default in  subdirectory  ``mann''
  580.      with suffix ``.n''.  You can change this to ``man1'' and ``.1'', for exam-
  581.      ple, by adding this:
  582.  
  583.      #define ManSuffix 1
  584.  
  585. InstallLibManPages
  586.  
  587.      By default, the programming library man pages (Xlib,  Xt,  various  exten-
  588.      sions)  are  installed along with all of the other man pages.  The library
  589.  
  590.  
  591.  
  592. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                     - 10 -
  599.  
  600.  
  601.      pages constitute a considerable number of files.  If you do not expect  to
  602.      be  programming  with X, or prefer using other forms of documentation, you
  603.      can disable installation of the library pages by adding this:
  604.  
  605.      #define InstallLibManPages NO
  606.  
  607. InstallXdmConfig and InstallXinitConfig
  608.  
  609.      The xdm and xinit programs are the normal  ways  to  run  X  servers.   By
  610.      default,  the configuration files for these programs are not installed, to
  611.      avoid inadvertently destroying existing configuration files.  If  you  are
  612.      not  yet using xdm or xinit, or will be installing into a new destination,
  613.      or do not wish to retain your old configuration files, add these:
  614.  
  615.      #define InstallXdmConfig YES
  616.      #define InstallXinitConfig YES
  617.  
  618. XdmServersType
  619.  
  620.      Some of the xdm config files are generated based on configuration  parame-
  621.      ters.   One  of  the  files  controls  whether  an  X server is started by
  622.      default.  By default the choice is made based on whether an  X  server  is
  623.      built  as  part  of this distribution (the BuildServer parameter).  If you
  624.      are not building a server, but you will be running a product server on the
  625.      workstation under xdm, you should add this:
  626.  
  627.      #define XdmServersType ws
  628.  
  629. HasXdmAuth
  630.  
  631.      This release supports  a  DES-based  form  of  authorization  called  XDM-
  632.      AUTHORIZATION-1.   The  source  file  mit/lib/Xdmcp/Wraphelp.c,  which  is
  633.      necessary for this to compile, might not be included in your  distribution
  634.      due to possible export regulations; if it is not included and you are a US
  635.      citizen, you should be able to obtain  the  file  over  the  network.   To
  636.      enable building of this mechanism, add this:
  637.  
  638.      #define HasXdmAuth YES
  639.  
  640. InstallFSConfig
  641.  
  642.      New to this release is a network font server, fs.  By default, the  confi-
  643.      guration  files  for  the  font  server  are  not installed.  To have them
  644.      installed, add this:
  645.  
  646.      #define InstallFSConfig YES
  647.  
  648. MotifBC
  649.  
  650.      If you want to use the Release 5 Xlib and Xt with Motif 1.1, you will need
  651.      to enable a backward compatibility flag, by adding this:
  652.  
  653.      #define MotifBC YES
  654.  
  655.  
  656.  
  657.  
  658. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                     - 11 -
  665.  
  666.  
  667. 3.4.  System Pitfalls
  668.  
  669. On a few systems, you are likely to have build problems unless  you  make  some
  670. minor  changes  to  the  system.  Naturally, you should exercise caution before
  671. making changes to system files, but these are our recommendations based on  our
  672. experience.
  673.  
  674. On VAX Ultrix systems, you may find that <stdlib.h>  contains  declarations  of
  675. malloc,  calloc,  and  realloc with a return value of ``void *''.  You may find
  676. this causes problems when compiling with a non-ANSI-C compiler, in which case a
  677. workaround  is  to  change the return values to ``char*'' in the ``#else'' sec-
  678. tion.
  679.  
  680. Ultrix may not provide <locale.h> unless you load the Internationalization sub-
  681. set.   You  will  need  this file to compile the distribution (or else you will
  682. need to reset a configuration parameter, see below).
  683.  
  684. On SunOS systems, you may find that statically linking (when debugging) against
  685. both  Xlib  and  the  libc  will result in unresolved symbols to dynamic linker
  686. functions, because Xlib contains calls to wcstombs.   Either  link  dynamically
  687. against libc, or compile and link the stub routines in mit/util/misc/dlsym.c.
  688.  
  689. On Sun 3s, the default is to compile library files  with  no  special  floating
  690. point assumptions.  If all of your Sun 3s have floating point hardware, you may
  691. want to change this, for better performance of Xlib color functions.  For exam-
  692. ple, in the ``after'' section of your site.def file, you might add:
  693.  
  694.      #if defined(SunArchitecture) && defined(mc68000)
  695.      #undef LibraryCCOptions
  696.      #define SharedLibraryCCOptions -f68881 -pipe
  697.      #endif
  698.  
  699. On AOS, you may find that <stdarg.h> is missing.  In that case, you  should  be
  700. able to copy mit/util/misc/rt.stdarg.h to create the file.
  701.  
  702. On some System V/386 systems, you may find when using gcc  in  ANSI  mode  that
  703. there are inconsistent declarations between <memory.h> and <string.h>.  In that
  704. case, you may find it convenient to remove <memory.h> and make  it  a  link  to
  705. <string.h>.
  706.  
  707. On some System V/386 systems, you may need to build and install a  dbm  library
  708. before  building  the  X  server  and  RGB  database.   One  can  be  found  in
  709. contrib/util/sdbm.
  710.  
  711. 3.4.1.  Internationalization
  712.  
  713. This release has support for internationalization, based  on  the  ANSI  C  and
  714. POSIX  locale  model.   On some systems, you may discover that while the locale
  715. interface is supported, only the ``C'' locale is actually provided in the  base
  716. operating system.  If you have such a system, and would like to experiment with
  717. a broader set of locales, the Xlib implementation contains support you can use,
  718. although  use  of  this override has not really be tested.  You need to add the
  719. following defines to the StandardDefines parameter:
  720.  
  721.  
  722.  
  723.  
  724. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                     - 12 -
  731.  
  732.  
  733.      -DX_WCHAR -DX_LOCALE
  734.  
  735. In most cases you will have to directly edit the .cf file to do this,  or  else
  736. you  will  have to know what the rest of the values are supposed to be, and add
  737. this to site.def:
  738.  
  739.      #undef StandardDefines
  740.      #define StandardDefines previous-values -DX_WCHAR -DX_LOCALE
  741.  
  742. It is also possible to directly edit the file mit/include/Xosdefs.h,  but  this
  743. is not recommended.
  744.  
  745. With this setup, you will have to be careful that the system's  declaration  of
  746. wchar_t (in <stddef.h>) never gets used; this might be tricky.
  747.  
  748. 3.5.  Typing ``make World''
  749.  
  750. One more piece of information is required before building,  at  least  on  some
  751. systems: bootstrap flags.  Look in your .cf file for a line of the form
  752.  
  753.      #define BootstrapCFlags value
  754.  
  755. If there isn't one things are simple, otherwise things are only  slightly  more
  756. complicated.   If  there is more than one (for example, in ibm.cf, moto.cf, and
  757. sony.cf), then you need to select the right one; it should be pretty obvious by
  758. the  grouping  according  to operating system type.  Note that on A/UX you only
  759. need this value if you are using gcc, and that on a  Sun  you  only  need  this
  760. value if you are using an earlier version of the operating system.
  761.  
  762. If you are using x386.cf, you will have  to  ``compute''  the  value  from  the
  763. information given in the file.  You may also need to do other preparatory work;
  764. please read mit/server/ddx/x386/README.
  765.  
  766. If no value is required on your system, you can cd to  the  mit  directory  and
  767. start the build with:
  768.  
  769.      make World >& world.log
  770.  
  771. If a value is required, start the build with:
  772.  
  773.      make World BOOTSTRAPCFLAGS="value" >& world.log
  774.  
  775. You can call the output file something other than  ``world.log'',  but  do  not
  776. call  it  ``make.log''  because  files with this name are automatically deleted
  777. during the ``cleaning'' stage of the build.
  778.  
  779. Because the build can take several hours to complete, you will probably want to
  780. run it in the background, and keep a watch on the output.  For example:
  781.  
  782.      make World >& world.log &
  783.      tail -f world.log
  784.  
  785. If something goes wrong, the easiest thing is to just start over (typing ``make
  786. World''  again)  once  you  have  corrected the problem.  It is possible that a
  787.  
  788.  
  789.  
  790. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                     - 13 -
  797.  
  798.  
  799. failure will corrupt the top-level Makefile.  If that  happens,  simply  delete
  800. the file and recreate a workable substitute with:
  801.  
  802.      cp Makefile.ini Makefile
  803.  
  804. When the build completes, examine the world.log file for errors.  If you search
  805. for  `:'  (colon) characters, and skip the obvious compile lines, it is usually
  806. pretty easy to spot any errors.2
  807.  
  808. 4.  Installing the Release
  809.  
  810. Although it is possible to test the release before installing it, it is  a  lot
  811. easier  to  test  after it has been installed.  If everything is built success-
  812. fully, you can install the software by typing the following as root,  from  the
  813. mit directory:
  814.  
  815.      make install >& install.log
  816.  
  817. Again, you might want to run this in the background and use tail to  watch  the
  818. progress.
  819.  
  820. You can install the man pages by typing the following as  root,  from  the  mit
  821. directory:
  822.  
  823.      make install.man >& man.log
  824.  
  825. You can install lint libraries (useful if your systems does does  not  have  an
  826. ANSI C compiler) by typing the following as root, from the mit directory:
  827.  
  828.      make install.ln >& lintlib.log
  829.  
  830. 4.1.  Setting Up xterm
  831.  
  832. If your /etc/termcap  and  /usr/lib/terminfo  databases  do  not  have  correct
  833. entries   for   xterm,   sample   entries   are   provided   in  the  directory
  834. mit/clients/xterm/.  System V users may need to compile and  install  the  ter-
  835. minfo entry with the tic utility.
  836.  
  837. Since each xterm will need a separate pseudoterminal,  you  need  a  reasonable
  838. number  of  them for normal execution.  You probably will want at least 32 on a
  839. small, multiuser system.  On most systems, each pty has two devices,  a  master
  840. and    a   slave,   which   are   usually   named   /dev/tty[pqrstu][0-f]   and
  841. /dev/pty[pqrstu][0-f].  If you don't have at least the  ``p''  and  ``q''  sets
  842. configured (try typing ``ls /dev/?ty??''), you should have your system adminis-
  843. trator add them.  This is commonly done by running the MAKEDEV  script  in  the
  844. /dev directory with appropriate arguments.
  845.  
  846.  
  847.  
  848. _________________________
  849. 2.  Searching for colon does not work particularly well on the RS/6000  because
  850. it  appears in command lines when building shared libraries.  Try searching for
  851. colon followed by space.
  852.  
  853.  
  854.  
  855.  
  856. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                     - 14 -
  863.  
  864.  
  865. 4.2.  Starting Servers at System Boot
  866.  
  867. The xdm program is designed to be run automatically at system startup.   Please
  868. read the xdm man page for details on setting up configuration files; reasonable
  869. sample files are in mit/clients/xdm/config.  If your  system  uses  an  /etc/rc
  870. file  at  boot  time, you can usually enable xdm by placing the following at or
  871. near the end of the file:
  872.  
  873.      if [ -f /usr/bin/X11/xdm ]; then
  874.              /usr/bin/X11/xdm; echo -n ' xdm'
  875.      fi
  876.  
  877. The example here uses /usr/bin/X11, but if you have installed into a  different
  878. directory  (for example by setting ProjectRoot) then you need to substitute the
  879. correct directory.
  880.  
  881. If you are going to use the font server, you can also start it at boot time  by
  882. adding this:
  883.  
  884.      if [ -f /usr/bin/X11/fs ]; then
  885.              /usr/bin/X11/fs &; echo -n ' fs'
  886.      fi
  887.  
  888. If you are unsure about how system boot works, or if your system does  not  use
  889. /etc/rc, consult your system administrator for help.
  890.  
  891. 5.  Rebuilding the Release
  892.  
  893. You shouldn't need this right away, but eventually you are  probably  going  to
  894. make changes to the sources, for example by applying public patches distributed
  895. by MIT.  If only C source files are changed, you should be able to rebuild just
  896. by going to the mit directory and typing:
  897.  
  898.      make >& make.log
  899.  
  900. If configuration files are changed, the safest thing to do is type:
  901.  
  902.      make Everything >& every.log
  903.  
  904. ``Everything'' is similar to ``World'' in that it rebuilds every Makefile,  but
  905. unlike  ``World''  it does not delete the existing objects, libraries, and exe-
  906. cutables, and only rebuilds what is out of date.
  907.  
  908. Note  that  in  both  kinds  of  rebuilds  you  do  not  need  to  supply   the
  909. BootstrapCFlags value any more, the information is already recorded.
  910.  
  911. 6.  Building Contributed Software
  912.  
  913. The software in contrib is not set up to have everything  built  automatically.
  914. It  is  assumed  that  you will build individual pieces as you find the desire,
  915. time, and/or disk space.  You need to have the MIT software built and installed
  916. before  building  the  contributed  software.  To build a program or library in
  917. contrib, look in its directory for any special build instructions (for example,
  918. a  README  file).   If  there  are  none,  and there is an Imakefile, cd to the
  919.  
  920.  
  921.  
  922. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                     - 15 -
  929.  
  930.  
  931. directory and type:
  932.  
  933.      xmkmf -a
  934.      make >& make.log
  935.  
  936. This will build a Makefile in the directory and all  subdirectories,  and  then
  937. build  the software.  If the build is successful, you should be able to install
  938. it using the same commands used for the mit software:
  939.  
  940.      make install >& install.log
  941.      make install.man >& man.log
  942.  
  943. 7.  Filing Bug Reports
  944.  
  945. If you find a reproducible bug in software in the mit directory, or  find  bugs
  946. in the mit documentation, please send a bug report to MIT using the form in the
  947. file mit/bug-report and the destination address:
  948.  
  949.      xbugs@expo.lcs.mit.edu
  950.  
  951. Please try to provide all of the information requested on the  form  if  it  is
  952. applicable;  the  little  extra  time you spend on the report will make it much
  953. easier for us to reproduce, find, and fix the bug.  Receipt of bug  reports  is
  954. generally acknowledged, but sometimes it can be delayed by a few weeks.
  955.  
  956. Bugs in contrib software should not be reported to MIT.  Consult the documenta-
  957. tion for the individual software to see where (if anywhere) to report the bug.
  958.  
  959. 8.  Public Fixes
  960.  
  961. We occasionally put out patches to the MIT software, to fix any  serious  prob-
  962. lems   that   are   discovered.    Such   fixes   (if  any)  can  be  found  on
  963. export.lcs.mit.edu, in the directory pub/R5/fixes, using anonymous ftp.   Fixes
  964. are  applied using the patch program; a copy of it is included in the directory
  965. mit/util/patch.
  966.  
  967. For those without ftp access, individual fixes can be  obtained  by  electronic
  968. mail by sending a message to
  969.  
  970.      xstuff@expo.lcs.mit.edu
  971.  
  972. (Note that the host here is ``expo'', not ``export''.)  In the usual case,  the
  973. message  should  have  a subject line and no body, or a single-line body and no
  974. subject, in either case the line looking like:
  975.  
  976.      send fixes number
  977.  
  978. where number is a decimal number, starting from  one.   To  get  a  summary  of
  979. available fixes, make the line:
  980.  
  981.      index fixes
  982.  
  983. If you need help, make the line:
  984.  
  985.  
  986.  
  987.  
  988. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                     - 16 -
  995.  
  996.  
  997.      help
  998.  
  999. Some mailers produce mail headers  that  are  unusable  for  extracting  return
  1000. addresses.   If you use such a mailer, you won't get any response.  If you hap-
  1001. pen to know an explicit return path, you can include include one in the body of
  1002. your message, and the daemon will use it.  For example:
  1003.  
  1004.      path user%host.bitnet@mitvma.mit.edu
  1005.          or
  1006.      path host1!host2!user@uunet.uu.net
  1007.  
  1008. 9.  Configuring for a New Architecture
  1009.  
  1010. Here is a very brief overview of the files that imake reads.  All the files are
  1011. in  the  mit/config  directory,  except  for the Imakefile in the directory for
  1012. which the Makefile is being created.  The processing order is:
  1013.  
  1014.      Imake.tmpl               variables not related specifically to X
  1015.          site.def             site-specific BeforeVendorCF part
  1016.          *.cf                 machine-specific
  1017.              *Lib.rules       shared library rules
  1018.          site.def             site-specific AfterVendorCF part
  1019.          Project.tmpl         X-specific variables
  1020.              *Lib.tmpl        shared library variables
  1021.          Imake.rules          rules
  1022.      Imakefile                specific to the program or library
  1023.          Library.tmpl         library rules
  1024.          Server.tmpl          server rules
  1025. The indentation levels indicate what files include other files.
  1026.  
  1027. 9.1.  Imake.tmpl
  1028.  
  1029. The first part of Imake.tmpl determines which .cf file to include.  If your cpp
  1030. defines  a  unique  symbol, that should be used to select the file.  Otherwise,
  1031. you should place a -D symbol definition in BootstrapCFlags in your .cf file and
  1032. use that.  The canonical code to add to Imake.tmpl is:
  1033.  
  1034.      #ifdef symbol
  1035.      #define MacroIncludeFile <symbol.cf>
  1036.      #define MacroFile symbol.cf
  1037.      #undef symbol
  1038.      #define SymbolArchitecture
  1039.      #endif /* symbol */
  1040.  
  1041. 9.2.  imakemdep.h
  1042.  
  1043. You also need to edit the file imakemdep.h.  There  are  three  parts  to  this
  1044. file.   The first contains defines (beyond BootstrapCFlags) or compiler options
  1045. that are required to get imake itself built the first time.
  1046.  
  1047. The next section is for imake itself.  There is a hook in case  your  cpp  col-
  1048. lapses  tabs down to single spaces.  There is also a way to override the cpp to
  1049. use.  Finally, add specific defines to pass to cpp when  processing  configura-
  1050. tion files.
  1051.  
  1052.  
  1053.  
  1054. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                                     - 17 -
  1061.  
  1062.  
  1063. The last section is for makedepend, to tell it about  predefined  symbols  that
  1064. will be used to control inclusion of header files.
  1065.  
  1066.  
  1067. 9.3.  vendor.cf
  1068.  
  1069. Most of the rest of your vendor-specific configuration information  goes  here.
  1070. We  won't  try  to  tell you everything you need; study the other .cf files and
  1071. copy from systems that are similar.  One good rule to follow is to  not  define
  1072. anything that will get the correct default value from somewhere else; this will
  1073. make it easier to see what is special, and will make it  easier  for  sites  to
  1074. customize in their site.def.
  1075.  
  1076. If you have shared libraries, the convention  is  to  place  the  configuration
  1077. rules and standard parameters in a file named osLib.rules, and to place version
  1078. number parameters and make variables in a file named osLib.tmpl.  Look  at  the
  1079. existing files and mimic them.
  1080.  
  1081. 9.4.  Other Files
  1082.  
  1083. Unfortunately, for a new system there are a potentially large number  of  files
  1084. that you may have to modify.  Only the most prominent ones are listed here.
  1085.  
  1086.      mit/include/Xfuncs.h
  1087.      mit/include/Xmd.h
  1088.      mit/include/Xos.h
  1089.      mit/include/Xosdefs.h
  1090.      mit/clients/xload/get_load.c
  1091.      mit/clients/xman/vendor.c
  1092.      mit/clients/xman/vendor.h
  1093.      mit/clients/xterm/main.c
  1094.      mit/lib/X/Xlibnet.h
  1095.      mit/server/include/servermd.h
  1096.  
  1097. 10.  Writing Portable Code
  1098.  
  1099. In this section we give a brief introduction to using various header  files  to
  1100. aid in writing portable code.
  1101.  
  1102. 10.1.  <X11/Xosdefs.h>
  1103.  
  1104. The file <X11/Xosdefs.h> defines symbols that describe the  system  environment
  1105. for  ANSI  C  and  POSIX.   We  likely will extend it to other standards in the
  1106. future.  We have found these symbols useful in writing portable code, and  hope
  1107. that  other writers of X software will use them as well.  This file is not part
  1108. of any X Consortium standard, it is simply part of our software distribution.
  1109.  
  1110. <X11/Xosdefs.h> can be included directly by a file, or it will be automatically
  1111. included when you include <X11/Xos.h>.
  1112.  
  1113. The symbols in <X11/Xosdefs.h> tell when you can, for example, do
  1114.  
  1115.      #include <stdlib.h>
  1116.  
  1117.  
  1118.  
  1119.  
  1120. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.                                     - 18 -
  1127.  
  1128.  
  1129. without getting a ``no such header file'' error from the compiler.  If the sys-
  1130. tem provides a declaration for a function or value for a constant, it is impor-
  1131. tant to use the system's definition rather than providing  your  own,  particu-
  1132. larly  because  you  might not use function prototypes and the system might, or
  1133. vice versa.
  1134.  
  1135. <X11/Xosdefs.h> currently controls two symbols: X_NOT_STDC_ENV and X_NOT_POSIX.
  1136.  
  1137. X_NOT_STDC_ENV means the system does not have ANSI C header files.   Thus,  for
  1138. example,  if  X_NOT_STDC_ENV  is not defined, it is safe to include <stdlib.h>.
  1139. Do not confuse this symbol with  __STDC__,  which  says  whether  the  compiler
  1140. itself  supports  ANSI  C  semantics.  X_NOT_STDC_ENV is independent, and tells
  1141. what header files it is safe to include.
  1142.  
  1143. Lack of the symbol X_NOT_STDC_ENV does not mean that the system has <stdarg.h>.
  1144. This  header  file is part of ANSI C, but we have found it more useful to check
  1145. for it separately because many systems have all the ANSI C files we need except
  1146. this one.  __STDC__ is used to control inclusion of this file.
  1147.  
  1148. An example of using X_NOT_STDC_ENV might be to know when  the  system  declares
  1149. getenv:
  1150.  
  1151.      #ifndef X_NOT_STDC_ENV
  1152.      #include <stdlib.h>
  1153.      #else
  1154.      extern char *getenv();
  1155.      #endif
  1156.  
  1157. We usually put the standard case first in our code, using ``#ifndef''.
  1158.  
  1159. X_NOT_POSIX means the system does not have POSIX.1 header files.  Lack of  this
  1160. symbol  does not mean that the POSIX environment is the default.  You may still
  1161. have to define _POSIX_SOURCE before including the  header  file  to  get  POSIX
  1162. definitions.3
  1163.  
  1164. An example of using X_NOT_POSIX might be to  determine  the  type  that  getuid
  1165. would be declared by in <pwd.h>:
  1166.  
  1167.      #include <pwd.h>
  1168.      #ifndef X_NOT_POSIX
  1169.          uid_t uid;
  1170.      #else
  1171.          int uid;
  1172.          extern int getuid();
  1173.      #endif
  1174.          uid = getuid();
  1175.  
  1176. Note that both of these symbols, when declared, state a  non-compliance.   This
  1177. was  chosen  so that porting to a new, standard platform would be easier.  Only
  1178. _________________________
  1179. 3.  We have found it very unfortunate that POSIX did not define a standard sym-
  1180. bol that means ``give me POSIX, plus any non-conflicting vendor-specific defin-
  1181. itions''.
  1182.  
  1183.  
  1184.  
  1185.  
  1186. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                                     - 19 -
  1193.  
  1194.  
  1195. non-standard platforms need to add themselves to <X11/Xosdefs.h> to turn on the
  1196. appropriate symbols.
  1197.  
  1198. Not all systems for which we leave these symbols undefined strictly  adhere  to
  1199. the  relevant standards.  Thus you will sometimes see checks for a specific O/S
  1200. near a check for one of the Xosdefs.h symbols.  However, we have found it  most
  1201. useful  to  label  systems  as conforming even if they have some holes in their
  1202. compliance.  Presumably these holes will become fewer as time goes on.
  1203.  
  1204. 10.2.  <X11/Xos.h>
  1205.  
  1206. In general, <X11/Xos.h> should be used instead of the following header files:
  1207.  
  1208.      <string.h>
  1209.      <strings.h>
  1210.      <sys/types.h>
  1211.      <sys/file.h>
  1212.      <fcntl.h>
  1213.      <sys/time.h>
  1214.      <unistd.h>
  1215. This file is not part of any X Consortium standard, it is simply  part  of  our
  1216. software distribution.
  1217.  
  1218. Some common routines for which you need to  include  <X11/Xos.h>  before  using
  1219. are:
  1220.  
  1221.      index
  1222.      rindex
  1223.      strchr
  1224.      strrchr
  1225.      (all the other standard string routines)
  1226.      gettimeofday
  1227.      time
  1228.  
  1229. Data types and constants that should be obtained with <X11/Xos.h> are:
  1230.  
  1231.      caddr_t
  1232.      O_RDONLY
  1233.      O_RDWR
  1234.      (and other open constants)
  1235.      R_OK
  1236.      W_OK
  1237.      X_OK
  1238.      (and other fcntl constants)
  1239.  
  1240. Unfortunately, we did not create a header file for declaring malloc  correctly,
  1241. and it can be a bit tricky.  You can use what we currently have by copying, for
  1242. example, from mit/lib/Xt/Alloc.c:
  1243.  
  1244.      #ifndef X_NOT_STDC_ENV
  1245.      #include <stdlib.h>
  1246.      #else
  1247.      char *malloc(), *realloc(), *calloc();
  1248.      #endif
  1249.  
  1250.  
  1251.  
  1252. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                                     - 20 -
  1259.  
  1260.  
  1261.      #if defined(macII) && !defined(__STDC__)  /* stdlib.h fails to define these */
  1262.      char *malloc(), *realloc(), *calloc();
  1263.      #endif /* macII */
  1264.  
  1265. 10.3.  <X11/Xfuncs.h>
  1266.  
  1267. This file contains definitions of bcopy, bzero, and bcmp.4 You  should  include
  1268. this  header  in  any file that uses these functions.  This file is not part of
  1269. any X Consortium standard, it is simply part of our software distribution.
  1270.  
  1271. 10.4.  <X11/Xfuncproto.h>
  1272.  
  1273. This file contains definitions for writing function declarations to  get  func-
  1274. tion  prototypes to work right.  It deals with ANSI C compilers as well as pre-
  1275. ANSI C compilers that have parts of function prototypes implemented.  This file
  1276. is  not  part  of  any X Consortium standard, it is simply part of our software
  1277. distribution.
  1278.  
  1279. For external header files that might get used from C++, you should wrap all  of
  1280. your function declarations like this:
  1281.  
  1282.      _XFUNCPROTOBEGIN
  1283.      function declarations
  1284.      _XFUNCPROTOEND
  1285. When in doubt, assume that the header file might get used from C++.
  1286.  
  1287. A typical function declaration uses NeedFunctionPrototypes, like this:
  1288.  
  1289.      extern Atom XInternAtom(
  1290.      #if NeedFunctionPrototypes
  1291.          Display*            /* display */,
  1292.          _Xconst char*       /* atom_name */,
  1293.          Bool                /* only_if_exists */
  1294.      #endif
  1295.      );
  1296.  
  1297. If there are const parameters, use the symbol _Xconst instead, as above.  If it
  1298. is  plausible  to pass a string literal to a char* parameter, then it is a good
  1299. idea to declare the parameter with _Xconst, so that literals can be  passed  in
  1300. C++.
  1301.  
  1302. If there are nested function prototypes, use NeedNestedPrototypes:
  1303.  
  1304.      extern Bool XCheckIfEvent(
  1305.      #if NeedFunctionPrototypes
  1306.          Display*            /* display */,
  1307.          XEvent*             /* event_return */,
  1308.          Bool (*) (
  1309.      #if NeedNestedPrototypes
  1310.                     Display*                 /* display */,
  1311. _________________________
  1312. 4.  Yes, we should have used the ANSI C function names, but we thought  we  had
  1313. too much existing code using the BSD names.
  1314.  
  1315.  
  1316.  
  1317.  
  1318. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.                                     - 21 -
  1325.  
  1326.  
  1327.                     XEvent*                  /* event */,
  1328.                     XPointer                 /* arg */
  1329.      #endif
  1330.                   )          /* predicate */,
  1331.          XPointer            /* arg */
  1332.      #endif
  1333.      );
  1334.  
  1335. If there is a variable argument list, use NeedVarargsPrototypes:
  1336.  
  1337.      extern char *XGetIMValues(
  1338.      #if NeedVarargsPrototypes
  1339.          XIM /* im */, ...
  1340.      #endif
  1341.      );
  1342.  
  1343. If you have parameter types that will widen in  K&R  C,  then  you  should  use
  1344. NeedWidePrototypes:
  1345.  
  1346.      extern XModifierKeymap *XDeleteModifiermapEntry(
  1347.      #if NeedFunctionPrototypes
  1348.          XModifierKeymap*    /* modmap */,
  1349.      #if NeedWidePrototypes
  1350.          unsigned int        /* keycode_entry */,
  1351.      #else
  1352.          KeyCode             /* keycode_entry */,
  1353.      #endif
  1354.          int                 /* modifier */
  1355.      #endif
  1356.      );
  1357.  
  1358. If   you   use   _Xconst,   NeedNestedPrototypes,   NeedVarargsPrototypes,   or
  1359. NeedWidePrototypes,  then your function implementation also has to have a func-
  1360. tion prototype.  For example:
  1361.  
  1362.      #if NeedFunctionPrototypes
  1363.      Atom XInternAtom (
  1364.          Display *dpy,
  1365.          _Xconst char *name,
  1366.          Bool onlyIfExists)
  1367.      #else
  1368.      Atom XInternAtom (dpy, name, onlyIfExists)
  1369.          Display *dpy;
  1370.          char *name;
  1371.          Bool onlyIfExists;
  1372.      #endif
  1373.      {
  1374.          ...
  1375.      }
  1376.  
  1377. Actually, anytime you use a function prototype in a header file, you should use
  1378. a  function  prototype in the implementation, as required by ANSI C.  The MIT X
  1379. sources do not follow this (we've never had time to make all the changes),  and
  1380. there  are  almost certainly compilers that will complain if the implementation
  1381.  
  1382.  
  1383.  
  1384. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.                                     - 22 -
  1391.  
  1392.  
  1393. does not match the declaration.
  1394.  
  1395. 10.5.  Other Symbols
  1396.  
  1397. Do not use the names class, new, or index as variables or struct members.   The
  1398. names  class  and  new  are reserved words in C++, and you may find your header
  1399. files used by a C++ program someday.  Depending on your system,  index  can  be
  1400. defined  as  strchr  or  a macro in <X11/Xos.h>; this may cause problems if you
  1401. include this header file.
  1402.  
  1403. The following system-specific symbols are commonly used in X sources  where  OS
  1404. dependencies intrude:5
  1405.  
  1406.      USG       based on System V Release 2
  1407.      SYSV      based on System V Release 3
  1408.      SVR4      System V Release 4
  1409.  
  1410. For other system-specific symbols, look at the  StandardDefines  parameters  in
  1411. the mit/config/*.cf files.
  1412.  
  1413. 11.  What's New, What's Changed
  1414.  
  1415. In this section we briefly describe some of the more significant  new  features
  1416. of Release 5.
  1417.  
  1418. 11.1.  New standards
  1419.  
  1420. The following standards are new in Release 5:
  1421.  
  1422. X Font Service Protocol
  1423.  
  1424.      Instead of forcing each X server to read all fonts  from  the  filesystem,
  1425.      the  X  Font  Server Protocol makes it possible to manage fonts separately
  1426.      from the X server, directing the X server to request fonts  via  this  new
  1427.      Consortium standard network protocol from a font server.  In addition, for
  1428.      fonts which take a long time to open, this allows the X server to continue
  1429.      with other clients while the font server services the font requests.
  1430.  
  1431. XLFD changes for scalable fonts
  1432.  
  1433.      The X Logical Font Description standard has been  compatibly  enhanced  to
  1434.      allow clients to specify and use scalable fonts.
  1435.  
  1436. X Input Device Extension
  1437.  
  1438.      This extension has been promoted from Draft Standard  to  full  Consortium
  1439.      Standard with this release.
  1440.  
  1441. Inter-Client Communications Conventions
  1442.  
  1443.      This  standard  has  been  updated  to  cover  the  new  X  Device   Color
  1444. _________________________
  1445. 5.  At most one of these symbols should be defined on a given system!
  1446.  
  1447.  
  1448.  
  1449.  
  1450. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.                                     - 23 -
  1457.  
  1458.  
  1459.      Characterization Conventions for device-independent color support in Xlib.
  1460.  
  1461. 11.2.  General
  1462.  
  1463. We have tried hard with this release to make our  code  use  standard  features
  1464. from  POSIX.1  and  ANSI  C  when possible.  A new include file <X11/Xosdefs.h>
  1465. describes which systems comply or do not comply with these standards.
  1466.  
  1467. Two new X authorization schemes are included, a DES  based  private-key  system
  1468. which  was described in the R4 XDMCP document - XDM-AUTHORIZATION-1 (along with
  1469. the associated XDMCP authentication system XDM-AUTHENTICATION-1)  and  the  Sun
  1470. Secure  RPC based SUN-DES-1 system, which uses the SunOS supplied security sys-
  1471. tem.
  1472.  
  1473. 11.3.  Clients
  1474.  
  1475. Most clients participate in the WM_DELETE_WINDOW protocol.
  1476.  
  1477. New clients:  editres,  viewres,  xconsole,  xcmsdb.   New  demos:  beach_ball,
  1478. auto_box,  gpc,  xcmstest,  xgas,  x11perf.   Xlswins  has  been removed; it is
  1479. replaced by xwininfo -tree.  Moved to contrib: muncher, plaid.  Completely  new
  1480. implementation: bitmap and xmag.  Other changes of note:
  1481.  
  1482. editres
  1483.  
  1484.      Editres is a tool that allows users and application developers to view the
  1485.      full widget hierarchy of any X Toolkit client that speaks the Editres pro-
  1486.      tocol.  In addition editres will help the user construct resource specifi-
  1487.      cations,  allow the user to apply the resource to the application and view
  1488.      the results dynamically.  Once the user is happy with a resource  specifi-
  1489.      cation,  editres  will  append the resource string to the user's resources
  1490.      file.
  1491.  
  1492. xdm
  1493.  
  1494.      Xdm can now display a menu of hosts for XDMCP-capable terminals using  the
  1495.      new chooser client.  This is useful for X terminals that do not themselves
  1496.      offer such a menu.  XDMCP works with STREAMS.   A  new  setup  program  is
  1497.      invoked  by  xdm prior to putting up the login window; this program can be
  1498.      used to run xsetroot, xcmsdb,  and  do  any  other  custom  initialization
  1499.      required.
  1500.  
  1501. xterm
  1502.  
  1503.      Cuts of wrapped lines are now treated as a single line.   Cuts  of  multi-
  1504.      page  regions  now work and highlight correctly.  Pasting large amounts of
  1505.      data into xterm now works (on systems with properly-working pty  implemen-
  1506.      tations).   New arguments have been added to the send-signal action: quit,
  1507.      alarm.  The titeInibit resource has been  modified  to  also  inhibit  the
  1508.      escape  sequence  which  switches  to the alternate screen.  Two new items
  1509.      have been added to the VT Fonts menu: 5x7 (Tiny) and  10x20  (Huge).   The
  1510.      following  resources  have  been  added:  resizeGravity, bellSuppressTime,
  1511.      appcursorDefault, appkeypadDefault, ginTerminator,  autoWrap.   The  Xterm
  1512.      Control  Sequences  document  is  up to date.  Xterm is installed securely
  1513.  
  1514.  
  1515.  
  1516. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.                                     - 24 -
  1523.  
  1524.  
  1525.      when made setuid on SunOS 4.1.1 with shared libraries.
  1526.  
  1527. xmh
  1528.  
  1529.      Xmh now uses the MH environment variable, if set.  Xmh now supports check-
  1530.      ing   for   mail   in   multiple  maildrops.   Enhanced  participation  in
  1531.      WM_PROTOCOLS has been added.  New resources have  been  added,  including:
  1532.      checkpointInterval,  checkpointNameFormat,  mailInterval,  rescanInterval,
  1533.      showOnInc, noMailBitmap, newMailBitmap, newMailIconBitmap, and noMailIcon-
  1534.      Bitmap.   New  actions  have  been added: XmhWMProtocols, XmhShellCommand,
  1535.      XmhCheckForNewMail, XmhViewMarkDelete.  Better  recovery  from  unexpected
  1536.      inconsistencies with the filesystem has been implemented.  Better POP sup-
  1537.      port has been  added.   See  the  file  mit/clients/xmh/CHANGES  for  more
  1538.      details.
  1539.  
  1540. oclock
  1541.  
  1542.      Oclock has a new -transparent option.
  1543.  
  1544. xload
  1545.  
  1546.      Xload is secure on SunOS 4.1.1 with shared libraries.
  1547.  
  1548. xditview
  1549.  
  1550.      Xditview now supports pic, scalable fonts, settable device resolution, and
  1551.      has a better user interface.
  1552.  
  1553. 11.4.  Libraries in General
  1554.  
  1555. All of the useful libraries now use function prototypes by default for  systems
  1556. which  support  them.  SunOS shared libraries now use much less swap space than
  1557. in R4.  In addition, System V Release 4 and AIX 3.1 shared libraries  are  also
  1558. supported  now.   Configuring  new shared library systems should be much easier
  1559. than before.
  1560.  
  1561. 11.5.  Xlib
  1562.  
  1563. Two new major pieces of functionality have been added to Xlib: device  indepen-
  1564. dent  color,  and  internationalization (i18n).  In addition, a few other addi-
  1565. tions and improvements have been made.
  1566.  
  1567. 11.5.1.  Xlib Manual
  1568.  
  1569. The Xlib manual has been reorganized for Release 5.   Unfortunately,  this  may
  1570. cause  considerable  confusion  for  a  while when people quote section numbers
  1571. without reference to the release.  However, we feel that the  new  organization
  1572. is a considerable improvement.
  1573.  
  1574. 11.5.2.  Device-independent Color
  1575.  
  1576. The Xcms  (X  Color  Management  System)  functions  in  Xlib  support  device-
  1577. independent color spaces derivable from the CIE XYZ color space.  This includes
  1578. the CIE XYZ, xyY, L*u*v*, and L*a*b* color spaces as well as the  TekHVC  color
  1579.  
  1580.  
  1581.  
  1582. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.                                     - 25 -
  1589.  
  1590.  
  1591. space.   In  addition, linear RGB intensity value space has been added, as well
  1592. as gamma correction for device RGB  values,  and  a  uniform  syntax  has  been
  1593. adopted  for specifying colors in strings.  Xlib now supports client-side color
  1594. name databases, and the existing Xlib functions that  use  color  names  (e.g.,
  1595. XLookupColor  and  XAllocNamedColor)  now  handle all color spaces, so that the
  1596. contrivance of using XParseColor followed by XAllocColor is  no  longer  neces-
  1597. sary.   Xlib  provides  direct  programming  interfaces  for dealing with color
  1598. values in different spaces, and for converting  between  spaces.   New  device-
  1599. independent color spaces can also be added.  For details on the new color func-
  1600. tionality, read Chapter 6 of the new Xlib manual.
  1601.  
  1602. Monitors are characterized by data stored on root window  properties;  the  new
  1603. xcmsdb  program can be used to set these properties.  Unfortunately, you need a
  1604. color analyzer instrument to generate characterizations; choosing a random  one
  1605. will  almost  certainly produce inaccurate colors.  However, you will find some
  1606. sample    database    files    in    mit/clients/xcmsdb/datafiles    and     in
  1607. contrib/clients/ca100/monitors.
  1608.  
  1609. 11.5.3.  Internationalization
  1610.  
  1611. An internationalized application is one which is adaptable to the  requirements
  1612. of  different  native languages, local customs, and character string encodings.
  1613. The process of adapting the operation to a particular  native  language,  local
  1614. custom,  or string encoding is called localizaton.  A goal of internationaliza-
  1615. tion is to permit localization without program source modifications or recompi-
  1616. lation.
  1617.  
  1618. Internationalization in Xlib is based on the concept of  a  locale.   A  locale
  1619. defines  the  ``localized''  behavior of a program at run-time.  Locales affect
  1620. Xlib in its:
  1621.  
  1622. o    Encoding and processing of input method text
  1623.  
  1624. o    Encoding of resource files and values
  1625.  
  1626. o    Encoding and imaging of text strings
  1627.  
  1628. o    Encoding and decoding for inter-client text communication
  1629.  
  1630. Characters from various languages are represented in a computer using an encod-
  1631. ing.   Different  languages  have  different encodings, and there are even dif-
  1632. ferent encodings for the same characters in the same language.
  1633.  
  1634. Xlib provides support for localized text imaging and text input.  Sets of func-
  1635. tions  are  provided  for  multibyte  (char*)  text  as  well as wide character
  1636. (wchar_t) text in the form supported by the host C language  environment.   For
  1637. details  on  the new internationalization functionality, read Chapter 13 of the
  1638. new Xlib manual.
  1639.  
  1640. Two sample implementations of the internationalization mechanisms exist in this
  1641. release,  one  called Xsi and one called Ximp.  You will find documentation for
  1642. them  in  mit/doc/I18N  and  contrib/im,  and  locale   definition   files   in
  1643. mit/lib/nls.   In  contrib/im  you  will  also  find network-based Input Method
  1644. servers.
  1645.  
  1646.  
  1647.  
  1648. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.                                     - 26 -
  1655.  
  1656.  
  1657. Unfortunately, none of the programs in the MIT software use  the  new  interna-
  1658. tionalization  facilities.   However,  you  will  find  some  sample clients in
  1659. contrib/im, and internationalized versions  of  some  of  the  MIT  clients  in
  1660. contrib/clients.
  1661.  
  1662. 11.5.4.  Keysyms
  1663.  
  1664. By default a database of all registered vendor-private keysyms gets  installed,
  1665. so that Xlib can map between keysym values and names.
  1666.  
  1667. 11.5.5.  Resource Databases
  1668.  
  1669. A new SCREEN_RESOURCES property has been  defined,  permitting  screen-specific
  1670. resources  to be set, so that (for example) colors can be specified for a color
  1671. screen and not effect a monochrome screen on the same server.  The xrdb program
  1672. has been enhanced to ``do the right thing'' automatically in most cases.
  1673.  
  1674. New functions have been defined to merge a resource database  directly  from  a
  1675. file,  and  to  combine  two  databases with either ``augment'' or ``override''
  1676. semantics.
  1677.  
  1678. A ``#include'' syntax is now supported in resource files.  A  specific  example
  1679. of  using this is to have a customized app-defaults file (in an Xt application)
  1680. include the base app-defaults file.
  1681.  
  1682. A new reserved component name, ``?'', has been defined that  matches  a  single
  1683. level  in  the  resource hierarchy.  This makes it easier to override resources
  1684. specified in app-defaults files.
  1685.  
  1686. A new function, XrmEnumerateDatabase, has been defined to search  for  matching
  1687. entries  in  a resource database.  The appres program has been enhanced in this
  1688. release to become a convenient interface to this function.
  1689.  
  1690. A new function, XrmPermStringToQuark, has been introduced to avoid having  Xlib
  1691. allocate needless storage for constant strings.
  1692.  
  1693. 11.5.6.  Extensions
  1694.  
  1695. A new function has been added to permit an extension  to  convert  errors  with
  1696. additional data into Xlib format, and one has been added to permit an extension
  1697. to print out the values in an error handler.
  1698.  
  1699. 11.5.7.  Miscellaneous
  1700.  
  1701. A new type XPointer has been introduced, replacing  uses  of  the  non-standard
  1702. type caddr_t.  Old programs using caddr_t will still work, of course.
  1703.  
  1704. 11.5.8.  Performance
  1705.  
  1706. The new color and internationalization facilities have the  unfortunate  effect
  1707. of  making  executables  quite  a bit larger on systems that do not have shared
  1708. libraries.
  1709.  
  1710. The resource  database  functions  have  been  completely  rewritten  for  this
  1711.  
  1712.  
  1713.  
  1714. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.                                     - 27 -
  1721.  
  1722.  
  1723. release.   Databases should be significantly smaller in memory, and loading and
  1724. parsing resources should be faster.
  1725.  
  1726. 11.6.  Xt Intrinsics
  1727.  
  1728. At the data structure level, Release 5 retains  complete  binary  compatibility
  1729. with  Release  4.   The specification of the ObjectPart, RectObjPart, CorePart,
  1730. CompositePart,  ShellPart,   WMShellPart,   TopLevelShellPart,   and   Applica-
  1731. tionShellPart  instance  records was made less strict to permit implementations
  1732. to add internal fields to these structures.  Any implementation that chooses to
  1733. do  so  would,  of  course,  force a recompilation.  The Xlib specification for
  1734. XrmValue and XrmOptionDescRec was updated to use a new type, XPointer, for  the
  1735. addr  and value fields respectively, to avoid ANSI C conformance problems.  The
  1736. definition of XPointer is binary compatible with the previous implementation.
  1737.  
  1738. 11.6.1.  baseTranslations Resource
  1739.  
  1740. A new pseudo-resource, XtNbaseTranslations, was defined to  permit  application
  1741. developers  to  specify  translation tables in application defaults files while
  1742. still giving end users the ability to  augment  or  override  individual  event
  1743. sequences.   This  change will affect only those applications that wish to take
  1744. advantage of the new functionality, or those widgets that may  have  previously
  1745. defined a resource named ``baseTranslations''.
  1746.  
  1747. Applications wishing to take advantage of the new  functionality  would  change
  1748. their application defaults file, e.g., from
  1749.  
  1750.      app.widget.translations: value
  1751. to
  1752.  
  1753.      app.widget.baseTranslations: value
  1754. If it is important to the application to preserve complete compatibility of the
  1755. defaults  file  between  different  versions  of  the application running under
  1756. Release 4 and Release 5, the full translations can be replicated  in  both  the
  1757. ``translations'' and the ``baseTranslations'' resource.
  1758.  
  1759. 11.6.2.  Resource File Search Path
  1760.  
  1761. The current specification allows implementations greater flexibility in  defin-
  1762. ing  the  directory  structure  used to hold the application class and per-user
  1763. application defaults files.  Previous specifications required the  substitution
  1764. strings to appear in the default path in a certain order, preventing sites from
  1765. collecting all the files for a specific application together in one  directory.
  1766. The Release 5 specification allows the default path to specify the substitution
  1767. strings in any order within a single path entry.  Users will need to pay  close
  1768. attention to the documentation for the specific implementation to know where to
  1769. find these files and how  to  specify  their  own  XFILESEARCHPATH  and  XUSER-
  1770. FILESEARCHPATH values when overriding the system defaults.
  1771.  
  1772. 11.6.3.  Customization Resource
  1773.  
  1774. XtResolvePathname supports  a  new  substitution  string,  %C,  for  specifying
  1775. separate application class resource files according to arbitrary user-specified
  1776. categories.  The primary motivation for this addition was  separate  monochrome
  1777.  
  1778.  
  1779.  
  1780. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.                                     - 28 -
  1787.  
  1788.  
  1789. and color application class defaults files.  The substitution value is obtained
  1790. by querying the current resource database for  the  application  resource  name
  1791. ``customization'',  class  ``Customization''.   Any application that previously
  1792. used this resource name and class will need to be aware of  the  possibly  con-
  1793. flicting semantics.
  1794.  
  1795. 11.6.4.  Per-Screen Resource Database
  1796.  
  1797. To allow a user to specify separate preferences for each screen of a display, a
  1798. per-screen  resource  specification string has been added and multiple resource
  1799. databases are created; one for each screen.  This will affect  any  application
  1800. that  modified  the  (formerly  unique)  resource  database associated with the
  1801. display subsequent to the Intrinsics database  initialization.   Such  applica-
  1802. tions will need to be aware of the particular screen on which each shell widget
  1803. is to be created.
  1804.  
  1805. Although the wording of the specification changed substantially in the descrip-
  1806. tion  of  the process by which the resource database(s) is initialized, the net
  1807. effect is the same as in prior releases with the exception of  the  added  per-
  1808. screen  resource specification and the new customization substitution string in
  1809. XtResolvePathname.
  1810.  
  1811. 11.6.5.  Internationalization of Applications
  1812.  
  1813. Internationalization as defined by ANSI is a technology that allows support  of
  1814. an  application in a single locale.  In adding support for internationalization
  1815. to the Intrinsics the restrictions of this model have been followed.   In  par-
  1816. ticular, the new Intrinsics interfaces are designed to not preclude an applica-
  1817. tion from using other alternatives.  For this  reason,  no  Intrinsics  routine
  1818. makes  a  call  to  establish  the  locale.   However, a convenience routine to
  1819. establish the locale at initialize time has been provided, in  the  form  of  a
  1820. default  procedure that must be explicitly installed if the application desires
  1821. ANSI C locale behavior.
  1822.  
  1823. As many objects in X, particularly resource databases, now inherit  the  global
  1824. locale  when  they  are  created, applications wishing to use the ANSI C locale
  1825. model should use the new function XtSetLanguageProc to do so.
  1826.  
  1827. The internationalization additions also define event filters as a part  of  the
  1828. Xlib  Input  Method  specifications.   The  Intrinsics  enable the use of event
  1829. filters through additions to XtDispatchEvent.  Applications  that  may  not  be
  1830. dispatching  all  events through XtDispatchEvent should be reviewed in the con-
  1831. text of this new input method mechanism.
  1832.  
  1833. In order to permit internationalization of error messages the name and path  of
  1834. the error database file is now allowed to be implementation dependent.  No ade-
  1835. quate standard mechanism has yet been suggested  to  allow  the  Intrinsics  to
  1836. locate the database from localization information supplied by the client.
  1837.  
  1838. The previous specification for the syntax of the language string  specified  by
  1839. xnlLanguage has been dropped to avoid potential conflicts with other standards.
  1840. The language string syntax is now implementation-defined.  The  example  syntax
  1841. cited is consistent with the previous specification.
  1842.  
  1843.  
  1844.  
  1845.  
  1846. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.                                     - 29 -
  1853.  
  1854.  
  1855. 11.6.6.  Permanently Allocated Strings
  1856.  
  1857. In order to permit additional memory savings, an Xlib interface  was  added  to
  1858. allow  the  resource  manager  to  avoid copying certain string constants.  The
  1859. Intrinsics  specification  was  updated  to  explicitly  require   the   Object
  1860. class_name,   resource_name,  resource_class,  resource_type,  default_type  in
  1861. resource tables, Core  actions  string  field,  and  Constraint  resource_name,
  1862. resource_class,  resource_type,  and  default_type  resource  fields to be per-
  1863. manently allocated.  This explicit  requirement  is  expected  to  affect  only
  1864. applications that may create and destroy classes on the fly.
  1865.  
  1866. 11.6.7.  Arguments to Existing Functions
  1867.  
  1868. The  args  argument  to  XtAppInitialize,   XtVaAppInitialize,   XtOpenDisplay,
  1869. XtDisplayInitialize,  and  XtInitialize  were changed from Cardinal* to int* to
  1870. conform to pre-existing convention and avoid otherwise annoying typecasting  in
  1871. ANSI C environments.
  1872.  
  1873. 11.6.8.  Implementation
  1874.  
  1875. Function prototypes are now fully supported in the header files.
  1876.  
  1877. <X11/Intrinsic.h> no longer includes <X11/Xos.h> by default.  Inclusion of this
  1878. file  was a bug in earlier releases.  If you have old code that depends on this
  1879. bug, you can define -DXT_BC when you compile to get back the old behaviour.
  1880.  
  1881. String constants are now defined in a single array, saving memory and  external
  1882. symbols.   Note  that because the new implementation uses #defines, string con-
  1883. stants in widget header files which duplicate a constant defined by  Xt  should
  1884. either be removed or protected from a collision.
  1885.  
  1886. The translation manager facilities have been completely reimplemented  in  this
  1887. release,  resulting in substantially less memory consumed by some applications.
  1888. A number of other memory-saving changes have been implemented,  and  in  a  few
  1889. cases execution time should be faster.
  1890.  
  1891. The default keycode to keysym translator deals with all Latin keysyms.
  1892.  
  1893. 11.6.9.  Extension Events
  1894.  
  1895. Unfortunately, the Xt standard as of R5 still does not address  the  issues  of
  1896. integrating events from protocol extensions into the normal Xt dispatch mechan-
  1897. ism.  The adventurous will find a set of patches to Xt in  contrib/lib/Xt  that
  1898. attempt to address this problem.  These patches are non-standard, experimental,
  1899. subject to change, not guaranteed, may adversely affect your ability  to  apply
  1900. public patches from MIT, and have not reviewed by the X Consortium.
  1901.  
  1902. 11.7.  PEX
  1903.  
  1904. The PEX Sample Implementation (SI) is composed of several parts. The major com-
  1905. ponents  are  the extension to the X Server, which implements the PEX protocol,
  1906. and the client side Application Protocol  Interface  (API),  which  provides  a
  1907. mechanism  by  which  clients can generate PEX protocol.  The API provided with
  1908. the PEX-SI is the ISO IS PHIGS Binding and the yet  to  be  standardized  PHIGS
  1909.  
  1910.  
  1911.  
  1912. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.                                     - 30 -
  1919.  
  1920.  
  1921. PLUS Binding.
  1922.  
  1923. In addition to these major components, several other minor components are  pro-
  1924. vided.   These  include documentation, 3D fonts for PEX, demos, and a verifica-
  1925. tion suite called InsPEX.  Also provided in contrib are additional example pro-
  1926. grams and demos.
  1927.  
  1928. These elements are located in the following area:
  1929.  
  1930. The   PEX   server   extension   is   located   in   the   directories    under
  1931. mit/extensions/server/PEX.    Device   independent   portions  are  located  in
  1932. mit/extensions/server/PEX/dipex.  Device  dependent  functionality  appears  in
  1933. mit/extensions/server/PEX/ddpex.   Operating system font dependent code appears
  1934. in mit/extensions/server/PEX/ospex.  General purpose server include  files  are
  1935. in mit/extensions/server/PEX/include.
  1936.  
  1937. The API code  is  located  under  the  directory  mit/extensions/lib/PEX.   The
  1938. PHIGS/PHIGS PLUS Binding routines are in the c_binding subdirectory.  The PHIGS
  1939. Monitor (PM), a separate process started at  client  runtime  to  handle  PHIGS
  1940. Input  functionality,  is  in  the  cp subdirectory.  Other code located in the
  1941. various subdirectories handles PHIGS archival, error  handling,  and  comprises
  1942. the internal library level that PHIGS calls to generate the PEX Protocol.
  1943.  
  1944. All PEX documentation is located in the directory mit/doc/extensions/PEX,  with
  1945. pregenerated PostScript files in mit/hardcopy/extensions/PEX.  The PEX Protocol
  1946. Specification itself is in the Proto subdirectory.  All SI documentation is  in
  1947. the  SI  subdirectory.   Three  subdirectories  there  contain  an Architecture
  1948. Specification, a Porting Guide (with  implementation  details),  and  a  User's
  1949. Guide.   The  sources  and programs used to generate these files are located in
  1950. the mit/doc/extensions/PEX/SI directory.  Also located there is the PHIGS  sub-
  1951. directory which contains PHIGS man pages and macros for printing these pages.
  1952.  
  1953. Font source for PEX and utilities to build them are located  in  the  directory
  1954. mit/fonts/PEX.  Two stroke fonts are supplied.
  1955.  
  1956. The PEX verification tool InsPEX can be found in the mit/extensions/test/InsPEX
  1957. directory.   Shell  scripts are provided there to run InsPEX.  More information
  1958. on InsPEX is available in the User's Guide.
  1959.  
  1960. Demos for PEX can be found in the mit/demos directory.  Two demos and the  NCGA
  1961. Graphics  Performance  Characterization  (GPC)  Suite  can be found there.  The
  1962. demos are in the mit/demos/auto_box and mit/demos/beach_ball  directories,  and
  1963. are  named  auto_box  and  beach_ball  respectively.  The GPC suite is found in
  1964. mit/demos/gpc.  This suite consists of demos  (in  the  objects  subdirectory),
  1965. benchmarks  (various  directories  below benchmarks) and tests (in tests).  For
  1966. more information on how to run these demos see the User's Guide.
  1967.  
  1968. There are also several unsupported demos and examples available in contrib.  In
  1969. contrib/demos/beach_ball2  a newer version of the beach_ball demo with enhanced
  1970. functionality can  be  found.   In  contrib/examples/PEX  various  PHIGS  based
  1971. clients that demonstrate how to use PEX via the PHIGS API are available.
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.                                     - 31 -
  1985.  
  1986.  
  1987. 11.7.1.  Standards and Functionality
  1988.  
  1989. This release conforms to the PEX Protocol  Specification  V5.0P.   The  release
  1990. comes  with 2 fonts, Roman and Roman_M (see the User's Guide for more details).
  1991. It implements the minimum required HLHSR (Hidden Line/ Hidden Surface  Removal)
  1992. for PHIGS compliance (i.e., NONE).  The release only supports 8-bit color.
  1993.  
  1994. The API binding has been updated to the ISO IS PHIGS  binding.   The  directory
  1995. mit/util/PEX  contains  sed  scripts  for converting programs from the previous
  1996. binding to the new binding.  These scripts do most of the work, but some manual
  1997. editing  is  still needed.  There is a README file in this directory with notes
  1998. and information.
  1999.  
  2000. The PHIGS Binding provides most PHIGS/PHIGS PLUS functionality.  The full PHIGS
  2001. Input Model (Valuator, Locator, Stroke, Choice, String, Pick) is implemented in
  2002. a device independent manner using the  Athena  Widget  Set.   PHIGS/PHIGS  PLUS
  2003. functionality  includes,  but  is not limited to the following graphical primi-
  2004. tives:  Polylines, Polymarkers, Fill Areas, Triangle Strips, NURBS  Curves  and
  2005. Surfaces,  2D  and  3D  Text.  Other operations include Depth Cueing, Modelling
  2006. Clip, Backface removal, Lighting Models and Surface Reflection.
  2007.  
  2008. Functionality not completed in this release is as follows:
  2009.  
  2010. In the API:
  2011.  
  2012.      Mapping of PHIGS font ids to PEX fonts
  2013.  
  2014. In the Server:
  2015.  
  2016.      Backface Attributes and Distinguish Flag
  2017.      Font sharing between clients
  2018.      Patterns, Hatches and associated attributes
  2019.      Color Interpolation
  2020.      Transparency
  2021.      Depth Cueing for Markers
  2022.      Z-buffering
  2023.      Double Buffering
  2024.  
  2025. In InsPEX:
  2026.  
  2027.      Completion of port to ISO IS PHIGS Binding
  2028.  
  2029. 11.7.2.  PEX and PHIGS Documents
  2030.  
  2031. The following documents are provided with this release:
  2032.  
  2033.      PEX-SI User Guide
  2034.      PEX-SI Graphics Library Manual Pages
  2035.      PEX-SI Architecture Specification
  2036.      PEX-SI Porting Guide
  2037.  
  2038. They are located in subdirectories of mit/doc/extensions/PEX.  Please read  the
  2039. PEX-SI  User's  Guide  for  descriptions  of the documents and how to use them.
  2040. Instructions for printing the documents are provided in a README file  in  each
  2041.  
  2042.  
  2043.  
  2044. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.                                     - 32 -
  2051.  
  2052.  
  2053. of the document directories.
  2054.  
  2055. The User's Guide is provided as a starting  point  in  the  documentation.   It
  2056. describes  the  various  documents  provided  with  the  release,  and includes
  2057. instructions on using the clients, the  API  and  the  server  code.   It  also
  2058. includes specifications for the server functionality and archive format.
  2059.  
  2060. The Graphics Library Manual Pages are for the client-side library,  written  to
  2061. the ISO IS binding.
  2062.  
  2063. The Architecture Specification describes the  PEX-SI  architecture  at  a  high
  2064. level.
  2065.  
  2066. The Porting Guide is intended as an extension to  the  Architecture  Specifica-
  2067. tion.  There is a lot of good information in this document, and it is organized
  2068. fairly well, but it lacks some polish.  It is not a complete document.
  2069.  
  2070. 11.7.3.  InsPEX
  2071.  
  2072. This release of InsPEX includes coverage of all the PHIGS PLUS graphics  primi-
  2073. tives, such as fill area sets with data, quadrilateral meshes, triangle strips,
  2074. and NURBS.  PHIGS PLUS attributes such as  direct  color  specification,  depth
  2075. cuing, and lighting are also exercised.
  2076.  
  2077. The testing of input is somewhat limited by the problem of simulating mouse and
  2078. keyboard  input in a reliable and portable fashion.  For the pick, locator, and
  2079. stroke devices, simulating the mouse events is straightforward, but  since  the
  2080. string,  valuator,  and choice devices are built upon a toolkit (Athena Widgets
  2081. in the PEX-SI's case), getting window id's  for  the  appropriate  windows  and
  2082. sending mouse clicks to the right place on those windows is more difficult, and
  2083. probably impossible to do in a way that could  be  quickly  ported  to  another
  2084. toolkit  along  with these input devices.  The technology for automatic testing
  2085. of software using a graphical user interface under X has not progressed to  the
  2086. point where this functionality could be tested in a way that would be useful to
  2087. all the potential users of InsPEX.
  2088.  
  2089. For nearly all of the tests that use image comparison to verify graphical  out-
  2090. put, reference images have been supplied.  Due to outstanding bugs in the code,
  2091. however, some tests are shipped without reference images.   Also,  since  back-
  2092. facing  attributes  are  not  implemented, the images saved for these tests are
  2093. actually incorrect.  These have been shipped, however, because they  still  can
  2094. be  helpful  to  someone  porting  the PEX-SI.  It should be expected that when
  2095. backfacing attributes are implemented, these tests will  fail  and  image  com-
  2096. parison will be required.
  2097.  
  2098. Along with the README in the main InsPEX directory, there is a sample log file,
  2099. sample.log,  and  an  automatically-generated summary of all the current tests,
  2100. test_descrip.  See the README for a description of how that file was generated.
  2101.  
  2102. 11.8.  Athena Widget Set
  2103.  
  2104. Many minor bugs have been fixed.  The Xaw examples have been moved to  contrib.
  2105. However,  please  note that the Athena Widgets have been and continue to be low
  2106. on our priority list, so many bugs remain (particularly in the Text widget) and
  2107.  
  2108.  
  2109.  
  2110. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.                                     - 33 -
  2117.  
  2118.  
  2119. many  requests for enhancements have not been implemented.  Because some incom-
  2120. patible changes have been made, the shared library major version number on Suns
  2121. has been incremented.
  2122.  
  2123. Header Files
  2124.  
  2125.      Function prototypes have been added to the public interfaces.
  2126.  
  2127. AsciiSrc
  2128.  
  2129.      No warning message is printed when the file  cannot  be  written  to;  the
  2130.      return  value should be enough info.  GetValues on the string resource was
  2131.      failing when "useStringInPlace" was set to true;  fixed.   A  memory  leak
  2132.      when  freeing  pieces in a source of type "ascii String" has been plugged.
  2133.      The buffer is now updated whenever the  "string"  resource  is  set  using
  2134.      XtSetValues.  If the type is file then the file is read in again.
  2135.  
  2136. Box
  2137.  
  2138.      Box.h now includes <X11/Xmu/Converters.h> for the orientation resources.
  2139.  
  2140. Clock
  2141.  
  2142.      Changed to be a subclass of Simple instead of Core.
  2143.  
  2144. Command
  2145.  
  2146.      A bug in changing the shape style back to Rectangular has been fixed.
  2147.  
  2148. Dialog
  2149.  
  2150.      The Icon resource type has changed from Pixmap to Bitmap.
  2151.  
  2152. Form
  2153.  
  2154.      The geometry handler now will now disallow  geometry  management  requests
  2155.      that  will force the child outside the Form's window.  EdgeType names have
  2156.      been changed to have prefix ``Xaw'' instead of ``Xt'', but the old defini-
  2157.      tions  are still around with a #define.  The string-to-widget converter no
  2158.      longer caches resources.
  2159.  
  2160. Logo
  2161.  
  2162.      Changed to be a subclass of Simple instead of  Core.   Reverse  video  now
  2163.      works correctly.
  2164.  
  2165. Mailbox
  2166.  
  2167.      Changed to be a subclass of Simple instead of  Core.   Reverse  video  now
  2168.      works correctly.
  2169.  
  2170. MenuButton
  2171.  
  2172.      The MenuButton widget no longer places a server grab on itself.   Instead,
  2173.  
  2174.  
  2175.  
  2176. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.                                     - 34 -
  2183.  
  2184.  
  2185.      PopupMenu  is  registered  as a grab action.  As a result of this, clients
  2186.      which popped up menus without using XtMenuPopup or MenuPopup or  PopupMenu
  2187.      in  the  menu  button  translations will fail to have a grab active.  They
  2188.      should make a call to XtRegisterGrabAction on the  appropriate  action  in
  2189.      the application initialization routine, or use a different translation.
  2190.  
  2191. Paned
  2192.  
  2193.      Paned.h now includes <X11/Xmu/Converters.h> for the orientation resources.
  2194.  
  2195. Panner
  2196.  
  2197.      This widget is new in R5, see the Xaw manual for details.
  2198.  
  2199. Porthole
  2200.  
  2201.      This widget is new in R5, see the Xaw manual for details.
  2202.  
  2203. Repeater
  2204.  
  2205.      This widget is new in R5, see the Xaw manual for details.
  2206.  
  2207. Scrollbar
  2208.  
  2209.      Changed to be a subclass of Simple instead of Core.   The  type  of  thumb
  2210.      resource has changes from Pixmap to Bitmap.  However, if applications pro-
  2211.      vide the resource conversion, the SetValues method can still  handle  pix-
  2212.      maps of correct depth.
  2213.  
  2214. Simple
  2215.  
  2216.      A color cursor converter has been added, as well as the new  new  resource
  2217.      types: XtNpointerColor, XtNpointerColorBackground, and XtNcursorName.
  2218.  
  2219. SmeBSB
  2220.  
  2221.      The Right bitmaps are now painted in the correct location.  Right and Left
  2222.      Bitmaps can be specified in resource files, and at startup time.
  2223.  
  2224. Text
  2225.  
  2226.      If there is no current selection the the selection extends from the insert
  2227.      point,  rather  than  some  random location.  Forward (Backward) Paragraph
  2228.      works at the paragraph boundaries now.  Selecting a word  now  transitions
  2229.      correctly  at both end points.  An infinite loop when using fill paragraph
  2230.      in a read only text widget has been found and fixed.   When  the  "resize"
  2231.      resource  is  set the text will start up with exactly enough space to con-
  2232.      tain the text in the widget.  A bug that could cause an infinite loop when
  2233.      Meta-Q  was used to invoke the form-paragraph function on a read-only text
  2234.      widget has been fixed.  Problems dealing with exposure  events  have  been
  2235.      fixed.   In  TextP.h,  the  names of the following symbolic constants have
  2236.      each had the prefix Xaw added to them: XawLF, XawCR, XawTAB, XawBS, XawSP,
  2237.      XawDEL, and XawBSLASH.
  2238.  
  2239.  
  2240.  
  2241.  
  2242. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.                                     - 35 -
  2249.  
  2250.  
  2251. Toggle
  2252.  
  2253.      The widget state is preserved across changes in  sensitivity.   A  string-
  2254.      to-widget converter is registered for radio groups.
  2255.  
  2256. Tree
  2257.  
  2258.      This widget is new in R5, see the Xaw manual for details.
  2259.  
  2260. Paned
  2261.  
  2262.      A bug that caused XtGeometryYes returns to have bogus values,  and  caused
  2263.      panes to get random sizes, has been fixed.
  2264.  
  2265. Vendor
  2266.  
  2267.      Support has been added for the editres protocol.  All  applications  using
  2268.      the  Athena  Widgets  are automatically editable with editres.  A bug that
  2269.      cause Shell to ignore all but first child has been fixed.
  2270.  
  2271. Viewport
  2272.  
  2273.      XawPannerReport support has been added.
  2274.  
  2275. 11.9.  X Server
  2276.  
  2277. Considerably more work speeding up the server has been  done,  particularly  in
  2278. the  cfb  and  mfb  code.   The font interfaces are completely new.  Compressed
  2279. fonts are not supported in  the  release.   Other  changes  are  documented  in
  2280. mit/doc/Server/r5.tbl.ms.
  2281.  
  2282. 11.10.  Fonts
  2283.  
  2284. Font Server
  2285.  
  2286.      A sample implementation of the server side of the X Font Service  Protocol
  2287.      is  provided in a new program, fs.  On the Macintosh, a special version of
  2288.      the server called MacFS can be used to serve TrueType fonts.
  2289.  
  2290. New Font Format
  2291.  
  2292.      Both the X server and the font server use a new font format, pcf (portable
  2293.      compiled  font).   Pcf  is readable across different machines and contains
  2294.      more information about a font than the old snf format.  Fonts in snf  for-
  2295.      mat can still be used.
  2296.  
  2297. Font Applications
  2298.  
  2299.      The following new utilities talk to the font  server:  fsinfo,  fslsfonts,
  2300.      fstobdf,  and showfont.  To build pcf fonts, bdftosnf has been replaced by
  2301.      bdftopcf.
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.                                     - 36 -
  2315.  
  2316.  
  2317. Scalable Fonts
  2318.  
  2319.      Bitstream, Inc. has donated an outline scaling engine along with a set  of
  2320.      sample  fonts,  matching the donated bitmap fonts included with Release 4.
  2321.      In addition, a usable (but not very pretty) bitmap scaling engine has been
  2322.      implemented  which  allows  the  use of all other fonts at arbitrary point
  2323.      sizes.
  2324.  
  2325. Font Changes
  2326.  
  2327.      Many misc fonts now have ISO Latin-1 upper half characters and  some  tun-
  2328.      ing.   The  following  sets  of  fonts  are new: Latin/Hebrew in ISO8859-8
  2329.      encoding, Kanji in JISX0208.1983-0  encoding,6  Hangul  in  KSC5601.1987-0
  2330.      encoding.
  2331.  
  2332. 12.  Acknowledgements
  2333.  
  2334. The MIT Release 5 distribution is brought to you by the MIT  X  Consortium.   A
  2335. cast  of thousands, literally, have made this release possible.  We cannot pos-
  2336. sibly acknowledge them all here.  The names of all people who made it a reality
  2337. will  be found in the individual documents and source files.  We greatly appre-
  2338. ciate the work that everyone has put into this release.
  2339.  
  2340.                               Hoping you enjoy Release 5,
  2341.  
  2342.                               Donna Converse
  2343.                               Stephen Gildea
  2344.                               Susan Hardy
  2345.                               Jay Hersh
  2346.                               Keith Packard
  2347.                               David Sternlicht
  2348.                               Bob Scheifler
  2349.                               Ralph Swick
  2350.  
  2351.                               (R5 Survival Club)
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361. _________________________
  2362. 6.  The JIS Kanji fonts were purchased on behalf of the MIT X  Consortium  from
  2363. the  Japanese  Standards  Association,  1-24,  Akasaka 4, Minato-ku, Tokyo 107,
  2364. Japan.  They were converted to BDF format, keeping within the  JIS  rules.   In
  2365. keeping with JIS rules, these fonts should not be transformed into other encod-
  2366. ings, they should only be used in the JISX0208.1983-0  encoding.   It  is  also
  2367. strongly  recommended  that  companies wishing to use these fonts in commercial
  2368. products should purchase the original JIS font  standards  directly  from  JSA.
  2369. The purchase price is nominal.
  2370.  
  2371.  
  2372.  
  2373.  
  2374. X Window System Release Notes   August 29, 1991         X Version 11, Release 5
  2375.  
  2376.  
  2377.