Comment: These are patches to produce the Andrew component of the X.V11R4 distribution, patch level 10 Andrew-Patch: 10 Date: Thu, 30 May 1991 20:58:35 -0400 (EDT) Date-span: 1990/11/20 09:00:53 through 91/5/30 18:27:46 Bugs addressed: Count of patched files: 636 SPECIAL PATCH NOTES: You must add a new line to the end of the file ./atk/text/txtstvec.doc by hand. RCS logs: Source file: Imakefile Current version: 2.51 revision 2.51 locked by: gk5g; date: 91/05/07 17:37:32; author: gk5g; state: Exp; lines added/del: 4/0 Added the creation of ${DESTDIR}/xnwsfnts if OPENWINDOWS_ENV is defined. We will be storing the Xnews fonts in this directory. The user will be required to set their Xnews fontpath to include this directory. . ---------------------------- revision 2.50 date: 91/04/02 17:13:26; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support added SCO Unix support ---------------------------- revision 2.49 date: 91/03/28 13:13:37; author: dba; state: Exp; lines added/del: 6/0 build ossupport first thing on hp9000s800 Source file: config/ImakeMacros.d Current version: 1.20 revision 1.20 date: 91/04/03 14:51:25; author: gk5g; state: Exp; lines added/del: 135/122 Added additional information regarding the use of the -L argument in association with syslibs (-lm). Source file: config/allsys.h Current version: 1.22 revision 1.22 date: 91/04/25 18:32:11; author: gk5g; state: Exp; lines added/del: 0/3 Don't define POSIX_ENV 0 for all systems. It's either defined or it's not. ---------------------------- revision 1.21 date: 91/04/04 14:27:38; author: gk5g; state: Exp; lines added/del: 0/13 Don't ask. ---------------------------- revision 1.20 date: 91/04/03 14:23:58; author: gk5g; state: Exp; lines added/del: 21/1 Added commented stubs for build "variables" FONTS_TO_BDF_ENV and OPENWINDOWS_ENV. See andrew/README.ez for descriptions of these two "variables". ---------------------------- revision 1.19 date: 91/01/21 18:24:53; author: gk5g; state: Exp; lines added/del: 3/0 Added #define POSIX_ENV 0. Now POSIX_ENV may be used to detect POSIX systems. I think this may prove to be useful in the future. ---------------------------- revision 1.18 date: 90/12/14 18:16:26; author: gk5g; state: Exp; lines added/del: 3/0 Added a comment that shows how AFS31_ENV should be defined. Source file: config/allsys.mcr Current version: 1.16 revision 1.16 date: 91/03/27 15:29:02; author: susan; state: Exp; lines added/del: 11/2 added SCO Unix ---------------------------- revision 1.15 date: 91/03/21 14:25:12; author: gk5g; state: Exp; lines added/del: 5/4 Left the macro KRBLIB undefined for now. ---------------------------- revision 1.14 date: 91/01/31 15:14:12; author: gk5g; state: Exp; lines added/del: 6/0 Added build macro KRBDIR that is the directory where the Kerberos library lives. This is necessary when building against AFS3.1. Source file: config/andrew.rls Current version: 2.122 revision 2.122 locked by: gk5g; date: 91/05/24 18:43:18; author: gk5g; state: Exp; lines added/del: 9/9 Fixed up some of the FontRules for OpenWindows. Needed to use /tmp for temporary intermediate font files. . ---------------------------- revision 2.121 date: 91/05/07 19:00:17; author: gk5g; state: Exp; lines added/del: 43/22 Create OpenWindows fonts on-the-fly (just like the X11 fonts). . ---------------------------- revision 2.120 date: 91/05/05 22:21:35; author: gk5g; state: Exp; lines added/del: 110/10 Added support for OpenWindows font creation and installation. Fixed bug in SCO script installation rule. . ---------------------------- revision 2.119 date: 91/04/11 16:15:44; author: gk5g; state: Exp; lines added/del: 1/1 Changed the order of the args passed to depend.csh in the DependTarget() rule. ---------------------------- revision 2.118 date: 91/04/10 18:21:56; author: gk5g; state: Exp; lines added/del: 1/0 Needed to fix the InstallShScript() rule when SCOunix is not true. ---------------------------- revision 2.117 date: 91/04/10 16:57:38; author: gk5g; state: Exp; lines added/del: 6/0 Forgot to create NSDeclareFont() macro for OPENWINDOWS_ENV. ---------------------------- revision 2.116 date: 91/04/10 16:44:59; author: gk5g; state: Exp; lines added/del: 12/4 Fixed up some problems with NO_FONTS_ENV and FONTS_TO_BDF_ENV. Added some cpp directives that were omitted when the HP RISC changes were made. ---------------------------- revision 2.115 date: 91/04/10 15:50:11; author: gk5g; state: Exp; lines added/del: 4/0 Changed FontRule() to handle the NO_FONTS_ENV build specification. ---------------------------- revision 2.114 date: 91/04/10 15:39:01; author: gk5g; state: Exp; lines added/del: 7/3 Changed DeclareFont rule to handle OPENWINDOWS_ENV and FONTS_TO_BDF_ENV. ---------------------------- revision 2.113 date: 91/04/10 15:12:43; author: dba; state: Exp; lines added/del: 29/6 Changes for hp9000s800 port (uses libossup.a in all programs). ---------------------------- revision 2.112 date: 91/04/04 19:45:28; author: gk5g; state: Exp; lines added/del: 2/2 Fixed up arguments to doindex. ---------------------------- revision 2.111 date: 91/04/03 14:53:54; author: gk5g; state: Exp; lines added/del: 6/6 Previously I had added -L ${DESTDIR}/lib prior to syslibs in each of the rules that use syslibs. The reason is because when LIBDL_ENV is defined we create and install our own shared resolver library and place it in ${DESTDIR}/lib. It is better to allow the user to intersperse -L specifications within the syslibs macro. This means that a bit more hair will go into some Imakefiles, specifically in the case where LIBDL_ENV is defined. ---------------------------- revision 2.110 date: 91/04/03 13:29:57; author: gk5g; state: Exp; lines added/del: 42/1 Implemented the functionality associated with defining FONTS_TO_BDF_ENV in your site.h file. People want to be able to convert the Andrew fonts from bdf format to some multiple number of server natural formats. This simply turns the Andrew fdb fonts into bdf format. See the description of this build "variable" in andrew/README.ez under the section: 1.2.4 The allsys.h, system.h, and site.h Files: Defining What Parts of Andrew to Build. ---------------------------- revision 2.109 date: 91/04/02 17:21:17; author: gk5g; state: Exp; lines added/del: 4/4 Changed the ProgramTarget rule to add "-L ${DESTDIR}/lib" prior to "syslibs". This was done because we may want to provide our own versions of a particular library (like a shared resolver library on the SunOS4.1 platform). ---------------------------- revision 2.108 date: 91/03/27 15:19:48; author: susan; state: Exp; lines added/del: 75/5 added SCO Unix ---------------------------- revision 2.107 date: 91/03/27 12:55:01; author: gk5g; state: Exp; lines added/del: 1/1 Further changes submitted by ghoti. ---------------------------- revision 2.106 date: 91/03/25 14:13:53; author: gk5g; state: Exp; lines added/del: 4/20 Combined the AFS and non-AFS versions of the DependTarget macro, as per ghoti+. ---------------------------- revision 2.105 date: 91/02/15 17:34:24; author: gk5g; state: Exp; lines added/del: 194/1 Code submitted by Guy Harris in support of SunOS4.1 Source file: config/depend.csh Current version: 2.19 revision 2.19 date: 91/04/11 16:15:31; author: gk5g; state: Exp; lines added/del: 8/5 Changed the order of the arguments ---------------------------- revision 2.18 date: 91/03/27 12:55:34; author: gk5g; state: Exp; lines added/del: 5/4 Further changes submitted by ghoti. ---------------------------- revision 2.17 date: 91/03/25 14:17:07; author: gk5g; state: Exp; lines added/del: 21/40 Changes submitted by ghoti. Source file: config/imake.tmpl Current version: 1.38 revision 1.38 date: 91/05/16 17:34:22; author: susan; state: Exp; lines added/del: 2/2 changed rt_r3 to rt_aos4 . ---------------------------- revision 1.37 date: 91/05/07 19:00:17; author: gk5g; state: Exp; lines added/del: 1/1 Added the OpenWindows font suffix (.fb) to the .SUFFIXES list. . ---------------------------- revision 1.36 date: 91/04/14 17:20:33; author: gk5g; state: Exp; lines added/del: 8/6 Added a new macro AFSUTILS. That is ${BASEDIR}/lib/libafs.a. Stuff taken from lib/afs/util.a so that library wasn't needed. ---------------------------- revision 1.35 date: 91/04/10 23:20:56; author: gk5g; state: Exp; lines added/del: 2/2 Placed ${BASEDIR}/lib/libutil.a at the end of the macro UTILLIB. ---------------------------- revision 1.34 date: 91/04/10 21:33:44; author: gk5g; state: Exp; lines added/del: 2/3 Thought I was going to use lib/afs/util.a, it defines malloc. There is some sort of hack in andrew/overhead/util/lib where we are providing the utility routines that are in afs/util.a so that we don't have to use that library. For SunOS4.1 we are going to have to provide another routine from util.a. ---------------------------- revision 1.33 date: 91/04/10 19:15:07; author: gk5g; state: Exp; lines added/del: 1/1 Define AFSUTILLIB if AFS_ENV is defined. ---------------------------- revision 1.32 date: 91/04/09 16:58:43; author: gk5g; state: Exp; lines added/del: 10/8 If AFS31_ENV is defined we use ${AFSBASEDIR}/lib/afs/util.a. ---------------------------- revision 1.31 date: 91/03/29 12:38:29; author: dba; state: Exp; lines added/del: 5/0 Added support for hp800. ---------------------------- revision 1.30 date: 91/03/27 15:26:54; author: susan; state: Exp; lines added/del: 7/2 added SCO Unix ---------------------------- revision 1.29 date: 91/03/23 19:59:49; author: gk5g; state: Exp; lines added/del: 2/2 Changed order of PRSLIBS again. Put libauth before librxkad. ---------------------------- revision 1.28 date: 91/03/22 18:05:28; author: gk5g; state: Exp; lines added/del: 1/1 Changed the order of the libraries listed in the PRSLIB macro. ., ---------------------------- revision 1.27 date: 91/02/18 18:47:28; author: gk5g; state: Exp; lines added/del: 4/4 Only do the alloca.h hack if we are certain that the machine isn't a sun3 SunOS3.x. SunOS3.x doesn't have alloca.h. ---------------------------- revision 1.26 date: 91/02/15 17:36:01; author: gk5g; state: Exp; lines added/del: 26/0 Code submitted by Guy Harris in support of SunOS4.1 ---------------------------- revision 1.25 date: 91/01/31 18:08:04; author: gk5g; state: Exp; lines added/del: 0/1 Removed KRBLIB macro. KRBLIB is probably going to be an empty macro defined allsys.mcr. ---------------------------- revision 1.24 date: 91/01/31 15:16:10; author: gk5g; state: Exp; lines added/del: 13/13 Added definition of the new library macro KRBLIB which should point to the location of the Kerberos library. Changed the definition of the PRSLIB to include the Kerberos library and also reordered the list such that there are no undefined symbols. This is all courtesy of Bill Cattey. ---------------------------- revision 1.23 date: 90/12/14 18:15:49; author: gk5g; state: Exp; lines added/del: 7/1 Added DESLIB to PRSLIB iff AFS31_ENV is defined. Source file: config/site.rls Current version: 1.2 revision 1.2 date: 91/01/30 15:48:15; author: gk5g; state: Exp; lines added/del: 2/2 Removed some bogus '+' characters from before the comments. Source file: config/hp300/system.h Current version: 1.18 revision 1.18 date: 91/01/30 16:17:20; author: susan; state: Exp; lines added/del: 1/1 fixed typo in define of PRE_X11R4 Source file: config/hp300/system.mcr Current version: 1.12 revision 1.12 date: 91/05/06 17:43:44; author: susan; state: Exp; lines added/del: 1/1 added -W2,-x to the STD_DEFINES . Source file: config/hp800/system.h Current version: 1.1 revision 1.1 date: 91/03/29 11:39:55; author: dba; state: Exp; Initial revision Source file: config/hp800/system.mcr Current version: 1.1 revision 1.1 date: 91/03/29 11:40:02; author: dba; state: Exp; Initial revision Source file: config/pmax_3/system.mcr Current version: 1.10 revision 1.10 date: 91/03/19 13:18:25; author: gk5g; state: Exp; lines added/del: 2/2 Patch submitted by Adam Stoller: Enclosed is a patch to fix the pmax_3 system.mcr file in the Andrew Distribution - so that the CC make variable only defines the compiler and nothing else. Source file: config/ps_aix11/system.h Current version: 1.16 revision 1.16 date: 91/01/21 18:23:55; author: gk5g; state: Exp; lines added/del: 2/0 Patch submitted by Todd Inglett: Redefined POSIX_ENV 1. Other systems may be POSIX as well. Source file: config/ps_aix11/system.mcr Current version: 1.11 revision 1.11 date: 91/03/19 13:20:56; author: gk5g; state: Exp; lines added/del: 2/1 Patch submitted by Adam Stoller: Enclosed is a patch to fix the ps_aix11 system.mcr file in the Andrew Distribution - so that the CC make variable only defines the compiler and nothing else. Source file: config/ps_aix12/system.h Current version: 1.9 revision 1.9 date: 91/01/21 18:24:21; author: gk5g; state: Exp; lines added/del: 2/0 Patch submitted by Todd Inglett: Redefined POSIX_ENV 1. Other systems may be POSIX as well. ---------------------------- revision 1.8 date: 91/01/14 17:20:41; author: gk5g; state: Exp; lines added/del: 0/6 Removed undef of LEVEL_ENV and MK_BLD_BLKS for PS/2 Source file: config/ps_aix12/system.mcr Current version: 1.5 revision 1.5 date: 91/03/19 13:21:56; author: gk5g; state: Exp; lines added/del: 2/1 Patch submitted by Adam Stoller: Enclosed is a patch to fix the ps_aix12 system.mcr file in the Andrew Distribution - so that the CC make variable only defines the compiler and nothing else. Source file: config/rs_aix31/system.h Current version: 1.10 revision 1.10 date: 91/05/09 21:11:05; author: gk5g; state: Exp; lines added/del: 1/0 Added #define BIT_ZERO_ON_LEFT. That is necessary to compile anything which #include's . . ---------------------------- revision 1.9 date: 91/05/09 18:58:18; author: gk5g; state: Exp; lines added/del: 7/1 Don't define ANDREW_MALLOC_ENV on RS/6000. That platform makes it very difficult to define your own malloc-family. Removed #undef LEVEL_ENV. I can't even find a description of LEVEL_ENV in the README file. It's gone. . ---------------------------- revision 1.8 date: 91/04/05 00:59:15; author: gk5g; state: Exp; lines added/del: 0/0 Removed #undef RESOLVER_ENV. ---------------------------- revision 1.7 date: 91/01/21 18:21:47; author: gk5g; state: Exp; lines added/del: 3/1 Patch submitted by Todd Inglett: Redefined POSIX_ENV 1. Other systems may be POSIX as well. ---------------------------- revision 1.6 date: 90/12/07 14:51:54; author: gk5g; state: Exp; lines added/del: 1/1 #defined GETDOMAIN_ENV for RS/6000. Source file: config/rs_aix31/system.mcr Current version: 1.4 revision 1.4 date: 91/05/15 19:48:46; author: gk5g; state: Exp; lines added/del: 2/3 Backed out attempt to compile POSIX. We still need _BSD. . ---------------------------- revision 1.3 date: 91/04/05 02:02:07; author: gk5g; state: Exp; lines added/del: 3/2 Changed to compile with xlc. Defined _POSIX_SOURCE and _ALL_SOURCE. Undefined _BSD. Not sure about that. ---------------------------- revision 1.2 date: 91/03/19 13:15:51; author: gk5g; state: Exp; lines added/del: 4/2 Patch submitted by Adam Stoller: Enclosed is a patch to fix the rs_aix31 system.mcr file in the Andrew Distribution - so that the CC make variable only defines the compiler and nothing else. Source file: config/rt_aos4/system.h Current version: 1.1 revision 1.1 date: 91/05/16 17:32:20; author: susan; state: Exp; Initial revision Source file: config/rt_aos4/system.mcr Current version: 1.1 revision 1.1 date: 91/05/16 17:32:20; author: susan; state: Exp; Initial revision Source file: config/sco_i386/system.h Current version: 1.1 revision 1.1 date: 91/03/27 15:33:51; author: susan; state: Exp; Initial revision Source file: config/sco_i386/system.mcr Current version: 1.1 revision 1.1 date: 91/03/27 15:34:00; author: susan; state: Exp; Initial revision Source file: config/sun2_35/system.mcr Current version: 1.9 revision 1.9 date: 91/05/07 19:11:45; author: susan; state: Exp; lines added/del: 1/0 added BLDFAMILY macro . ---------------------------- revision 1.8 date: 91/05/07 18:07:36; author: susan; state: Exp; lines added/del: 3/0 set CONVERTFONT for OPENWINDOWS_ENV . Source file: config/sun3_35/system.mcr Current version: 1.9 revision 1.9 date: 91/05/07 19:11:03; author: susan; state: Exp; lines added/del: 1/0 added BLDFAMILY macro . ---------------------------- revision 1.8 date: 91/05/07 18:10:55; author: susan; state: Exp; lines added/del: 3/0 set CONVERTFONT for OPENWINDOWS_ENV . Source file: config/sun3_4/system.mcr Current version: 1.5 revision 1.5 date: 91/05/07 19:12:23; author: susan; state: Exp; lines added/del: 1/0 added BLDFAMILY macro . ---------------------------- revision 1.4 date: 91/05/07 18:11:47; author: susan; state: Exp; lines added/del: 3/0 set CONVERTFONT for OPENWINDOWS_ENV . Source file: config/sun3_41/system.h Current version: 1.2 revision 1.2 date: 91/04/30 18:47:25; author: gk5g; state: Exp; lines added/del: 5/0 *** empty log message *** ---------------------------- revision 1.1 date: 91/02/15 17:42:07; author: gk5g; state: Exp; Initial revision Source file: config/sun3_41/system.mcr Current version: 1.3 revision 1.3 date: 91/05/07 19:13:17; author: susan; state: Exp; lines added/del: 1/0 added BLDFAMILY macro . ---------------------------- revision 1.2 date: 91/05/07 18:12:28; author: susan; state: Exp; lines added/del: 3/0 set CONVERTFONT for OPENWINDOWS_ENV . ---------------------------- revision 1.1 date: 91/02/15 17:42:15; author: gk5g; state: Exp; Initial revision Source file: config/sun4_40/system.mcr Current version: 1.10 revision 1.10 date: 91/05/07 19:10:25; author: susan; state: Exp; lines added/del: 1/0 added BLDFAMILY macro . ---------------------------- revision 1.9 date: 91/05/07 18:10:04; author: susan; state: Exp; lines added/del: 3/0 set CONVERTFONT for OPENWINDOWS_ENV . Source file: config/sun4_41/system.h Current version: 1.3 revision 1.3 date: 91/04/25 18:34:36; author: gk5g; state: Exp; lines added/del: 3/2 Undefine POSIX_ENV before defining it. ---------------------------- revision 1.2 date: 91/04/24 20:40:41; author: gk5g; state: Exp; lines added/del: 0/0 Defined POSIX_ENV for this platform. ---------------------------- revision 1.1 date: 91/02/15 17:42:50; author: gk5g; state: Exp; Initial revision Source file: config/sun4_41/system.mcr Current version: 1.3 revision 1.3 date: 91/05/07 19:09:31; author: susan; state: Exp; lines added/del: 1/0 added BLDFAMILY macro . ---------------------------- revision 1.2 date: 91/05/07 18:09:05; author: susan; state: Exp; lines added/del: 3/0 set CONVERTFONT for OPENWINDOWS_ENV . ---------------------------- revision 1.1 date: 91/02/15 17:42:56; author: gk5g; state: Exp; Initial revision Source file: ossupport/Imakefile Current version: 1.1 revision 1.1 date: 91/03/28 12:58:21; author: dba; state: Exp; Initial revision Source file: ossupport/scandir.c Current version: 1.1 revision 1.1 date: 91/03/28 12:59:57; author: dba; state: Exp; Initial revision Source file: ossupport/strncpy.c Current version: 1.1 revision 1.1 date: 91/03/28 13:00:12; author: dba; state: Exp; Initial revision Source file: xmkfontd/Imakefile Current version: 2.19 revision 2.19 date: 91/05/07 19:08:43; author: gk5g; state: Exp; lines added/del: 3/3 We now pass a Make macro BLDFAMILY to the openwin.csh script. BLDFAMILY can be specified in site.mcr. . ---------------------------- revision 2.18 date: 91/05/05 22:11:16; author: gk5g; state: Exp; lines added/del: 8/9 The conversion to OpenWindows fonts happens in parallel with the MIT font intallation. You need MIT X11 to build Andrew anyway. . ---------------------------- revision 2.17 date: 91/04/10 16:13:16; author: gk5g; state: Exp; lines added/del: 3/3 Removed references to FONTS_TO_BDF_ENV. ---------------------------- revision 2.16 date: 91/04/10 13:19:18; author: gk5g; state: Exp; lines added/del: 1/1 Mispelled "install". ---------------------------- revision 2.15 date: 91/04/03 14:13:53; author: gk5g; state: Exp; lines added/del: 6/0 Added support for OPENNWINDOWS_ENV font creation. See the descritpion of OPENNWINDOWS_ENV in andrew/README.ez. ---------------------------- revision 2.14 date: 91/04/02 17:13:17; author: susan; state: Exp; lines added/del: 6/0 added SCO Unix support ---------------------------- revision 2.13 date: 91/03/23 20:15:07; author: gk5g; state: Exp; lines added/del: 2/1 Don't install fonts if NO_FONTS_ENV is defined. ---------------------------- revision 2.12 date: 90/12/06 14:21:24; author: susan; state: Exp; lines added/del: 1/1 changed InstallFileToFile to expanded {INSTALL}... command to avoid install.time:: ---------------------------- revision 2.11 date: 90/11/20 12:03:57; author: susan; state: Exp; lines added/del: 3/3 changed name of ISO_80_FONTS to ISO80_FONTS_ENV Source file: xmkfontd/openwin.csh Current version: 1.6 revision 1.6 date: 91/05/07 19:09:29; author: gk5g; state: Exp; lines added/del: 11/15 Removed the font conversion and placed it into the Makefiles. .O ---------------------------- revision 1.5 date: 91/05/05 22:12:13; author: gk5g; state: Exp; lines added/del: 21/5 Changed script to look for bldfamily and convertfont first in $OPENWINHOME/bin, then in /usr/openwin/bin, and finally, it just uses the rootname in the hope that the builder has their PATH set to find these programs. Also changed the format of the Synonyms.list file as generated in this script from fonts.alias. The original version enclosed the fontname and alias within parentheses. Now preceed names with back-slash. . ---------------------------- revision 1.4 date: 91/04/26 22:25:20; author: gk5g; state: Exp; lines added/del: 3/1 *** empty log message *** ---------------------------- revision 1.3 date: 91/04/18 13:51:59; author: gk5g; state: Exp; lines added/del: 0/0 Changed back Awk script to take input from fonts.alias. ---------------------------- revision 1.2 date: 91/04/10 21:38:18; author: gk5g; state: Exp; lines added/del: 1/1 In the awk script, replaced "fonts.alias" with "*.alias" because there can be other alias files. ---------------------------- revision 1.1 date: 91/04/03 14:14:44; author: gk5g; state: Exp; Initial revision Source file: ams/flames/Imakefile Current version: 2.15 revision 2.15 date: 91/04/02 16:40:44; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix Support Source file: ams/flames/flib.flm Current version: 2.9 revision 2.9 date: 91/03/28 13:46:08; author: gk5g; state: Exp; lines added/del: 6/2 Patch submitted by bobg: Whoever wrote mhkf unthinkingly applied "car" to the result of getheadercontents. Source file: ams/libs/cui/andmchs.c Current version: 2.23 revision 2.23 date: 91/04/02 16:41:12; author: susan; state: Exp; lines added/del: 16/4 added SCO Unix Support ---------------------------- revision 2.22 date: 91/01/31 15:51:54; author: gk5g; state: Exp; lines added/del: 3/1 Patch submitted by Bill Cattey: The file ams/libs/cui/andmchs.c won't compile with the AFS 3.1 that we run here at MIT. Apparently in AFS 3.1 the comauth.h include file went away. This patch constrains the inclusion to non-AFS 3.1 environments. The file compiles just fine when it doesn't try to include the deleted comauth.h file. Source file: ams/libs/cui/cuilib.c Current version: 2.46 revision 2.46 date: 91/04/02 16:41:21; author: susan; state: Exp; lines added/del: 9/6 added SCO Unix Support Source file: ams/libs/hdrs/ams.h Current version: 2.13 revision 2.13 date: 91/04/02 16:42:00; author: susan; state: Exp; lines added/del: 7/5 added SCO Unix Support Source file: ams/libs/ms/reply.c Current version: 2.12 revision 2.12 date: 91/05/03 18:48:13; author: gk5g; state: Exp; lines added/del: 2/2 In PrintFwdHeaders() there were some funny assignment statements that caused the Sun ccom to choke. . ---------------------------- revision 2.11 date: 91/04/22 20:05:30; author: gk5g; state: Exp; lines added/del: 98/4 *** empty log message *** ---------------------------- revision 2.10 date: 90/11/28 14:19:50; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/libs/ms/mtchfold.c Current version: 1.9 revision 1.9 date: 91/04/02 16:44:05; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix Support Source file: ams/libs/ms/apndfile.c Current version: 2.8 revision 2.8 date: 91/02/11 11:57:18; author: gk5g; state: Exp; lines added/del: 4/4 In AppendFileToFolder(), if ReadOrFindMSDir() returns an error condition, check if Dir is non-NULL and close. Source file: ams/libs/ms/bldcapt.c Current version: 2.19 revision 2.19 date: 90/11/28 14:18:49; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/libs/ms/blddate.c Current version: 2.8 revision 2.8 date: 91/05/08 19:34:19; author: gk5g; state: Exp; lines added/del: 6/4 Patch submitted by Craig Everhart: The problem is that a large Date: header (where it can be large because of many random non-conformances through the net at large) will overflow the 250-char DateBuf array in blddate.c. . Source file: ams/libs/ms/bldpvmap.c Current version: 2.8 revision 2.8 date: 91/04/02 16:43:14; author: susan; state: Exp; lines added/del: 3/2 added SCO Unix Support Source file: ams/libs/ms/ckmail.c Current version: 2.5 revision 2.5 date: 91/04/02 16:43:22; author: susan; state: Exp; lines added/del: 7/2 added SCO Unix Support Source file: ams/libs/ms/convmail.c Current version: 2.5 revision 2.5 date: 91/04/02 16:43:32; author: susan; state: Exp; lines added/del: 8/2 added SCO Unix Support Source file: ams/libs/ms/cvtold.c Current version: 2.17 revision 2.17 date: 91/04/02 16:43:27; author: susan; state: Exp; lines added/del: 16/13 added SCO Unix Support Source file: ams/libs/ms/epoch.c Current version: 2.31 revision 2.31 date: 91/04/02 16:43:37; author: susan; state: Exp; lines added/del: 7/2 added SCO Unix Support Source file: ams/libs/ms/flushdir.c Current version: 2.6 revision 2.6 date: 91/04/02 16:43:43; author: susan; state: Exp; lines added/del: 3/2 added SCO Unix Support Source file: ams/libs/ms/getbody.c Current version: 2.5 revision 2.5 date: 91/04/02 16:43:47; author: susan; state: Exp; lines added/del: 3/2 added SCO Unix Support Source file: ams/libs/ms/getfile.c Current version: 2.5 revision 2.5 date: 91/04/02 16:43:54; author: susan; state: Exp; lines added/del: 4/3 added SCO Unix Support Source file: ams/libs/ms/getnmct.c Current version: 2.5 revision 2.5 date: 91/04/02 16:43:51; author: susan; state: Exp; lines added/del: 3/2 added SCO Unix Support Source file: ams/libs/ms/headers.c Current version: 2.6 revision 2.6 date: 91/04/02 16:44:18; author: susan; state: Exp; lines added/del: 4/4 added SCO Unix Support Source file: ams/libs/ms/init.c Current version: 2.42 revision 2.42 date: 91/04/02 16:43:57; author: susan; state: Exp; lines added/del: 7/2 added SCO Unix Support ---------------------------- revision 2.41 date: 90/11/28 14:19:07; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/libs/ms/logging.c Current version: 2.6 revision 2.6 date: 91/04/02 16:44:23; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix Support Source file: ams/libs/ms/merge.c Current version: 2.8 revision 2.8 date: 91/04/02 16:44:26; author: susan; state: Exp; lines added/del: 7/2 added SCO Unix Support Source file: ams/libs/ms/msdir.c Current version: 2.34 revision 2.34 date: 91/04/02 16:44:31; author: susan; state: Exp; lines added/del: 4/4 added SCO Unix Support ---------------------------- revision 2.33 date: 91/01/28 14:22:16; author: gk5g; state: Exp; lines added/del: 6/3 Fix to IsMessageAlreadyThere() that prevents duplicate messages. Source file: ams/libs/ms/msparse.c Current version: 2.5 revision 2.5 locked by: gk5g; date: 91/01/28 13:01:25; author: gk5g; state: Exp; lines added/del: 3/3 Changed submitted by MBY @ Richland: Added condition (code822 != 0) to while-loop in parsedateheader() to avoid infinite-loop when Next822Word returns 0. Source file: ams/libs/ms/msprint.c Current version: 2.24 revision 2.24 date: 91/04/02 16:44:10; author: susan; state: Exp; lines added/del: 7/2 added SCO Unix Support Source file: ams/libs/ms/mswp.c Current version: 2.49 revision 2.49 date: 91/04/02 16:44:50; author: susan; state: Exp; lines added/del: 28/4 added SCO Unix Support ---------------------------- revision 2.48 date: 90/11/28 14:19:17; author: susan; state: Exp; lines added/del: 4/5 moved andrewos.h to be first include file Source file: ams/libs/ms/site.c Current version: 1.3 revision 1.3 date: 91/04/02 16:45:54; author: susan; state: Exp; lines added/del: 46/2 added SCO Unix Support Source file: ams/libs/ms/mungenew.c Current version: 2.26 revision 2.26 date: 91/04/03 16:56:17; author: susan; state: Exp; lines added/del: 7/3 added SCO Unix support ---------------------------- revision 2.25 date: 90/11/28 14:19:41; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/libs/ms/rawdb.c Current version: 2.55 revision 2.55 date: 91/04/03 17:14:32; author: susan; state: Exp; lines added/del: 11/6 added SCO Unix support ---------------------------- revision 2.54 date: 91/01/08 18:33:45; author: gk5g; state: Exp; lines added/del: 14/5 Patch submitted by Craig Everhart: The folks administering postman@andrew.cmu.edu have doubtless noticed its serious quota usage flickers. Normally the ~postman volume consumes about 90-110Meg, but sometimes it consumes up to its 140Meg quota limit. When this happens, it's not clear where the storage goes, but it is clear that several normal processes are disrupted by the condition. Source file: ams/libs/ms/rebldmuf.c Current version: 2.14 revision 2.14 date: 91/04/02 16:45:25; author: susan; state: Exp; lines added/del: 4/3 added SCO Unix Support Source file: ams/libs/ms/recon.c Current version: 2.21 revision 2.21 date: 91/04/02 16:45:32; author: susan; state: Exp; lines added/del: 23/11 added SCO Unix Support Source file: ams/libs/ms/rmvdir.c Current version: 2.8 revision 2.8 date: 91/04/02 16:45:46; author: susan; state: Exp; lines added/del: 7/2 added SCO Unix Support Source file: ams/libs/ms/scavenge.c Current version: 1.5 revision 1.5 date: 91/04/02 16:46:26; author: susan; state: Exp; lines added/del: 7/1 added SCO Unix support Source file: ams/libs/ms/setsubs.c Current version: 2.4 revision 2.4 date: 91/04/02 16:45:51; author: susan; state: Exp; lines added/del: 3/2 added SCO Unix Support Source file: ams/libs/ms/strpself.c Current version: 2.12 revision 2.12 date: 90/11/28 14:19:59; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/libs/ms/submsg.c Current version: 2.15 revision 2.15 date: 91/04/18 13:55:46; author: gk5g; state: Exp; lines added/del: 0/0 Place andrewos.h at the top of the module. Removed inclusion of system.h ---------------------------- revision 2.14 date: 91/04/02 16:45:58; author: susan; state: Exp; lines added/del: 10/2 added SCO Unix Support Source file: ams/libs/ms/subs.c Current version: 2.32 revision 2.32 date: 91/01/08 18:27:09; author: gk5g; state: Exp; lines added/del: 16/15 Fix submitted by Nathaniel Borenstein: Yesterday, I moved the location of the root of the Bellcore AMS bboard system. This, naturally, invoked all the code that handles a change of bboard roots. It worked perfectly for about half my users; the other half had their profiles corrupted in a nasty way. The problem was that certain key variables were never getting reinitialized if the ReadSubs routine was called more than once, as it sometimes is. ---------------------------- revision 2.31 date: 90/11/28 14:20:03; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/libs/ms/subswalk.c Current version: 2.10 revision 2.10 date: 91/04/02 16:46:08; author: susan; state: Exp; lines added/del: 8/2 added SCO Unix Support Source file: ams/libs/nosnap/nosnap.c Current version: 2.7 revision 2.7 date: 91/05/24 19:04:52; author: gk5g; state: Exp; lines added/del: 4/2 Remove andrewos.h and use stdio.h. . ---------------------------- revision 2.6 date: 91/05/24 18:52:24; author: gk5g; state: Exp; lines added/del: 3/2 Syntax error. Included andrewos.h to get NULL. Sheesh. . ---------------------------- revision 2.5 date: 91/05/22 22:06:38; author: gk5g; state: Exp; lines added/del: 45/18 Added better error checking to MS_CUI_Init. Now informs the user when the attempt to open the users Mailbox fails. Used to just say, "Messageserver initialization failed". . Source file: ams/libs/snap/cuisnap.c Current version: 2.20 revision 2.20 date: 90/11/28 14:20:53; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/ms/Imakefile Current version: 2.30 revision 2.30 date: 91/04/02 16:47:01; author: susan; state: Exp; lines added/del: 10/2 added SCO Unix support Source file: ams/ms/ms.c Current version: 2.24 revision 2.24 date: 90/11/28 14:21:46; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: ams/msclients/cui/Imakefile Current version: 2.25 revision 2.25 date: 91/04/02 16:48:24; author: susan; state: Exp; lines added/del: 12/3 added SCO Unix support ---------------------------- revision 2.24 date: 91/02/12 11:29:45; author: susan; state: Exp; lines added/del: 1/1 changed hard link to soft Source file: ams/msclients/cui/cui.c Current version: 2.33 revision 2.33 date: 90/11/28 14:23:22; author: susan; state: Exp; lines added/del: 4/5 moved andrewos.h to be first include file Source file: ams/msclients/cui/cuifns.c Current version: 2.13 revision 2.13 date: 91/04/02 16:48:02; author: susan; state: Exp; lines added/del: 40/3 added SCO Unix support ---------------------------- revision 2.12 date: 90/11/28 14:23:48; author: susan; state: Exp; lines added/del: 4/5 moved andrewos.h to be first include file Source file: ams/msclients/nns/Imakefile Current version: 2.10 revision 2.10 date: 91/04/02 16:48:40; author: susan; state: Exp; lines added/del: 5/1 added SCO Unix support Source file: ams/msclients/nns/big.h Current version: 2.8 revision 2.8 date: 91/04/02 16:48:46; author: susan; state: Exp; lines added/del: 7/1 added SCO Unix support Source file: ams/msclients/nns/gl.c Current version: 2.7 revision 2.7 date: 91/04/02 16:48:51; author: susan; state: Exp; lines added/del: 0/1 added SCO Unix support Source file: ams/msclients/vui/Imakefile Current version: 2.26 revision 2.26 date: 91/04/02 16:49:26; author: susan; state: Exp; lines added/del: 7/3 added SCO Unix support ---------------------------- revision 2.25 date: 91/02/12 11:43:25; author: susan; state: Exp; lines added/del: 1/1 changed hard link to soft Source file: ams/msclients/vui/andmach.c Current version: 2.5 revision 2.5 date: 91/04/02 16:49:36; author: susan; state: Exp; lines added/del: 2/1 added SCO Unix support Source file: ams/msclients/vui/andmpc.c Current version: 2.10 revision 2.10 date: 90/11/28 14:25:46; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/msclients/vui/lmenus.c Current version: 2.7 revision 2.7 date: 91/04/02 16:49:41; author: susan; state: Exp; lines added/del: 2/1 added SCO Unix support Source file: ams/msclients/vui/panelp.c Current version: 1.18 revision 1.18 date: 91/04/02 16:49:52; author: susan; state: Exp; lines added/del: 2/1 added SCO Unix support Source file: ams/msclients/vui/vui.c Current version: 2.32 revision 2.32 date: 91/04/02 16:50:05; author: susan; state: Exp; lines added/del: 9/4 added SCO Unix support Source file: ams/msclients/vui/vuibase.c Current version: 1.31 revision 1.31 date: 90/11/28 14:25:56; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: ams/msclients/vui/vuimenus.c Current version: 1.6 revision 1.6 date: 91/04/02 16:50:43; author: susan; state: Exp; lines added/del: 2/1 added SCO Unix support Source file: ams/msclients/vui/vuipnl.c Current version: 1.30 revision 1.30 date: 91/04/02 16:50:17; author: susan; state: Exp; lines added/del: 5/2 added SCO Unix support ---------------------------- revision 1.29 date: 90/11/28 14:26:17; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file Source file: ams/msclients/vui/vuiscrns.c Current version: 2.8 revision 2.8 date: 91/04/02 16:49:48; author: susan; state: Exp; lines added/del: 2/1 added SCO Unix support Source file: ams/utils/dlistc/dlc.c Current version: 1.9 revision 1.9 date: 90/11/28 14:27:02; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file Source file: ams/delivery/trymail/strong.c Current version: 1.45 revision 1.45 date: 91/04/09 18:12:37; author: gk5g; state: Exp; lines added/del: 2/2 Patch submitted by Craig Everhart: AMDS as it comes out of the box has unfortunate defaults for how long it waits on one transient error: in particular, the transient error that it can get when checking whether the destination mail domain runs AMDS. This can happen when somebody defines an AFS cell named after a popular mail domain, yet doesn't run servers for that AFS cell. This patch implements a new AndrewSetup option: AMS_CrossCellQueueLifetime. ---------------------------- revision 1.44 date: 91/03/25 14:54:33; author: gk5g; state: Exp; lines added/del: 7/4 Patch submitted by Craig Everhart: Old versions of this program would reject messages with odd Content-type: fields that it couldn't understand and that it yet felt it was being asked to de-format. This version passes messages with totally unrecognized Content-type: fields. It will still reject messages with Content-type: fields of unrecognized BE2 or X-BE2 versions, which was much more like the original intention. ---------------------------- revision 1.43 date: 90/12/07 17:53:02; author: gk5g; state: Exp; lines added/del: 3/1 RS/6000 malloc-family declarations. ---------------------------- revision 1.42 date: 90/11/28 14:15:34; author: susan; state: Exp; lines added/del: 2/3 moved andrewos.h to be first include file Source file: ams/delivery/trymail/trymail.c Current version: 1.45 revision 1.45 date: 91/04/09 18:22:17; author: gk5g; state: Exp; lines added/del: 3/3 Fixed some omissions and typos in Craig's last patch. ---------------------------- revision 1.44 date: 91/04/09 18:11:55; author: gk5g; state: Exp; lines added/del: 5/4 Patch submitted by Craig Everhart: AMDS as it comes out of the box has unfortunate defaults for how long it waits on one transient error: in particular, the transient error that it can get when checking whether the destination mail domain runs AMDS. This can happen when somebody defines an AFS cell named after a popular mail domain, yet doesn't run servers for that AFS cell. This patch implements a new AndrewSetup option: AMS_CrossCellQueueLifetime. ---------------------------- revision 1.43 date: 91/03/25 14:56:21; author: gk5g; state: Exp; lines added/del: 9/7 Patch submitted by Craig Everhart: Before this patch, AMDS would deliver mail to unique abbreviations of surnames. With this patch, a probe name must at least match the surname or login-ID of a local entry before delivery would occur. (This corresponds to what I actually thought was going on...) ---------------------------- revision 1.42 date: 90/12/07 17:53:26; author: gk5g; state: Exp; lines added/del: 3/1 RS/6000 malloc-family declarations. Source file: ams/delivery/trymail/weak.c Current version: 1.10 revision 1.10 date: 90/12/07 17:52:39; author: gk5g; state: Exp; lines added/del: 3/1 RS/6000 malloc-family declarations. Source file: ams/delivery/trymail/wkstr.h Current version: 1.11 revision 1.11 date: 91/04/09 18:10:59; author: gk5g; state: Exp; lines added/del: 1/1 Patch submitted by Craig Everhart: AMDS as it comes out of the box has unfortunate defaults for how long it waits on one transient error: in particular, the transient error that it can get when checking whether the destination mail domain runs AMDS. This can happen when somebody defines an AFS cell named after a popular mail domain, yet doesn't run servers for that AFS cell. This patch implements a new AndrewSetup option: AMS_CrossCellQueueLifetime. Source file: ams/delivery/queuem/queuem.c Current version: 1.70 revision 1.70 date: 91/04/09 17:36:36; author: gk5g; state: Exp; lines added/del: 0/2 Removed outdated AFS include file ---------------------------- revision 1.69 date: 90/12/17 12:46:57; author: gk5g; state: Exp; lines added/del: 1/3 Removed arguments ctoken and stoken from the call to GenTokens(). Those args were bcrypt-related. That method of token encryption has been supplanted by a Kerberos-compatible one. ---------------------------- revision 1.68 date: 90/11/28 14:13:54; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file Source file: ams/demo/gendemo Current version: 1.4 revision 1.4 date: 91/04/03 17:29:05; author: susan; state: Exp; lines added/del: 8/0 Reworked the way the variable "Me" is set. For SCO Unix, there is no "whoami". Source file: atk/Imakefile Current version: 2.63 revision 2.63 date: 91/04/04 18:27:10; author: gk5g; state: Exp; lines added/del: 2/2 Someone was kind enough to explain how ln works. The rule creates a link in the DESTDIR/lib for the old style templates directory. ---------------------------- revision 2.62 date: 91/04/03 17:42:41; author: susan; state: Exp; lines added/del: 4/4 The last thing that is done in this Imakefile is: $(RM) $(DESTDIR)/lib/templates $(LN) tpls $(DESTDIR)/lib/templates* I don't see any logic behind this. I've commented it out until someone can explain the purpose to me (Gary Keim). ---------------------------- revision 2.61 date: 91/03/27 17:22:56; author: gk5g; state: Exp; lines added/del: 4/0 The macro VALUE was not being included in the list of directories to build. I added it. ---------------------------- revision 2.60 date: 91/03/24 12:35:13; author: gk5g; state: Exp; lines added/del: 5/0 Place $(LSET) in list of dirs to build. ---------------------------- revision 2.59 date: 91/03/07 13:31:42; author: susan; state: Exp; lines added/del: 19/4 removed layout from basic_insets; added lset and value to b_i ---------------------------- revision 2.58 date: 91/02/13 16:42:05; author: susan; state: Exp; lines added/del: 1/0 added hyplink ---------------------------- revision 2.57 date: 91/02/05 16:29:58; author: gk5g; state: Exp; lines added/del: 1/0 If MK_BASIC_INSETS is defined, we make the layout directory. But layout depends on cel, so we are defining lset as well. ---------------------------- revision 2.56 date: 91/01/04 16:45:31; author: susan; state: Exp; lines added/del: 1/0 added layout to the basic_insets Source file: atk/ajpchg.16.0 Current version: 1.1 revision 1.1 date: 90/12/14 14:23:13; author: ajp; state: Exp; Initial revision Source file: atk/apps/statload.c Current version: 2.11 revision 2.11 date: 90/12/14 15:06:55; author: ajp; state: Exp; lines added/del: 6/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/apps/Imakefile Current version: 2.37 revision 2.37 date: 91/05/17 17:54:52; author: gk5g; state: Exp; lines added/del: 2/2 When WM_ENV is defined, we link runapp against ${WMBASEDIR}/lib/libwm.a. The builder should set WMBASEDIR in site.mcr. There is no default value. . ---------------------------- revision 2.36 date: 91/05/08 23:57:59; author: gk5g; state: Exp; lines added/del: 1/1 Link runapp against the new Make macro, WMLIB, if WM_ENV is defined. We no longer assume that libwm.a is located in ${BASEDIR}/lib/libwm.a. The builder can set WMLIB in site.mcr. . ---------------------------- revision 2.35 date: 91/04/12 14:04:51; author: gk5g; state: Exp; lines added/del: 10/26 Had to fiddle with the various libraries that we use. Only use the -L -llib syntax on platforms whose OS supports dynamic loading. On the rt, atleast, using -L seems to make it use the wrong libc. ---------------------------- revision 2.34 date: 91/04/08 21:43:03; author: gk5g; state: Exp; lines added/del: 2/2 Changed incorrect library macros that went ${DESTDIR}/lib instead of ${BASEDIR}/lib. ---------------------------- revision 2.33 date: 91/04/08 18:17:58; author: gk5g; state: Exp; lines added/del: 17/10 Changed reference from libtypescript.a to libtscript.a. Added some platform-spcific libs. ---------------------------- revision 2.32 date: 91/04/02 20:51:01; author: gk5g; state: Exp; lines added/del: 4/4 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. ---------------------------- revision 2.31 date: 91/03/23 20:01:05; author: gk5g; state: Exp; lines added/del: 2/2 Added -L $(XLIBDIR) prior to -lX11 in SYSLIBS macro. ---------------------------- revision 2.30 date: 91/02/18 23:42:31; author: gk5g; state: Exp; lines added/del: 8/4 Added cpp directives to set SYSLIBS without a recursive macro definition. ---------------------------- revision 2.29 date: 91/02/15 17:24:22; author: gk5g; state: Exp; lines added/del: 5/2 Changes submitted by Guy Harris in support of SunOS4.1 dynamic loading. ---------------------------- revision 2.28 date: 90/12/17 17:26:32; author: gk5g; state: Exp; lines added/del: 1/1 Backed-out last change for RS/6000. ---------------------------- revision 2.27 date: 90/12/17 14:25:58; author: gk5g; state: Exp; lines added/del: 5/1 For the RS/6000 don't hardwire ${BASEDIR}/lib/libclass.a into the ld command. Use -L${BASEDIR}/lib -lclass instead. That way you can move the obj. tree around without problem. ---------------------------- revision 2.26 date: 90/12/04 13:12:02; author: gk5g; state: Exp; lines added/del: 7/1 Changed load reference of libclass.a from an absolute pathname to one relative to ${BASEDIR}/lib for the RIOS only. We need to be able to move around previously-built object-trees. This absolute path in runapp was causing dynamic loading to fail because it depends on libclass.a which is a shared library. This reference even overrode the setting of the LIBPATH environment variable. Now LIBPATH must be set only if the object-tree is moved from it's original DESTDIR. Source file: atk/apps/runapp.c Current version: 2.14 revision 2.14 date: 91/05/23 16:35:32; author: gk5g; state: Exp; lines added/del: 9/11 Patch submitted by Guy Harris & Charles Hayden: I have tested a fix to the dynamic loader problem on sun4.1.1. There is code in runapp.c and in doindex.c that attempts to correct for a bug in Sun's dynamic loader. The problem I was having will affect atk program that is run when file descriptors other than 0, 1, and 2 are open. In my case, my shell leaves file descriptor 3 open when it runs programs. . ---------------------------- revision 2.13 date: 91/03/28 13:21:02; author: dba; state: Exp; lines added/del: 7/4 In doing the hp800 port it became useful to allow for different levels of doload_trace debugging. So now successive -d switches increment doload_trace, rather just setting it to TRUE. ---------------------------- revision 2.12 date: 91/02/15 17:25:05; author: gk5g; state: Exp; lines added/del: 16/2 Changes submitted by Guy Harris in support of SunOS4.1 dynamic loading. ---------------------------- revision 2.11 date: 91/02/12 17:01:31; author: gk5g; state: Exp; lines added/del: 3/5 Removed declaration of rindex/index. That is handled by andrewos.h. Source file: atk/apt/apt/Imakefile Current version: 1.18 revision 1.18 date: 91/04/10 16:03:38; author: gk5g; state: Exp; lines added/del: 1/5 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 1.17 date: 91/04/08 18:41:55; author: gk5g; state: Exp; lines added/del: 2/0 Don't DeclareFont if FONTS_TO_BDF_ENV is defined. ---------------------------- revision 1.16 date: 91/03/23 20:02:21; author: gk5g; state: Exp; lines added/del: 2/1 Don't install fonts if NO_FONTS_ENV is defined. Source file: atk/apt/apt/apt.c Current version: 1.7 Source file: atk/apt/apt/apt.ch Current version: 1.3 Source file: atk/apt/apt/apt.h Current version: 1.5 revision 1.5 date: 91/04/03 17:00:34; author: susan; state: Exp; lines added/del: 19/0 added SCO Unix support Source file: atk/apt/suite/Imakefile Current version: 1.20 revision 1.20 date: 91/05/30 21:44:34; author: gk5g; state: Exp; lines added/del: 2/0 Only link suiteta against libX11.a if SCOunix is defined. Don't know why this is necessary though. . ---------------------------- revision 1.19 date: 91/04/02 16:51:07; author: susan; state: Exp; lines added/del: 1/0 added SCO Unix support Source file: atk/apt/suite/suite.ch Current version: 1.21 revision 1.21 date: 91/04/08 17:18:07; author: gk5g; state: Exp; lines added/del: 2/2 Added check for self->items in macro ItemCount(). Source file: atk/atkvers/atkvers.num Current version: 1.53 revision 1.53 date: 91/05/07 16:26:40; author: susan; state: Exp; lines added/del: 1/1 increased to 17.0 for patch 10 . ---------------------------- revision 1.52 date: 91/05/07 15:59:37; author: susan; state: Exp; lines added/del: 1/1 Bump the global ATK Version number ---------------------------- revision 1.51 date: 91/04/26 12:51:20; author: susan; state: Exp; lines added/del: 1/1 Bump the global ATK Version number ---------------------------- revision 1.50 date: 91/01/30 16:20:35; author: susan; state: Exp; lines added/del: 1/1 Bump the global ATK Version number ---------------------------- revision 1.49 date: 91/01/02 12:21:34; author: susan; state: Exp; lines added/del: 1/1 Bump the global ATK Version number ---------------------------- revision 1.48 date: 90/12/14 13:35:47; author: susan; state: Exp; lines added/del: 1/1 Bumped the version to 16.0 in honor of the Andrew J. Palay Memorial Patch Source file: atk/basics/wm/wim.c Current version: 1.17 Source file: atk/basics/wm/wgraphic.c Current version: 1.10 revision 1.10 date: 91/01/29 12:02:34; author: dba; state: Exp; lines added/del: 6/6 a slightly better fix for when Tile is NULL in FillRect and FillTrapezoid ---------------------------- revision 1.9 date: 91/01/29 11:40:59; author: dba; state: Exp; lines added/del: 15/3 fixed fillrect and filltrapezoid to do something reasonable when their Tile arg is NULL Source file: atk/basics/wm/Imakefile Current version: 1.18 revision 1.18 date: 91/05/17 18:01:15; author: gk5g; state: Exp; lines added/del: 3/1 Link wws.o against ${WMBASEDIR}/lib/libwm.a. WMBASEDIR is to be set by the builder in site.mcr. WMBASEDIR has no default value. . ---------------------------- revision 1.17 date: 91/05/08 18:45:43; author: gk5g; state: Exp; lines added/del: 1/1 Mow link wws.o against ${WMLIB}, which can be set in site.mcr. . Source file: atk/basics/x/xgraphic.c Current version: 1.19 revision 1.19 date: 91/05/07 14:42:18; author: tpn; state: Exp; lines added/del: 36/29 Fixed bug where xgraphic_DisplayClass() was cacheing it's information in a static, and would be wrong if an im had windows open on multiple display types. Also fixed bug where this routine could return garbage for multiplane static gray displays. Also made more efficient. . ---------------------------- revision 1.18 date: 91/05/03 22:38:57; author: gk5g; state: Exp; lines added/del: 15/4 Patch submitted by Stephan Greene: this is a small change to xgraphic.c, that makes a big difference in performance in some instances. It does a Get{Fore,Back}groundColor to be sure it doesn't reset the ground color if it is already set to the given color. Perhaps it should do a strcmp() of the colornames, if one is provided? . Source file: atk/basics/x/xgraphic.ch Current version: 1.7 revision 1.7 date: 91/05/07 14:42:18; author: tpn; state: Exp; lines added/del: 4/3 Fixed bug where xgraphic_DisplayClass() was cacheing it's information in a static, and would be wrong if an im had windows open on multiple display types. Also fixed bug where this routine could return garbage for multiplane static gray displays. Also made more efficient. . Source file: atk/basics/x/xfontd.c Current version: 1.13 revision 1.13 date: 90/11/28 14:28:47; author: susan; state: Exp; lines added/del: 5/4 moved andrewos.h to be first include file Source file: atk/basics/x/xim.c Current version: 1.66 revision 1.66 date: 91/05/03 01:39:48; author: rr2b; state: Exp; lines added/del: 11/6 fixed bug where a window would come up blank and stay that way if an im_Expose occurred before an im_RedrawWindow and the menubar is on. . ---------------------------- revision 1.65 date: 91/05/02 01:04:05; author: rr2b; state: Exp; lines added/del: 5/5 fixed null pointer bug in use of paneTitle where paneString should have been used in calls to GetCardPriority. ---------------------------- revision 1.64 date: 91/04/20 20:37:15; author: rr2b; state: Exp; lines added/del: 3/3 attempt fix for bug when an override transient is not within its parent's visible area in xim_RedrawWindow ---------------------------- revision 1.63 date: 91/04/20 03:50:17; author: rr2b; state: Exp; lines added/del: 67/5 added preferencce PriorityStep, CardOrder, MenubarCardOrder and PopupCardOrder to control the order of menu cards ---------------------------- revision 1.62 date: 91/04/19 18:21:40; author: rr2b; state: Exp; lines added/del: 69/32 *** empty log message *** ---------------------------- revision 1.61 date: 91/04/18 22:51:00; author: rr2b; state: Exp; lines added/del: 4/8 *** empty log message *** ---------------------------- revision 1.60 date: 91/04/18 20:30:13; author: rr2b; state: Exp; lines added/del: 11/6 *** empty log message *** ---------------------------- revision 1.59 date: 91/04/18 19:55:15; author: rr2b; state: Exp; lines added/del: 12/6 *** empty log message *** ---------------------------- revision 1.58 date: 91/04/17 22:17:07; author: rr2b; state: Exp; lines added/del: 0/0 fixed override window handling new functioning is: an active popup has complete control over its top level window's menus also fixed creation so that they are parented by the corrent X window. ---------------------------- revision 1.57 date: 91/04/15 16:13:38; author: gk5g; state: Exp; lines added/del: 3/3 The left and top arguments to DoGeometry() were reversed. I switched them. ---------------------------- revision 1.56 date: 91/04/15 14:22:40; author: gk5g; state: Exp; lines added/del: 4/4 In HandleWindowEvent(), in the ButtonPress event case when the buttonEvent->button is the MENUBUTTON, we check to see if cmenus are being used and then, incorrectly, check for im->menu when we should be validating im->cmenu. Simple mistake. The symptom of this problem was that the cmenus wouldn't come up unless we had the menubar enabled. ---------------------------- revision 1.55 date: 91/04/14 15:21:16; author: rr2b; state: Exp; lines added/del: 6/6 fixed bug which caused ^X^D (delete-window) to not work when using the motif menus, replaced a couple xim2window macros with TOPLEVELWINDOW where appropriate ---------------------------- revision 1.54 date: 91/04/11 18:37:57; author: rr2b; state: Exp; lines added/del: 6/4 REALLY fixed the loop condition this time (in SetupMenuChoices) ---------------------------- revision 1.53 date: 91/04/10 23:04:22; author: rr2b; state: Exp; lines added/del: 3/3 found a sun core dump... loop condition was wrong in SetupMenuChoices ---------------------------- revision 1.52 date: 91/04/06 15:31:01; author: rr2b; state: Exp; lines added/del: 3/3 added preference MenubarCardDelay which gives a time to wait for more events before bringing up a new menu card. ---------------------------- revision 1.51 date: 91/03/29 18:12:14; author: rr2b; state: Exp; lines added/del: 15/15 added pointer paranoia and fixed bogus declaration in DoGeometry ---------------------------- revision 1.50 date: 91/03/29 14:39:40; author: rr2b; state: Exp; lines added/del: 6/12 fix for bug when no menus are posted and an event is generated which the menubar should handle ---------------------------- revision 1.49 date: 91/03/29 00:20:18; author: rr2b; state: Exp; lines added/del: 15/13 removed XSelectInput on menubar window (moved to menubar.c) and added hack so that nothing is done until after the first StructureNotify occurs so that if a window is resized as it is being placed nothing is drawn until the final size is determined. ---------------------------- revision 1.48 date: 91/03/28 16:36:17; author: rr2b; state: Exp; lines added/del: 829/641 major re-organization and addition of support for a menubar. ---------------------------- revision 1.47 date: 91/03/15 15:16:20; author: gk5g; state: Exp; lines added/del: 413/21 Bill Cattey's transient- and override-window implementations. ---------------------------- revision 1.46 date: 91/02/18 17:43:26; author: gk5g; state: Exp; lines added/del: 28/19 Forgot to include the call that sets the XA_WM_CLIENT_MACHINE property. Ooops. That broke cut/paste. ---------------------------- revision 1.45 date: 91/02/11 17:16:30; author: gk5g; state: Exp; lines added/del: 58/41 Added support for new preferences options MaxIconLabelLength, MaxTitleLength, and UseProgramNameInTitle. See andrew/overhead/util/lib/prefs.help for descriptions. Source file: atk/basics/x/xim.ch Current version: 1.13 revision 1.13 date: 91/05/28 22:16:35; author: gk5g; state: Exp; lines added/del: 5/5 Changed SupportsTransients to SupportsTransient. Likewize for SupportsOverrides. . ---------------------------- revision 1.12 date: 91/04/22 19:37:06; author: rr2b; state: Exp; lines added/del: 3/2 *** empty log message *** ---------------------------- revision 1.11 date: 91/03/28 16:38:20; author: rr2b; state: Exp; lines added/del: 10/4 addition of support for a menubar ---------------------------- revision 1.10 date: 91/03/15 15:17:54; author: gk5g; state: Exp; lines added/del: 12/5 Bill Cattey's transient- and override-window implementations. Source file: atk/basics/x/menubar.c Current version: 1.12 revision 1.12 date: 91/05/06 21:09:20; author: rr2b; state: Exp; lines added/del: 29/23 fixed bug with menus with priority 100 also fixed so that applications can't change the contents of the "More..." menu card. . ---------------------------- revision 1.11 date: 91/05/04 17:51:06; author: rr2b; state: Exp; lines added/del: 4/4 fixed so that when the mouse is above the menubar it will not bring up new menus (the mouse must be within the menubar to bring up a new menu) also changed menubarcarddelay so that response time is better . ---------------------------- revision 1.10 date: 91/04/25 15:54:57; author: rr2b; state: Exp; lines added/del: 4/5 *** empty log message *** ---------------------------- revision 1.9 date: 91/04/20 20:43:05; author: rr2b; state: Exp; lines added/del: 5/5 ensure that the program name menubar title always appears (either in the menubar or in the "More..." menu) (even if it has no items, other empty menus are not displayed) ---------------------------- revision 1.8 date: 91/04/20 03:50:17; author: rr2b; state: Exp; lines added/del: 12/12 optimized ClearArea in mb_Redraw to avoid erasing the border also changed so that empty menu cards (aside from the "More..." menu card) are ignored (they don't show up at all in the menubar). ---------------------------- revision 1.7 date: 91/04/17 22:19:10; author: rr2b; state: Exp; lines added/del: 0/0 try a smaller default font. ---------------------------- revision 1.6 date: 91/04/12 19:16:21; author: rr2b; state: Exp; lines added/del: 16/8 fixed bug reported by dba ---------------------------- revision 1.5 date: 91/04/06 15:29:45; author: rr2b; state: Exp; lines added/del: 96/42 added preference MenubarCardDelay which gives a time to wait for more events before bringing up a new menu card. ---------------------------- revision 1.4 date: 91/03/29 14:41:02; author: rr2b; state: Exp; lines added/del: 15/12 fix for bug when no menus are posted and an event is generated which the menubar should handle ---------------------------- revision 1.3 date: 91/03/29 03:23:58; author: rr2b; state: Exp; lines added/del: 2/2 fixed rcsid ---------------------------- revision 1.2 date: 91/03/29 00:18:11; author: rr2b; state: Exp; lines added/del: 20/0 added copyright notice and moved in XSelectInput from xim.c ---------------------------- revision 1.1 date: 91/03/28 16:39:20; author: rr2b; state: Exp; Initial revision Source file: atk/basics/x/Imakefile Current version: 1.25 revision 1.25 locked by: susan; date: 91/05/22 21:20:46; author: susan; state: Exp; lines added/del: 1/0 added motif.intro . ---------------------------- revision 1.24 date: 91/05/04 05:28:19; author: rr2b; state: Exp; lines added/del: 1/1 added help file installation .TO ---------------------------- revision 1.23 date: 91/04/10 15:54:11; author: gk5g; state: Exp; lines added/del: 0/4 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 1.22 date: 91/04/08 17:08:04; author: gk5g; state: Exp; lines added/del: 2/0 Don't DelcareFont if FONTS_TO_BDF_ENV. ---------------------------- revision 1.21 date: 91/04/02 18:42:47; author: gk5g; state: Exp; lines added/del: 2/1 Don't build fonts if NO_FONTS_ENV id defined. ---------------------------- revision 1.20 date: 91/04/02 17:48:24; author: rr2b; state: Exp; lines added/del: 4/1 Added menubar support (include font menu12) ---------------------------- revision 1.19 date: 91/04/02 16:51:23; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: atk/basics/x/menubar.h Current version: 1.5 revision 1.5 date: 91/04/08 19:31:18; author: gk5g; state: Exp; lines added/del: 3/3 The last element in the struct menubar didn't end with a semi-colon. ---------------------------- revision 1.4 date: 91/04/06 15:30:47; author: rr2b; state: Exp; lines added/del: 2/1 added preference MenubarCardDelay which gives a time to wait for more events before bringing up a new menu card. ---------------------------- revision 1.3 date: 91/03/29 03:24:38; author: rr2b; state: Exp; lines added/del: 1/8 oops, take out rcsid... ---------------------------- revision 1.2 date: 91/03/29 00:17:27; author: rr2b; state: Exp; lines added/del: 12/0 added copyright notice ---------------------------- revision 1.1 date: 91/03/28 16:38:55; author: rr2b; state: Exp; Initial revision Source file: atk/basics/x/menubar.help Current version: 1.2 revision 1.2 date: 91/05/04 05:17:28; author: rr2b; state: Exp; lines added/del: 100/45 reformatted preferences list (it now corresponds to the list in the preferences help file) . ---------------------------- revision 1.1 date: 91/04/25 19:18:10; author: rr2b; state: Exp; Initial revision Source file: atk/basics/x/menubar.doc Current version: 1.1 revision 1.1 date: 91/03/28 16:41:52; author: rr2b; state: Exp; Initial revision Source file: atk/basics/x/menu12.fdb Current version: 1.2 revision 1.2 date: 91/04/16 13:29:52; author: rr2b; state: Exp; lines added/del: 2/2 get the font name changed to menu ---------------------------- revision 1.1 date: 91/04/02 17:50:35; author: rr2b; state: Exp; Initial revision Source file: atk/basics/x/motif.intro Current version: 1.1 revision 1.1 date: 91/05/22 21:20:38; author: susan; state: Exp; Initial revision Source file: atk/basics/common/Imakefile Current version: 1.49 revision 1.49 locked by: gk5g; date: 91/05/23 20:36:00; author: susan; state: Exp; lines added/del: 1/1 removed space after -L . ---------------------------- revision 1.48 date: 91/05/22 21:19:03; author: susan; state: Exp; lines added/del: 1/1 moved motif.intro to basics/x . ---------------------------- revision 1.47 date: 91/05/22 20:32:18; author: susan; state: Exp; lines added/del: 3/3 added motif.intro . ---------------------------- revision 1.46 date: 91/05/20 16:20:08; author: susan; state: Exp; lines added/del: 1/1 added space after L in LIBS=-L ${XLIBDIR} . ---------------------------- revision 1.45 date: 91/05/07 17:10:51; author: gk5g; state: Exp; lines added/del: 2/0 Only install im.do when sys_rt_r3 or LIBDL_ENV is defined. . ---------------------------- revision 1.44 date: 91/05/07 01:59:44; author: gk5g; state: Exp; lines added/del: 2/2 We don't have to worry about the apparent bug wrt creating an im.do, if our system supports dynamic linking because any undefined symbols, the loader will let slide. On the pmax, trying to simply link im.o against MALLOCLIB, results in an undefined symbol "etext". . ---------------------------- revision 1.43 date: 91/05/07 01:54:56; author: gk5g; state: Exp; lines added/del: 2/4 I don't understand why we can't roll an im.do for any sys-type except rt_r3. . ---------------------------- revision 1.42 date: 91/05/02 21:09:41; author: gk5g; state: Exp; lines added/del: 2/2 Added rule to create & install im.do when not sys_rt_r3. . ---------------------------- revision 1.41 date: 91/04/04 22:17:49; author: gk5g; state: Exp; lines added/del: 1/1 Removed whitespace between -L and library search patch. ---------------------------- revision 1.40 date: 91/04/03 16:45:52; author: susan; state: Exp; lines added/del: 7/5 added SCO Unix support ---------------------------- revision 1.39 date: 91/02/04 15:59:31; author: gk5g; state: Exp; lines added/del: 1/1 Changed the reference to libplumber from ${DESTDIR}/lib/libplumber.a to $(MALLOCLIB). MALLOCLIB is a Make macro that is defined as ${BASEDIR}/lib/libplumber.a when DEBUG_MALLOC_ENV is defined. ---------------------------- revision 1.38 date: 90/12/14 14:57:20; author: ajp; state: Exp; lines added/del: 3/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/basics/common/app.c Current version: 2.22 revision 2.22 date: 91/05/07 20:36:28; author: bobg; state: Exp; lines added/del: 13/4 There's now a boolean preference, prog.PrintVersionNumber, that can disable version number printing! Hallelujah! . ---------------------------- revision 2.21 date: 91/04/02 16:51:55; author: susan; state: Exp; lines added/del: 3/3 added SCO Unix support ---------------------------- revision 2.20 date: 91/02/12 17:12:25; author: gk5g; state: Exp; lines added/del: 1/4 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 2.19 date: 91/01/21 18:12:33; author: gk5g; state: Exp; lines added/del: 3/3 Patch submitted by Todd Inglett: Changed #ifdef AIX to #if SY_AIX221. I think the setpgrp() that is #ifdef'ed is really needed on any system without job control. I am not positive though. Source file: atk/basics/common/view.ch Current version: 2.16 revision 2.16 date: 91/05/08 17:21:28; author: gk5g; state: Exp; lines added/del: 6/6 Run around bug in class pre-processor where token "data" in argument list is mistakenly taken to be the data-block initiator. Rename parameters from "data" to "datum". Fix class. . Source file: atk/basics/common/atom.c Current version: 2.9 revision 2.9 date: 91/03/15 14:59:51; author: gk5g; state: Exp; lines added/del: 4/4 Casted a malloc return value. Source file: atk/basics/common/bind.c Current version: 2.6 revision 2.6 date: 91/04/02 17:04:56; author: gk5g; state: Exp; lines added/del: 13/15 Added check to be sure the struct bind_Description pointer (bl) is non-NULL before dereferencing. Source file: atk/basics/common/cutbuf.help Current version: 1.2 revision 1.2 date: 91/02/12 15:06:15; author: gk5g; state: Exp; lines added/del: 54/8 Better description of how to cut/copy/paste between EZ and xterm. Source file: atk/basics/common/dataobj.c Current version: 2.13 revision 2.13 date: 90/12/14 15:11:29; author: ajp; state: Exp; lines added/del: 4/4 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/basics/common/filetype.c Current version: 2.12 revision 2.12 date: 91/02/12 17:12:37; author: gk5g; state: Exp; lines added/del: 4/6 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 2.11 date: 90/12/17 11:25:54; author: ajp; state: Exp; lines added/del: 3/3 Fix for when there is no extension specific information to be used. ---------------------------- revision 2.10 date: 90/12/14 16:55:08; author: ajp; state: Exp; lines added/del: 9/8 MOved includes around, especially andrewos.h ---------------------------- revision 2.9 date: 90/12/14 14:57:37; author: ajp; state: Exp; lines added/del: 102/221 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/basics/common/filetype.ch Current version: 2.7 revision 2.7 date: 90/12/14 14:57:33; author: ajp; state: Exp; lines added/del: 3/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/basics/common/fontdesc.c Current version: 2.10 revision 2.10 date: 90/12/18 14:56:34; author: gk5g; state: Exp; lines added/del: 0/0 Made a small mistake in ExplodeFontName. Was initializing the size to 12 for the case where no font size is specified. When the size WAS specified, I was adding to the size of 12 that it was inited to. The resulting font size was 12 points larger than the specified size. Ooops. ---------------------------- revision 2.9 date: 90/12/17 14:06:53; author: gk5g; state: Exp; lines added/del: 18/8 Made changes to fontdesc__ExplodeFontName()(. That code was being bad about comparing pointers. You can only compare pointers to elements of the same array. This code was decrementing a character pointer off the front of a character string. Source file: atk/basics/common/im.c Current version: 2.42 revision 2.42 date: 91/04/02 16:52:06; author: susan; state: Exp; lines added/del: 17/4 added SCO Unix support ---------------------------- revision 2.41 date: 91/03/15 15:24:39; author: gk5g; state: Exp; lines added/del: 105/11 Bill Cattey's transient- and override-window implementations. Added im_CancelMacro classprocedure. ---------------------------- revision 2.40 date: 91/01/21 18:13:47; author: gk5g; state: Exp; lines added/del: 46/3 Patch submitted by Todd Inglett: Some POSIX_ENV's are used to handle signals with sigaction. Otherwise, some platforms (like the 6000) will use System V type signals which do not re-establish themselves. This make the filters and compile features work more than once. ---------------------------- revision 2.39 date: 90/12/19 14:52:01; author: ajp; state: Exp; lines added/del: 3/2 Fixed handling of ^U when followed by ^G. ---------------------------- revision 2.38 date: 90/12/14 14:57:59; author: ajp; state: Exp; lines added/del: 178/48 ==> Andy's Changes: See atk/ajpchg.16.0 <== ---------------------------- revision 2.37 date: 90/11/28 14:27:56; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/basics/common/im.ch Current version: 2.18 revision 2.18 date: 91/05/28 22:15:27; author: gk5g; state: Exp; lines added/del: 5/5 Changed SupportsTransients to SupportsTransient. Likewize for SupportsOverrides. . ---------------------------- revision 2.17 date: 91/03/15 15:26:16; author: gk5g; state: Exp; lines added/del: 12/3 Bill Cattey's transient- and override-window implementations. Added im_CancelMacro classprocedure. ---------------------------- revision 2.16 date: 90/12/14 14:57:48; author: ajp; state: Exp; lines added/del: 9/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/basics/common/im.doc Current version: 1.5 revision 1.5 date: 91/05/28 22:57:39; author: gk5g; state: Exp; lines added/del: 128/55 Added description of im_Create{Override,Transient}Window() methods. . Source file: atk/basics/common/init.c Current version: 2.14 revision 2.14 date: 91/02/12 17:12:45; author: gk5g; state: Exp; lines added/del: 6/7 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 2.13 date: 90/12/18 13:32:20; author: ajp; state: Exp; lines added/del: 2/3 Removed extraneous break in ModifyMenulist code. This caused only one menu list to be added. ---------------------------- revision 2.12 date: 90/12/14 14:58:33; author: ajp; state: Exp; lines added/del: 47/14 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/basics/common/menulist.doc Current version: 1.4 revision 1.4 locked by: gk5g; date: 91/02/04 16:06:15; author: gk5g; state: Exp; lines added/del: 36/34 Changed the high-level descriptions of the methods ChainBeforeML and ChainAfterML to correctly describe their functions. That is, ChainBeforeML give the child menu precedence while ChainAfterML gives the parent menus precedence. Source file: atk/basics/common/message.c Current version: 2.7 revision 2.7 date: 91/04/02 16:52:49; author: susan; state: Exp; lines added/del: 27/3 added SCO Unix support Source file: atk/basics/common/message.ch Current version: 2.10 revision 2.10 date: 91/04/02 16:53:27; author: susan; state: Exp; lines added/del: 6/5 added SCO Unix support ---------------------------- revision 2.9 date: 91/03/27 17:52:17; author: gk5g; state: Exp; lines added/del: 5/5 The declaration of the enum types had extraneous commas after the last item. This causes an ANSI compiler to fail. I removed the extra comma. Source file: atk/basics/common/msghndlr.c Current version: 2.10 revision 2.10 date: 91/04/02 16:53:14; author: susan; state: Exp; lines added/del: 12/3 added SCO Unix support Source file: atk/basics/common/msghndlr.ch Current version: 2.8 revision 2.8 date: 91/04/02 16:53:36; author: susan; state: Exp; lines added/del: 4/3 added SCO Unix support Source file: atk/basics/common/observe.c Current version: 2.9 revision 2.9 date: 90/12/14 14:58:43; author: ajp; state: Exp; lines added/del: 13/7 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/basics/common/pixelimg.c Current version: 2.10 Source file: atk/basics/common/pixelimg.ch Current version: 2.6 Source file: atk/basics/common/proctbl.c Current version: 2.9 Source file: atk/basics/common/proctbl.ch Current version: 2.11 revision 2.11 date: 91/03/27 17:48:41; author: gk5g; state: Exp; lines added/del: 4/4 The declaration of the enum type proctable_type had an extraneous comma after the last item. This causes an ANSI compiler to fail. I removed the extra comma. Source file: atk/basics/common/profile.c Current version: 2.12 revision 2.12 date: 91/04/02 16:53:22; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: atk/basics/common/region.c Current version: 2.6 Source file: atk/basics/common/path.ch Current version: 1.1 revision 1.1 date: 90/12/14 14:56:16; author: ajp; state: Exp; Initial revision Source file: atk/basics/common/path.c Current version: 1.5 revision 1.5 date: 91/02/15 12:40:41; author: gk5g; state: Exp; lines added/del: 1/1 Fix suggested by Craig Everhart: The line in path.c that sets gotBaseInfo to TRUE (line 346 from what I can tell) should be moved outside the #ifdef AFS_ENV/#endif pair. ---------------------------- revision 1.4 date: 91/02/01 14:10:39; author: gk5g; state: Exp; lines added/del: 1/1 Patch submitted by Bill Cattey: The new path.c will not compile unless AFS_ENV is defined. This is because the declaration of gotBaseInfo in the procedure path__TruncatePath is inside ifdef's but should not be. ---------------------------- revision 1.3 date: 90/12/19 14:25:46; author: ajp; state: Exp; lines added/del: 1/1 Fixed TruncatePath to properly handle paths that do not begin with a slash (including the empty string). ---------------------------- revision 1.2 date: 90/12/17 11:26:44; author: ajp; state: Exp; lines added/del: 53/49 Shorten the search for home directories. It will now fail if you are looking at a file under someones home directory that is not owned by that person. Failure in this case is that TruncatePath will not shorten the file name to ~name/... file under the user's home directory should always work. ---------------------------- revision 1.1 date: 90/12/14 14:56:22; author: ajp; state: Exp; Initial revision Source file: atk/basics/lib/Imakefile Current version: 1.6 revision 1.6 date: 91/04/02 16:58:54; author: gk5g; state: Exp; lines added/del: 1/1 Added menubar.o to the macro list X11OBJS. ---------------------------- revision 1.5 date: 90/12/14 14:58:53; author: ajp; state: Exp; lines added/del: 1/1 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/bush/bushv.c Current version: 1.55 revision 1.55 date: 91/04/02 16:54:18; author: susan; state: Exp; lines added/del: 3/1 added SCO Unix support ---------------------------- revision 1.54 date: 91/03/28 13:28:47; author: dba; state: Exp; lines added/del: 3/1 Guarded the sleep(1) from the hp800. The SIGALRM that comes to wakeup the process seems to cause problems on the hp800. ---------------------------- revision 1.53 date: 91/02/04 15:56:29; author: gk5g; state: Exp; lines added/del: 2/2 Changed the call to menulist_ChainBeforeML to menulist_ChainAfterML. The documentation for that method incorrectly describes how the parent menus may have precedent over the child's. Source file: atk/bush/bush.c Current version: 1.23 revision 1.23 date: 91/04/02 16:54:08; author: susan; state: Exp; lines added/del: 3/1 added SCO Unix support ---------------------------- revision 1.22 date: 91/03/28 13:26:23; author: dba; state: Exp; lines added/del: 3/3 Hid the declaration of extern getpid() from hpux as well as SY_AIX12. Source file: atk/bush/bush.h Current version: 1.5 revision 1.5 date: 91/04/02 16:54:02; author: susan; state: Exp; lines added/del: 9/1 added SCO Unix support Source file: atk/champ/Imakefile Current version: 2.12 revision 2.12 date: 91/04/02 16:54:47; author: susan; state: Exp; lines added/del: 3/2 added SCO Unix support Source file: atk/champ/chump.c Current version: 2.7 revision 2.7 date: 91/02/12 17:41:48; author: gk5g; state: Exp; lines added/del: 3/4 Removed declaration of rindex/index. That is handled by andrewos.h. Source file: atk/chart/Imakefile Current version: 1.14 revision 1.14 date: 91/04/04 15:26:29; author: susan; state: Exp; lines added/del: 1/1 fixed InstallLink ---------------------------- revision 1.13 date: 91/04/02 16:55:01; author: susan; state: Exp; lines added/del: 2/2 added SCO Unix support Source file: atk/chart/chartobj.c Current version: 1.12 revision 1.12 date: 90/12/17 14:14:01; author: gk5g; state: Exp; lines added/del: 42/24 Patch submitted by Todd Inglett : The following patch fixes these bugs in chart: 1. FillTrapezoid doesn't work well to produce dotted lines under X11. SetLineDash() works much better. 2. Some bad floating point arithmetic messed up the half interval tick marks. 3. The algorithm that picks the tick mark interval only chooses a power of 10. This is awful for small charts with widely spaced data points. The new algorithm chooses nice values like 5, 10, 50, 100, etc, or those values times a power of 10. Source file: atk/chart/chartv.c Current version: 1.22 revision 1.22 date: 90/12/17 14:12:38; author: gk5g; state: Exp; lines added/del: 4/3 Removed chart-DEBUG menu item. Now define a proctable function chartv-DEBUG. One can use the ~/.atkinit file to add the debug menu item lile so: addmenu chartv-DEBUG "DEBUG~99". Source file: atk/chart/chartx1a.c Current version: 1.4 revision 1.4 date: 90/12/12 16:27:10; author: gk5g; state: Exp; lines added/del: 1/1 Fixed a typo. Source file: atk/controllers/calccon.c Current version: 2.6 revision 2.6 date: 91/04/25 18:22:38; author: tpn; state: Exp; lines added/del: 148/29 *** empty log message *** Source file: atk/controllers/calccon.ch Current version: 2.5 revision 2.5 date: 91/04/25 18:22:38; author: tpn; state: Exp; lines added/del: 12/6 *** empty log message *** Source file: atk/controllers/helpcon.c Current version: 2.7 revision 2.7 date: 91/04/02 16:55:21; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix support Source file: atk/console/cmd/Imakefile Current version: 2.20 revision 2.20 date: 91/01/15 14:21:23; author: gk5g; state: Exp; lines added/del: 7/1 Link consolea.o against libbsd.a on the RS/6000. ---------------------------- revision 2.19 date: 90/12/18 18:04:34; author: gk5g; state: Exp; lines added/del: 1/8 Don't link dynamic objects against libresolv.a anymore because those symbols are now in runapp. Source file: atk/console/cmd/viceop.c Current version: 2.16 revision 2.16 date: 91/03/23 20:07:18; author: gk5g; state: Exp; lines added/del: 3/6 Removed #include . That file is outdated. Source file: atk/console/fonts/Imakefile Current version: 2.14 revision 2.14 date: 91/04/10 15:55:40; author: gk5g; state: Exp; lines added/del: 0/4 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 2.13 date: 91/04/09 01:49:38; author: gk5g; state: Exp; lines added/del: 2/0 Don't DeclareFont if FONTS_TO_BDF_ENV is defined. ---------------------------- revision 2.12 date: 91/03/23 20:04:12; author: gk5g; state: Exp; lines added/del: 2/4 Don't install fonts if NO_FONTS_ENV is defined. Source file: atk/console/lib/conclass.c Current version: 2.10 revision 2.10 date: 91/05/08 17:11:00; author: gk5g; state: Exp; lines added/del: 3/3 Added a friendly type cast. .cal ---------------------------- revision 2.9 date: 91/05/07 00:51:38; author: gk5g; state: Exp; lines added/del: 10/6 The conclass__Hit method was calling scroll_Hit when the user clicked in the LogView, but it wasn't returning any value. It now returns scroll_Hit. Changed the return value from conclass__Hit from (struct consoleClass *) to (struct view *). . Source file: atk/console/lib/conclass.ch Current version: 2.8 revision 2.8 date: 91/05/07 00:54:03; author: gk5g; state: Exp; lines added/del: 4/4 Changed the return value from conclass__Hit from (struct consoleClass *) to (struct view *). . Source file: atk/console/lib/errmonf.c Current version: 2.11 revision 2.11 date: 91/03/28 13:32:30; author: dba; state: Exp; lines added/del: 5/5 The HP300_ENV guarding #include needed to be testing hpux instead -- the hp800 needs that too. Source file: atk/console/lib/errormon.c Current version: 2.21 revision 2.21 date: 91/01/21 18:34:26; author: gk5g; state: Exp; lines added/del: 12/3 Patch submitted by Todd Inglett: This adds a system("/etc/swcons") to have the system log console messages to console's pty. We have done lots of work to this file in the past, so I am not sure how it will patch your source. Our /etc/swcons is setuid root which might not be the standard configuration--you might want to check your system. Source file: atk/console/lib/sitevars.h Current version: 2.9 revision 2.9 date: 91/04/02 20:54:01; author: gk5g; state: Exp; lines added/del: 7/3 If _IBMR2 is defined set _SITE_VMUNIX to "/unix". Source file: atk/console/stats/hp800/Imakefile Current version: 1.1 revision 1.1 date: 91/03/29 11:19:30; author: dba; state: Exp; Initial revision Source file: atk/console/stats/hp800/getstats.c Current version: 1.1 revision 1.1 date: 91/03/29 11:19:39; author: dba; state: Exp; Initial revision Source file: atk/console/stats/sun3_41/Imakefile Current version: 1.1 revision 1.1 date: 91/02/15 17:12:21; author: gk5g; state: Exp; Initial revision Source file: atk/console/stats/sun3_41/getstats.c Current version: 1.1 revision 1.1 date: 91/02/15 17:12:39; author: gk5g; state: Exp; Initial revision Source file: atk/console/stats/sun4_41/Imakefile Current version: 1.1 revision 1.1 date: 91/02/15 17:13:03; author: gk5g; state: Exp; Initial revision Source file: atk/console/stats/sun4_41/getstats.c Current version: 1.1 revision 1.1 date: 91/02/15 17:13:10; author: gk5g; state: Exp; Initial revision Source file: atk/console/stats/vax_3/getstats.c Current version: 1.5 revision 1.5 date: 91/05/22 17:23:32; author: gk5g; state: Exp; lines added/del: 3/6 Backed out changes for Ultrix 4.x. They need to go into their own stats/getstats.c when we do the Ultrix 4.x port. . ---------------------------- revision 1.4 date: 91/05/22 17:16:54; author: gk5g; state: Exp; lines added/del: 7/4 Changes made to support Ultrix 4.x. DEC changes alot for their SMP support. These changes only get around the fact that getstats won't work. . Source file: atk/ctext/ctext.c Current version: 2.12 revision 2.12 date: 91/01/02 15:38:41; author: gk5g; state: Exp; lines added/del: 3/3 Backed out last change to the macro match(). ---------------------------- revision 2.11 date: 90/12/17 14:19:37; author: gk5g; state: Exp; lines added/del: 4/4 Changed the definition of the macro match() to use isident() instead of isalnum(). Source file: atk/ctext/ctext.tpl Current version: 2.4 revision 2.4 date: 90/12/18 16:27:01; author: ajp; state: Exp; lines added/del: 11/11 Changed definition of comment style. It is no longer 2 points larger ---------------------------- revision 2.3 date: 90/12/14 15:07:10; author: ajp; state: Exp; lines added/del: 1/0 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/ctext/ctextv.c Current version: 2.15 revision 2.15 date: 90/12/14 15:07:16; author: ajp; state: Exp; lines added/del: 62/3 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/eq/eq.c Current version: 2.7 revision 2.7 date: 90/11/20 14:03:47; author: gk5g; state: Exp; lines added/del: 4/3 Patch submitted by Bill Cattey: Never allow eq__Access to access element [-1] of the formula array. Source file: atk/eq/eqvcmds.c Current version: 2.10 revision 2.10 date: 91/03/27 14:38:38; author: gk5g; state: Exp; lines added/del: 36/3 Patch submitted by Bill Cattey: The problem is that when you cut inside eq, it gives a sub equation, and when you paste into text, it wants to have a whole equation. When the newly created eq object containing the sub equation is first drawn, eqview_Draw gets horribly confused and core dumps. I added code to make every cut, not only an autonomous ATK object with begindata/enddata (as it was) but also to add enough equation parts to make the cut sub equation into a whole equation. I then added code to eqview_Paste to strip off the added stuff, just as it strips off the begindata/enddata. Now when textview_Paste creates a new eq object, it contains a whole equation which draws and saves quite happily. Source file: atk/eq/symbols.c Current version: 2.3 Source file: atk/examples/ex1/helloa.c Current version: 2.5 Source file: atk/ez/eza.c Current version: 2.14 revision 2.14 date: 90/12/14 15:05:57; author: ajp; state: Exp; lines added/del: 58/11 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/ez/eza.ch Current version: 2.7 revision 2.7 date: 90/12/14 15:05:44; author: ajp; state: Exp; lines added/del: 4/3 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/ez/ezkeys.help Current version: 1.3 revision 1.3 date: 91/05/21 21:18:59; author: gk5g; state: Exp; lines added/del: 6/3 Added description of ^U^X2. This allows you to bring up a new window on another host. . Source file: atk/extensions/Imakefile Current version: 2.17 revision 2.17 date: 91/04/26 17:33:07; author: bobg; state: Exp; lines added/del: 2/1 *** empty log message *** Source file: atk/extensions/compile.c Current version: 2.10 revision 2.10 date: 90/12/16 22:47:10; author: ajp; state: Exp; lines added/del: 11/11 type fixes ---------------------------- revision 2.9 date: 90/11/28 14:31:13; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/extensions/deskey.c Current version: 1.6 revision 1.6 date: 90/12/16 22:47:24; author: ajp; state: Exp; lines added/del: 8/8 type fixes Source file: atk/extensions/dsearch.c Current version: 2.8 revision 2.8 date: 90/12/16 22:46:30; author: ajp; state: Exp; lines added/del: 16/17 Changes as noted in atk/ajpchg.16.0 ---------------------------- revision 2.7 date: 90/12/14 15:07:48; author: ajp; state: Exp; lines added/del: 71/16 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/extensions/ezdiff.c Current version: 2.13 revision 2.13 locked by: susan; date: 90/12/16 22:47:44; author: ajp; state: Exp; lines added/del: 5/5 type fixes Source file: atk/extensions/ezdiff.ch Current version: 2.7 Source file: atk/extensions/filter.c Current version: 2.7 revision 2.7 date: 90/12/16 22:47:50; author: ajp; state: Exp; lines added/del: 12/12 type fixes Source file: atk/extensions/isearch.c Current version: 2.9 revision 2.9 date: 90/12/18 13:46:51; author: ajp; state: Exp; lines added/del: 3/3 Changed default on using selection region from FALSE to TRUE. ---------------------------- revision 2.8 date: 90/12/17 13:02:29; author: ajp; state: Exp; lines added/del: 38/14 Put in code to keep it from actually doing the search again if you extend the search string if it already failed on a substring. ---------------------------- revision 2.7 date: 90/12/16 22:46:42; author: ajp; state: Exp; lines added/del: 28/5 Changes as noted in atk/ajpchg.16.0 Source file: atk/extensions/spell.c Current version: 2.11 revision 2.11 date: 90/12/16 22:47:55; author: ajp; state: Exp; lines added/del: 4/4 type fixes Source file: atk/extensions/tags.c Current version: 2.12 revision 2.12 date: 91/04/03 16:23:48; author: susan; state: Exp; lines added/del: 32/11 added SCO Unix support ---------------------------- revision 2.11 date: 90/12/16 22:48:02; author: ajp; state: Exp; lines added/del: 8/8 type fixes ---------------------------- revision 2.10 date: 90/11/28 14:31:34; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/extensions/metax.c Current version: 1.4 revision 1.4 date: 91/04/18 22:18:41; author: rr2b; state: Exp; lines added/del: 3/3 *** empty log message *** ---------------------------- revision 1.3 date: 90/11/28 14:31:26; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: atk/extensions/gsearch.c Current version: 1.5 revision 1.5 date: 91/05/25 22:15:46; author: bobg; state: Exp; lines added/del: 46/1 Make gsearch fail properly inside a playing macro. . ---------------------------- revision 1.4 date: 91/04/26 17:33:07; author: bobg; state: Exp; lines added/del: 667/277 *** empty log message *** Source file: atk/extensions/gsearch.help Current version: 1.2 revision 1.2 date: 91/04/29 16:14:41; author: bobg; state: Exp; lines added/del: 7/7 *** empty log message *** ---------------------------- revision 1.1 date: 91/04/28 00:11:48; author: bobg; state: Exp; Initial revision Source file: atk/ezprint/Imakefile Current version: 2.13 revision 2.13 date: 91/04/04 15:28:40; author: susan; state: Exp; lines added/del: 1/1 fixed InstallLink ---------------------------- revision 2.12 date: 91/04/02 16:55:51; author: susan; state: Exp; lines added/del: 2/1 added SCO Unix support Source file: atk/ezprint/ezprinta.c Current version: 2.18 revision 2.18 date: 90/12/14 15:07:32; author: ajp; state: Exp; lines added/del: 5/5 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/fad/Imakefile Current version: 2.12 revision 2.12 date: 91/04/04 15:29:27; author: susan; state: Exp; lines added/del: 1/1 fixed InstallLink ---------------------------- revision 2.11 date: 91/04/02 16:56:06; author: susan; state: Exp; lines added/del: 7/1 added SCO Unix support Source file: atk/fad/fadv.c Current version: 2.13 revision 2.13 date: 91/04/09 13:22:41; author: gk5g; state: Exp; lines added/del: 5/3 The SunOS4.1 compiler didn't like that the function dodoan() was declared as static int but defined as int. I changed the definition to static int. ---------------------------- revision 2.12 date: 91/04/04 17:18:04; author: tpn; state: Exp; lines added/del: 0/1 removed bogus comment. ---------------------------- revision 2.11 date: 91/04/04 17:14:00; author: tpn; state: Exp; lines added/del: 150/54 Fad will no longer hog the process while it is animateing. A pause keystroke has been added. Source file: atk/fad/fadv.ch Current version: 2.7 revision 2.7 date: 91/04/04 17:16:08; author: tpn; state: Exp; lines added/del: 6/3 Fad will no longer hog the process while it is animateing. A pause keystroke has been added. Source file: atk/frame/frame.c Current version: 2.24 revision 2.24 locked by: gk5g; date: 91/05/07 15:29:27; author: tpn; state: Exp; lines added/del: 19/31 No longer tries to draw the 3D style button on monochrome displays. It was too slow and no one cared for the way the patterns looked. . ---------------------------- revision 2.23 date: 91/04/30 21:13:54; author: tpn; state: Exp; lines added/del: 40/19 changed code that triggered bug in early hc compilers. Fixed lack of line above message line on color displays. . ---------------------------- revision 2.22 date: 91/04/29 21:06:30; author: tpn; state: Exp; lines added/del: 40/13 *** empty log message *** ---------------------------- revision 2.21 date: 91/04/24 16:19:03; author: gk5g; state: Exp; lines added/del: 0/0 Patch submitted by tpn: Addition of Motif buttons to message overlays. ---------------------------- revision 2.20 date: 91/04/02 21:13:07; author: gk5g; state: Exp; lines added/del: 23/3 SCO Unix patch. Added method frame_AskForPasswd(). ---------------------------- revision 2.19 date: 90/12/19 14:20:31; author: ajp; state: Exp; lines added/del: 17/4 Fix for setting the title when there is no file name associated with the buffer. ---------------------------- revision 2.18 date: 90/12/14 15:04:36; author: ajp; state: Exp; lines added/del: 68/40 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/frame/frame.ch Current version: 2.14 revision 2.14 date: 91/04/29 21:06:30; author: tpn; state: Exp; lines added/del: 8/7 *** empty log message *** ---------------------------- revision 2.13 date: 91/04/24 16:19:38; author: gk5g; state: Exp; lines added/del: 0/0 Patch submitted by tpn: Addition of Motif buttons to message overlays. ---------------------------- revision 2.12 date: 91/04/02 21:14:16; author: gk5g; state: Exp; lines added/del: 5/4 SCO Unix patch. Added method frame_AskForPasswd(). ---------------------------- revision 2.11 date: 90/12/14 15:04:28; author: ajp; state: Exp; lines added/del: 6/4 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/frame/framecmd.c Current version: 2.53 revision 2.53 date: 91/05/30 19:00:02; author: gk5g; state: Exp; lines added/del: 5/3 Only define PRINTER_SETUP_DIALOG_ENV if CONTRIB_ENV is defined. The popts inset is located in andrew/contrib/mit. . ---------------------------- revision 2.52 date: 91/05/23 15:53:43; author: susan; state: Exp; lines added/del: 4/13 backed out patch . ---------------------------- revision 2.51 date: 91/05/21 21:13:32; author: gk5g; state: Exp; lines added/del: 12/3 Patch submitted by Charles Hayden: I would like you to take the following modification to framecmd. It adds an argument to to New Window command, so that it prompts for a host name. This lets you do ^U^X2 and type a hostname, and to create a window on that host. If you do not type the ^U, then you get the normal behavior of ^X2. . ---------------------------- revision 2.50 date: 91/04/02 20:40:44; author: gk5g; state: Exp; lines added/del: 16/2 Defines proctable entries for the printer options window. Undefine PRINTER_SETUP_DIALOG_ENV if you don't want this to be the default. ---------------------------- revision 2.49 date: 91/02/12 17:19:16; author: gk5g; state: Exp; lines added/del: 8/11 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 2.48 date: 90/12/17 16:35:30; author: ajp; state: Exp; lines added/del: 6/5 Fixed bug in LocalReadFile in code that attempted to clear out the lastBuffer when it no longer exists ---------------------------- revision 2.47 date: 90/12/14 16:57:31; author: ajp; state: Exp; lines added/del: 1/2 Moved include of andrewos.h to first in list ---------------------------- revision 2.46 date: 90/12/14 15:05:01; author: ajp; state: Exp; lines added/del: 37/26 ==> Andy's Changes: See atk/ajpchg.16.0 <== ---------------------------- revision 2.45 date: 90/11/28 14:33:29; author: susan; state: Exp; lines added/del: 4/5 moved andrewos.h to be first include file Source file: atk/frame/framemsg.c Current version: 1.12 revision 1.12 date: 91/04/02 16:56:34; author: susan; state: Exp; lines added/del: 56/3 added SCO Unix support ---------------------------- revision 1.11 date: 90/12/14 15:05:30; author: ajp; state: Exp; lines added/del: 15/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/frame/framemsg.ch Current version: 1.9 revision 1.9 date: 91/04/02 16:56:26; author: susan; state: Exp; lines added/del: 4/3 added SCO Unix support Source file: atk/frame/helptxtv.c Current version: 2.5 revision 2.5 date: 91/04/24 16:18:00; author: gk5g; state: Exp; lines added/del: 0/0 Patch submitted by tpn: Rewrite of helptextview_getstartstring(). Source file: atk/help/src/Imakefile Current version: 2.24 revision 2.24 date: 91/04/04 15:30:29; author: susan; state: Exp; lines added/del: 1/1 fixed InstallLink ---------------------------- revision 2.23 date: 91/04/02 16:57:36; author: susan; state: Exp; lines added/del: 2/2 added SCO Unix support ---------------------------- revision 2.22 date: 91/02/11 14:52:11; author: gk5g; state: Exp; lines added/del: 1/3 Split help.c into two modules in an attempt to get by the "too many defines" cpp limitation on the RT. Just beautiful. ---------------------------- revision 2.21 date: 90/12/18 18:03:02; author: gk5g; state: Exp; lines added/del: 1/7 Don't link dynamic objects against libresolv.a anymore because those symbols are now in runapp. ---------------------------- revision 2.20 date: 90/11/26 14:36:54; author: gk5g; state: Exp; lines added/del: 3/2 Now install config.h using InstallFile() macro. Source file: atk/help/src/config.h Current version: 1.10 revision 1.10 date: 91/02/06 17:05:37; author: gk5g; state: Exp; lines added/del: 3/2 Added Quit via ^X^C keystrokes. Source file: atk/help/src/help.c Current version: 2.85 revision 2.85 date: 91/05/28 21:29:49; author: gk5g; state: Exp; lines added/del: 31/4 Added code to ShowFile() to chdir to the root of the man pages for this page. If the word "man" if an element in the full pathname of the file, we change to that element. If not "man" is found then the file is not in a man page collection so we change to the directory containing that file. . ---------------------------- revision 2.84 date: 91/05/20 18:07:20; author: gk5g; state: Exp; lines added/del: 4/4 Patch submitted by Charles Hayden: In the function ShowFile, the line isTroffFormat = (tc == '.' || tc == '#'); should be changed to isTroffFormat = (tc == '.' || tc == '#' || tc == '\''); This is because ' is equally valid as a command character as . in troff files, and many of our documents in fact do start out with that character. . ---------------------------- revision 2.83 date: 91/04/02 16:57:08; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix support ---------------------------- revision 2.82 date: 91/02/13 15:29:13; author: gk5g; state: Exp; lines added/del: 82/39 Now place all function declarations in the module that defines or externally references them. ---------------------------- revision 2.81 date: 91/02/12 14:32:02; author: gk5g; state: Exp; lines added/del: 5/95 too many defines ---------------------------- revision 2.80 date: 91/02/12 14:07:10; author: gk5g; state: Exp; lines added/del: 5/6 too many defines ---------------------------- revision 2.79 date: 91/02/12 13:51:09; author: gk5g; state: Exp; lines added/del: 2/3 too many defines ---------------------------- revision 2.78 date: 91/02/11 15:36:02; author: gk5g; state: Exp; lines added/del: 3/16 "too many defines" ---------------------------- revision 2.77 date: 91/02/11 14:53:17; author: gk5g; state: Exp; lines added/del: 352/949 Split help.c into two modules in an attempt to get by the "too many defines" cpp limitation on the RT. Just beautiful. ---------------------------- revision 2.76 date: 91/02/08 15:05:18; author: gk5g; state: Exp; lines added/del: 3/6 Removed unnecessary header files to get past "too many defines" error. ---------------------------- revision 2.75 date: 91/02/06 17:06:14; author: gk5g; state: Exp; lines added/del: 73/7 Added static Quit() function. When expanding the ProgramList, leave man page extensions. When creating expanded ProgramList, don't allow duplicate entries. Added FinalizeObject class procedure to destroy all help-related data/views. Source file: atk/help/src/help.ch Current version: 2.19 revision 2.19 date: 91/04/18 20:59:23; author: gk5g; state: Exp; lines added/del: 4/3 *** empty log message *** Source file: atk/help/src/help.h Current version: 1.40 revision 1.40 date: 91/02/13 15:28:11; author: gk5g; state: Exp; lines added/del: 2/64 Removed all function declaration. Now place them in the module that defines or externally references them. ---------------------------- revision 1.39 date: 91/02/12 17:22:14; author: gk5g; state: Exp; lines added/del: 2/3 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 1.38 date: 91/02/11 14:53:09; author: gk5g; state: Exp; lines added/del: 3/203 Split help.c into two modules in an attempt to get by the "too many defines" cpp limitation on the RT. Just beautiful. ---------------------------- revision 1.37 date: 91/02/06 17:07:16; author: gk5g; state: Exp; lines added/del: 7/2 Added "help-quit" proctable_Entry. Source file: atk/help/src/helpa.c Current version: 2.43 revision 2.43 date: 91/05/28 21:33:25; author: gk5g; state: Exp; lines added/del: 12/16 In helpapp_ParseArgs(), add contents of environment variable HELPPATH as search directories. Consolidated the code that handles the -s switch. Use AddPath(). . ---------------------------- revision 2.42 date: 91/05/09 18:44:51; author: susan; state: Exp; lines added/del: 14/33 backed out HELPPATH variable .ir ---------------------------- revision 2.41 date: 91/05/09 01:09:47; author: gk5g; state: Exp; lines added/del: 6/23 Removed new routine SetSearchDir() because there was alreadu a function to do that (AddPath). Now use AddPath to add the contents of environment variable HELPPATH to search set. . ---------------------------- revision 2.40 date: 91/05/08 21:21:12; author: susan; state: Exp; lines added/del: 7/7 fixed a few typos . ---------------------------- revision 2.39 date: 91/05/08 20:23:40; author: gk5g; state: Exp; lines added/del: 43/25 Added new routine SetSearchDir(), that takes a string that is a directory name and adds that dir to the set of dirs to search for help files. Also added support for the HELPPATH environment variable. ./ . ---------------------------- revision 2.38 date: 91/05/06 20:23:06; author: gk5g; state: Exp; lines added/del: 28/10 In helpapp_ParseArgs(), if the environment variable HELPPATH is defined, it is added to the list of search paths. . ---------------------------- revision 2.37 date: 91/04/18 21:00:38; author: gk5g; state: Exp; lines added/del: 8/9 *** empty log message *** ---------------------------- revision 2.36 date: 91/04/02 16:56:54; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix support ---------------------------- revision 2.35 date: 91/03/25 15:19:48; author: dba; state: Exp; lines added/del: 12/8 fixed send_pack for architectures (like the HP-PA) that insist that longs be 4-byte aligned ---------------------------- revision 2.34 date: 91/02/06 17:07:36; author: gk5g; state: Exp; lines added/del: 57/31 Replaced variables that were static to helpa.c with helpapp-class instance variables. Added helpapp__InitializeObject and helpapp__FinalizeObject class procedures to instantiate and destroy instance variables. ---------------------------- revision 2.33 date: 90/11/28 14:35:03; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/help/src/helpa.ch Current version: 2.9 revision 2.9 date: 91/02/06 17:08:01; author: gk5g; state: Exp; lines added/del: 9/3 Replaced variables that were static to helpa.c with helpapp-class instance variables. Added helpapp__InitializeObject and helpapp__FinalizeObject class procedures to instantiate and destroy instance variables. Source file: atk/help/src/helpdb.c Current version: 1.17 revision 1.17 date: 91/05/28 21:34:38; author: gk5g; state: Exp; lines added/del: 22/9 Made helpdb_AddSearchDir() more robust. Now remove all trailing slashes as well as all leading and trailing whitespace. This routine is called by help__AddSearchDir (which also validates that the directory actually exists.) . ---------------------------- revision 1.16 date: 91/05/21 19:24:39; author: gk5g; state: Exp; lines added/del: 3/11 Removed cpp directives that were unnecessary. . ---------------------------- revision 1.15 date: 91/04/03 16:24:08; author: susan; state: Exp; lines added/del: 11/4 added SCO Unix support ---------------------------- revision 1.14 date: 90/11/28 14:35:15; author: susan; state: Exp; lines added/del: 4/5 moved andrewos.h to be first include file Source file: atk/help/src/helpdb.ch Current version: 1.2 Source file: atk/help/src/helpaux.c Current version: 1.7 revision 1.7 date: 91/05/28 21:37:31; author: gk5g; state: Exp; lines added/del: 32/32 Changed AddSearchDir() to call help_AddSearchDir(). . ---------------------------- revision 1.6 date: 91/04/18 21:00:38; author: gk5g; state: Exp; lines added/del: 36/3 *** empty log message *** ---------------------------- revision 1.5 date: 91/02/13 15:30:05; author: gk5g; state: Exp; lines added/del: 16/31 Now place all function declarations in the module that defines or externally references them. ---------------------------- revision 1.4 date: 91/02/12 14:32:42; author: gk5g; state: Exp; lines added/del: 93/1 too many defines ---------------------------- revision 1.3 date: 91/02/12 13:51:46; author: gk5g; state: Exp; lines added/del: 2/1 too many defines ---------------------------- revision 1.2 date: 91/02/11 15:36:37; author: gk5g; state: Exp; lines added/del: 15/2 "too many defines" ---------------------------- revision 1.1 date: 91/02/11 14:53:49; author: gk5g; state: Exp; Initial revision Source file: atk/help/maint/mkindex.c Current version: 2.28 revision 2.28 date: 91/04/02 16:58:00; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix support ---------------------------- revision 2.27 date: 91/03/25 17:26:14; author: gk5g; state: Exp; lines added/del: 3/3 In the routine LowerCase(), there was a comparison between a character and NULL. ---------------------------- revision 2.26 date: 91/02/15 14:43:39; author: gk5g; state: Exp; lines added/del: 2/6 Put back code to remove numeric extensions when indexing. It's necessary to index based on the extension-less key so that you can say help sh instead of help sh.1. ---------------------------- revision 2.25 date: 91/02/15 02:11:55; author: gk5g; state: Exp; lines added/del: 3/3 Fixed a typo. ---------------------------- revision 2.24 date: 91/02/12 17:21:20; author: gk5g; state: Exp; lines added/del: 3/6 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 2.23 date: 91/02/06 15:51:57; author: gk5g; state: Exp; lines added/del: 7/6 Disabled code that removes the man page numeric extension when creating index entry. It was creating two index entries for each man page. Both of these subsequently were placed in the Programs List when expanded. There didn't seem to be any reason to remove the extension. It may, in fact, be useful to somebody. ---------------------------- revision 2.22 date: 90/11/28 14:34:10; author: susan; state: Exp; lines added/del: 4/5 moved andrewos.h to be first include file Source file: atk/hyplink/Developr.pro Current version: 1.2 revision 1.2 date: 90/12/03 11:23:39; author: mcinerny; state: Exp; lines added/del: 21/21 update to reflect new features. Source file: atk/hyplink/Help.pro Current version: 1.1 Source file: atk/hyplink/Imakefile Current version: 1.12 revision 1.12 date: 91/02/13 16:07:26; author: susan; state: Exp; lines added/del: 0/0 *** empty log message *** ---------------------------- revision 1.11 date: 90/12/06 16:21:06; author: mcinerny; state: Exp; lines added/del: 2/0 link against libutil.a Source file: atk/hyplink/Procs.pro Current version: 1.2 revision 1.2 date: 90/12/03 11:23:54; author: mcinerny; state: Exp; lines added/del: 5/27 update to reflect new features. Source file: atk/hyplink/link.c Current version: 1.13 revision 1.13 date: 91/03/29 16:19:33; author: mcinerny; state: Exp; lines added/del: 1/0 *** empty log message *** ---------------------------- revision 1.12 date: 91/03/28 09:32:08; author: mcinerny; state: Exp; lines added/del: 5/1 Pushbutton was "flashing", or updating too frequently. Now it does so less frequently. Still a few kinks though. Also added style #5, OSF/Motif. Looks a lot like 3-D, but the highlight function is different. ---------------------------- revision 1.11 date: 91/01/29 10:08:23; author: dba; state: Exp; lines added/del: 1/1 cleanup spooge ---------------------------- revision 1.10 date: 91/01/28 16:29:39; author: mcinerny; state: Exp; lines added/del: 10/2 Clean up unitialized variable, missing return code. ---------------------------- revision 1.9 date: 90/12/03 11:06:33; author: mcinerny; state: Exp; lines added/del: 139/70 Iron out datastream mess. There's a #define in pshbttn.ch, called PL8. This will cause the software to compile in such a was as to allow it to read the new datastream, but it won't write one (unless it read one in the first place). The color interface has been disabled. The proctable remains, but calling it will cause the new datastream to be used (which will screw up the link inset, BTW). Once this code becomes "widely available", turn off the PL8 switch, and recompile to get the new behavior and datastreams. ---------------------------- revision 1.8 date: 90/11/28 12:31:20; author: mcinerny; state: Exp; lines added/del: 1/1 changes "startup" text. Source file: atk/hyplink/link.ch Current version: 1.3 revision 1.3 date: 90/12/03 11:09:12; author: mcinerny; state: Exp; lines added/del: 3/3 Iron out datastream mess. There's a #define in pshbttn.ch, called PL8. This will cause the software to compile in such a was as to allow it to read the new datastream, but it won't write one (unless it read one in the first place). The color interface has been disabled. The proctable remains, but calling it will cause the new datastream to be used (which will screw up the link inset, BTW). Once this code becomes "widely available", turn off the PL8 switch, and recompile to get the new behavior and datastreams. Source file: atk/hyplink/pshbttn.ch Current version: 1.12 revision 1.12 date: 91/04/29 13:21:34; author: mcinerny; state: Exp; lines added/del: 6/6 *** empty log message *** ---------------------------- revision 1.11 date: 91/03/28 09:33:23; author: mcinerny; state: Exp; lines added/del: 1/0 Pushbutton was "flashing", or updating too frequently. Now it does so less frequently. Still a few kinks though. Also added style #5, OSF/Motif. Looks a lot like 3-D, but the highlight function is different. ---------------------------- revision 1.10 date: 91/02/18 14:42:14; author: mcinerny; state: Exp; lines added/del: 1/1 Enable color stuff. ---------------------------- revision 1.9 date: 91/01/30 12:19:30; author: dba; state: Exp; lines added/del: 2/0 Added PLAINBOX style used by dir browser ---------------------------- revision 1.8 date: 90/12/03 11:09:31; author: mcinerny; state: Exp; lines added/del: 33/0 Iron out datastream mess. There's a #define in pshbttn.ch, called PL8. This will cause the software to compile in such a was as to allow it to read the new datastream, but it won't write one (unless it read one in the first place). The color interface has been disabled. The proctable remains, but calling it will cause the new datastream to be used (which will screw up the link inset, BTW). Once this code becomes "widely available", turn off the PL8 switch, and recompile to get the new behavior and datastreams. ---------------------------- revision 1.7 date: 90/11/30 10:48:51; author: mcinerny; state: Exp; lines added/del: 26/19 Added a user interface to setting the label, look, font, and color. Required changes to datastream too, hence new DS version "2". Also supports true "gray"scale on displays capable of it, for three-d style. rounded rect style works better, but I'd still stay away from it, as it still freaks out X occaisionally (wanna see X grow to 10 megs?) ---------------------------- revision 1.6 date: 90/11/28 10:22:53; author: mcinerny; state: Exp; lines added/del: 15/0 document styles Source file: atk/hyplink/linkv.c Current version: 1.15 revision 1.15 date: 91/03/28 09:33:30; author: mcinerny; state: Exp; lines added/del: 0/80 Pushbutton was "flashing", or updating too frequently. Now it does so less frequently. Still a few kinks though. Also added style #5, OSF/Motif. Looks a lot like 3-D, but the highlight function is different. ---------------------------- revision 1.14 date: 90/12/03 11:09:16; author: mcinerny; state: Exp; lines added/del: 45/39 Iron out datastream mess. There's a #define in pshbttn.ch, called PL8. This will cause the software to compile in such a was as to allow it to read the new datastream, but it won't write one (unless it read one in the first place). The color interface has been disabled. The proctable remains, but calling it will cause the new datastream to be used (which will screw up the link inset, BTW). Once this code becomes "widely available", turn off the PL8 switch, and recompile to get the new behavior and datastreams. ---------------------------- revision 1.13 date: 90/11/28 14:58:11; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file. ---------------------------- revision 1.12 date: 90/11/28 10:32:15; author: mcinerny; state: Exp; lines added/del: 1/2 Put the focus fix in a better place (and keep the compiler happy). ---------------------------- revision 1.11 date: 90/11/28 10:23:32; author: mcinerny; state: Exp; lines added/del: 1/0 give focus to target view of the new frame, not the frame itself. Source file: atk/hyplink/linkins.pro Current version: 1.2 revision 1.2 date: 90/12/03 11:27:07; author: mcinerny; state: Exp; lines added/del: 11/12 More changes--reflect subclass-ness of link to pushbutton. Source file: atk/hyplink/pshbttn.c Current version: 1.12 revision 1.12 date: 91/05/02 12:31:02; author: mcinerny; state: Exp; lines added/del: 8/4 Pushbutton Dobj now has a trigger too (same name: "buttonpushed"), pulled bye view. . ---------------------------- revision 1.11 date: 91/04/27 19:12:57; author: rr2b; state: Exp; lines added/del: 2/0 *** empty log message *** ---------------------------- revision 1.10 date: 91/03/28 09:33:36; author: mcinerny; state: Exp; lines added/del: 1/1 Pushbutton was "flashing", or updating too frequently. Now it does so less frequently. Still a few kinks though. Also added style #5, OSF/Motif. Looks a lot like 3-D, but the highlight function is different. ---------------------------- revision 1.9 date: 91/02/18 14:42:48; author: mcinerny; state: Exp; lines added/del: 6/4 DON'T EVER FREE FONTS! NEVER, EVER, EVER, EVER! ---------------------------- revision 1.8 date: 90/12/03 11:09:24; author: mcinerny; state: Exp; lines added/del: 67/19 Iron out datastream mess. There's a #define in pshbttn.ch, called PL8. This will cause the software to compile in such a was as to allow it to read the new datastream, but it won't write one (unless it read one in the first place). The color interface has been disabled. The proctable remains, but calling it will cause the new datastream to be used (which will screw up the link inset, BTW). Once this code becomes "widely available", turn off the PL8 switch, and recompile to get the new behavior and datastreams. ---------------------------- revision 1.7 date: 90/11/30 10:46:47; author: mcinerny; state: Exp; lines added/del: 233/8 Added a user interface to setting the label, look, font, and color. Required changes to datastream too, hence new DS version "2". Also supports true "gray"scale on displays capable of it, for three-d style. rounded rect style works better, but I'd still stay away from it, as it still freaks out X occaisionally (wanna see X grow to 10 megs?) Source file: atk/hyplink/pshbttnv.c Current version: 1.18 revision 1.18 date: 91/05/02 12:31:02; author: mcinerny; state: Exp; lines added/del: 1/0 Pushbutton Dobj now has a trigger too (same name: "buttonpushed"), pulled bye view. . ---------------------------- revision 1.17 date: 91/04/29 13:21:34; author: mcinerny; state: Exp; lines added/del: 39/43 *** empty log message *** ---------------------------- revision 1.16 date: 91/03/28 09:33:43; author: mcinerny; state: Exp; lines added/del: 351/121 Pushbutton was "flashing", or updating too frequently. Now it does so less frequently. Still a few kinks though. Also added style #5, OSF/Motif. Looks a lot like 3-D, but the highlight function is different. ---------------------------- revision 1.15 date: 91/01/30 12:20:01; author: dba; state: Exp; lines added/del: 70/32 Added PLAINBOX style used by dir browser and restored code that draws the 3-d buttons under WM. ---------------------------- revision 1.14 date: 90/12/20 17:05:07; author: mcinerny; state: Exp; lines added/del: 17/14 Fix a fatal bug tickled by wpedit (check for valid im before doing color calls). ---------------------------- revision 1.13 date: 90/12/03 11:09:36; author: mcinerny; state: Exp; lines added/del: 17/10 Iron out datastream mess. There's a #define in pshbttn.ch, called PL8. This will cause the software to compile in such a was as to allow it to read the new datastream, but it won't write one (unless it read one in the first place). The color interface has been disabled. The proctable remains, but calling it will cause the new datastream to be used (which will screw up the link inset, BTW). Once this code becomes "widely available", turn off the PL8 switch, and recompile to get the new behavior and datastreams. ---------------------------- revision 1.12 date: 90/11/30 10:49:36; author: mcinerny; state: Exp; lines added/del: 294/28 Added a user interface to setting the label, look, font, and color. Required changes to datastream too, hence new DS version "2". Also supports true "gray"scale on displays capable of it, for three-d style. rounded rect style works better, but I'd still stay away from it, as it still freaks out X occaisionally (wanna see X grow to 10 megs?) Source file: atk/hyplink/pshbttn.help Current version: 1.2 revision 1.2 date: 90/12/03 11:17:46; author: mcinerny; state: Exp; lines added/del: 23/6 Talk about new features. Note that color is documented, even though it won't be available with patch level 8. Source file: atk/hyplink/pshbttnv.ch Current version: 1.7 revision 1.7 date: 91/03/28 09:34:21; author: mcinerny; state: Exp; lines added/del: 5/0 Pushbutton was "flashing", or updating too frequently. Now it does so less frequently. Still a few kinks though. Also added style #5, OSF/Motif. Looks a lot like 3-D, but the highlight function is different. ---------------------------- revision 1.6 date: 90/11/30 10:49:43; author: mcinerny; state: Exp; lines added/del: 18/13 Added a user interface to setting the label, look, font, and color. Required changes to datastream too, hence new DS version "2". Also supports true "gray"scale on displays capable of it, for three-d style. rounded rect style works better, but I'd still stay away from it, as it still freaks out X occaisionally (wanna see X grow to 10 megs?) ---------------------------- revision 1.5 date: 90/11/28 10:23:10; author: mcinerny; state: Exp; lines added/del: 7/0 document trigger Source file: atk/layout/box.c Current version: 1.3 revision 1.3 date: 91/01/10 13:09:56; author: gk5g; state: Exp; lines added/del: 5/3 Don't declare extern char *malloc() when on RS/6000. ---------------------------- revision 1.2 date: 90/12/13 11:07:18; author: jhh; state: Exp; lines added/del: 16/7 Correct bugs parsing enddata statement when reading data stream. Source file: atk/layout/boxview.c Current version: 1.2 revision 1.2 date: 91/01/10 13:10:01; author: gk5g; state: Exp; lines added/del: 5/3 Don't declare extern char *malloc() when on RS/6000. Source file: atk/layout/fillerv.c Current version: 1.3 revision 1.3 date: 91/01/10 13:10:09; author: gk5g; state: Exp; lines added/del: 5/3 Don't declare extern char *malloc() when on RS/6000. Source file: atk/layout/layout.c Current version: 1.5 revision 1.5 date: 91/01/10 13:09:17; author: gk5g; state: Exp; lines added/del: 5/3 Don't declare extern char *malloc() when on RS/6000. ---------------------------- revision 1.4 date: 90/12/13 11:06:44; author: jhh; state: Exp; lines added/del: 15/6 Correct bugs parsing enddata statement when reading data stream. ---------------------------- revision 1.3 date: 90/11/28 14:35:51; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/layout/layoutv.c Current version: 1.5 revision 1.5 date: 91/01/10 13:10:13; author: gk5g; state: Exp; lines added/del: 5/3 Don't declare extern char *malloc() when on RS/6000. Source file: atk/lookz/Imakefile Current version: 2.10 revision 2.10 date: 90/12/14 15:07:55; author: ajp; state: Exp; lines added/del: 2/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/lookz/lookz.help Current version: 1.2 revision 1.2 date: 90/12/14 15:08:10; author: ajp; state: Exp; lines added/del: 58/6 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/lookz/lookz.c Current version: 2.9 revision 2.9 date: 91/02/25 18:27:29; author: gk5g; state: Exp; lines added/del: 4/7 Removed some debugging output statements. ---------------------------- revision 2.8 date: 91/02/25 17:44:11; author: gk5g; state: Exp; lines added/del: 10/3 In lookz_FinalizeObject, check to see if we are still observing self->text. If we are, then we must remove ourself from the observer-list for that text object or else it'll try to call a ObservedChanged method on a possibly destroyed observer. ---------------------------- revision 2.7 date: 90/12/15 15:23:39; author: ajp; state: Exp; lines added/del: 47/4 Changs as given in file atk/ajpchg.16.0 Source file: atk/lookz/lookz.ch Current version: 2.7 revision 2.7 date: 90/12/14 15:08:04; author: ajp; state: Exp; lines added/del: 13/4 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/lookz/tabrulv.ch Current version: 1.1 revision 1.1 date: 90/12/14 14:57:10; author: ajp; state: Exp; Initial revision Source file: atk/lookz/lookzv.c Current version: 2.20 revision 2.20 date: 91/02/25 18:15:28; author: gk5g; state: Exp; lines added/del: 3/2 In EditStylesInWindow, made call to buffer_SetDestroyData(buffer, TRUE) so that the lookz dataobject is destroyed when the user destroys the associated buffer. ---------------------------- revision 2.19 date: 91/01/23 19:54:41; author: gk5g; state: Exp; lines added/del: 5/6 This module includes alot of header files. So many that it causes a "Too many defines" error from the cpp. We really don't need to include textv.ih-- it's only used in EditStylesInWindow, and we can just treat it as a view because we just need to get at it's dataobj. Removed #include . ---------------------------- revision 2.18 date: 90/12/19 16:24:47; author: ajp; state: Exp; lines added/del: 121/67 Added mechanism for typing in values Added better support for setting colors Slight redesign of layout. ---------------------------- revision 2.17 date: 90/12/14 15:08:25; author: ajp; state: Exp; lines added/del: 512/99 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/lookz/lookzv.ch Current version: 2.7 revision 2.7 date: 90/12/19 16:24:01; author: ajp; state: Exp; lines added/del: 4/4 Added mechanism for typing in values Added better support for setting colors Slight redesign of layout. ---------------------------- revision 2.6 date: 90/12/14 15:08:17; author: ajp; state: Exp; lines added/del: 14/5 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/lookz/tabrulv.c Current version: 1.1 revision 1.1 date: 90/12/14 14:57:14; author: ajp; state: Exp; Initial revision Source file: atk/lset/cel.c Current version: 2.15 revision 2.15 date: 91/04/10 18:15:39; author: gk5g; state: Exp; lines added/del: 6/6 #included more than once. ---------------------------- revision 2.14 date: 91/04/03 11:19:10; author: tpn; state: Exp; lines added/del: 141/6 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/Imakefile Current version: 2.27 revision 2.27 date: 91/04/25 19:47:54; author: tpn; state: Exp; lines added/del: 14/0 *** empty log message *** ---------------------------- revision 2.26 date: 91/04/03 11:20:10; author: tpn; state: Exp; lines added/del: 2/0 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. ---------------------------- revision 2.25 date: 91/04/02 17:31:33; author: gk5g; state: Exp; lines added/del: 9/1 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. ---------------------------- revision 2.24 date: 91/01/04 16:54:19; author: susan; state: Exp; lines added/del: 7/1 added RESOLVLIB to createcon program target Source file: atk/lset/arb Current version: 2.3 revision 2.3 date: 91/04/03 11:20:14; author: tpn; state: Exp; lines added/del: 1/1 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/arbcon.c Current version: 2.37 revision 2.37 date: 91/04/25 19:42:03; author: tpn; state: Exp; lines added/del: 5/200 *** empty log message *** ---------------------------- revision 2.36 date: 91/04/15 14:36:23; author: tpn; state: Exp; lines added/del: 68/25 Some patches to allow the arbiter to work on several displays concurently. Source file: atk/lset/arbiter.c Current version: 2.4 revision 2.4 date: 91/04/03 11:19:42; author: tpn; state: Exp; lines added/del: 116/3 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/arbiter.ch Current version: 2.5 revision 2.5 date: 91/04/03 11:19:46; author: tpn; state: Exp; lines added/del: 20/3 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/arbiterv.c Current version: 2.19 revision 2.19 date: 91/04/25 19:42:03; author: tpn; state: Exp; lines added/del: 5/5 *** empty log message *** ---------------------------- revision 2.18 date: 91/04/03 11:18:40; author: tpn; state: Exp; lines added/del: 24/9 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/arbiterv.ch Current version: 2.8 Source file: atk/lset/cel.ch Current version: 2.11 revision 2.11 date: 91/04/03 11:19:16; author: tpn; state: Exp; lines added/del: 21/2 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/celv.c Current version: 2.26 revision 2.26 date: 91/04/25 19:42:03; author: tpn; state: Exp; lines added/del: 10/10 *** empty log message *** ---------------------------- revision 2.25 date: 91/04/03 11:19:19; author: tpn; state: Exp; lines added/del: 40/20 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/celv.ch Current version: 2.11 revision 2.11 date: 91/04/03 11:19:32; author: tpn; state: Exp; lines added/del: 6/3 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/lsetv.c Current version: 2.11 revision 2.11 date: 91/04/25 19:42:03; author: tpn; state: Exp; lines added/del: 5/5 *** empty log message *** Source file: atk/lset/mkcon.c Current version: 2.19 revision 2.19 date: 91/04/03 11:19:59; author: tpn; state: Exp; lines added/del: 9/3 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. ---------------------------- revision 2.18 date: 91/04/01 11:10:42; author: tpn; state: Exp; lines added/del: 252/37 New version to support createing of true insets. ---------------------------- revision 2.17 date: 90/11/28 14:36:27; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/lset/runadewa.c Current version: 1.4 revision 1.4 date: 91/04/03 11:19:35; author: tpn; state: Exp; lines added/del: 32/5 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/runadewa.ch Current version: 1.2 revision 1.2 date: 91/04/03 11:19:40; author: tpn; state: Exp; lines added/del: 4/3 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. Source file: atk/lset/instpros.awk Current version: 1.2 revision 1.2 date: 91/04/03 11:19:53; author: tpn; state: Exp; lines added/del: 4/3 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. ---------------------------- revision 1.1 date: 91/04/01 10:54:04; author: tpn; state: Exp; Initial revision Source file: atk/lset/adew.h Current version: 1.2 revision 1.2 date: 91/04/03 11:19:49; author: tpn; state: Exp; lines added/del: 11/11 Numerous changes to implement the new version of Adew that supports the interactive creation of insets, the automatic saving and restoring of user defined data, and other features. ---------------------------- revision 1.1 date: 91/04/01 10:56:32; author: tpn; state: Exp; Initial revision Source file: atk/music/play.c Current version: 1.8 revision 1.8 date: 91/05/21 14:06:42; author: wjh; state: Exp; lines added/del: 20/20 fixed to work under IBM032_ENV instead of just sys_rt_r3 . Source file: atk/ness/tokens/Imakefile Current version: 1.15 revision 1.15 date: 91/04/02 17:39:31; author: gk5g; state: Exp; lines added/del: 9/2 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. ---------------------------- revision 1.14 date: 91/01/02 18:16:14; author: gk5g; state: Exp; lines added/del: 7/0 We must link the test programs against the resolver library on the Sun. Source file: atk/ness/tokens/toksym.c Current version: 1.6 Source file: atk/ness/tokens/toksym.ch Current version: 1.7 revision 1.7 date: 91/01/14 17:23:26; author: wjh; state: Exp; lines added/del: 10/2 added a routine to extract the symbol value from the original text Source file: atk/ness/tokens/qsearch.c Current version: 1.2 revision 1.2 date: 90/11/28 14:39:46; author: susan; state: Exp; lines added/del: 8/5 moved andrewos.h to be first include file Source file: atk/ness/type/Imakefile Current version: 1.12 revision 1.12 date: 91/04/02 17:41:39; author: gk5g; state: Exp; lines added/del: 10/3 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. ---------------------------- revision 1.11 date: 91/01/02 18:14:12; author: gk5g; state: Exp; lines added/del: 7/0 We must link the test programs against the resolver library on the Sun. Source file: atk/ness/objects/Imakefile Current version: 1.37 revision 1.37 date: 91/02/15 17:31:36; author: gk5g; state: Exp; lines added/del: 12/0 Code submitted by Guy Harris in support of SunOS4.1 ---------------------------- revision 1.36 date: 90/12/04 14:58:04; author: wjh; state: Exp; lines added/del: 1/1 fixed so it doesn't remake nesscomp every time a make is done ---------------------------- revision 1.35 date: 90/11/26 15:10:36; author: gk5g; state: Exp; lines added/del: 1/1 The arguments to the CleanTarget() rule incorrectly included the file nevent.hn. That should be nevent.h. Source file: atk/ness/objects/call.c Current version: 1.41 revision 1.41 date: 91/04/01 11:36:17; author: wjh; state: Exp; lines added/del: 3/3 corrected to return a value from ReadTextFileStream ---------------------------- revision 1.40 date: 91/02/16 10:54:28; author: wjh; state: Exp; lines added/del: 5/5 fix bug in handling forward function calls. Before this fix, the argument types were checked in the wrong order so an error was generated for correct code. ---------------------------- revision 1.39 date: 90/11/28 14:38:04; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/ness/objects/dump.c Current version: 1.13 revision 1.13 date: 91/01/14 17:22:13; author: wjh; state: Exp; lines added/del: 13/5 updated for changes to styles This fixes the problem that 'extend' did not work. The problem was that short strings were treated as having styles. Also added line spacing, tabs, and color to MergeStyles and fixed AddStyles to not put on styles that are already shared (by pointer) between target and source. Source file: atk/ness/objects/envt.h Current version: 1.9 revision 1.9 date: 91/05/21 17:47:25; author: gk5g; state: Exp; lines added/del: 7/4 Removed reference to hpux in cpp declarations surrounding CLASS macro. HPUX isn't completely ANSI yet. . ---------------------------- revision 1.8 date: 91/02/21 10:19:16; author: wjh; state: Exp; lines added/del: 8/2 adapted for ANSI-C. Thanks to Bill Cattey. Source file: atk/ness/objects/gen.c Current version: 1.21 revision 1.21 date: 90/11/28 14:38:29; author: susan; state: Exp; lines added/del: 11/4 moved andrewos.h to be first include file Source file: atk/ness/objects/interp.c Current version: 1.35 revision 1.35 date: 91/02/21 10:47:02; author: wjh; state: Exp; lines added/del: 9/3 extend error check in readfile so it does not try to read file if the name is an empty string ---------------------------- revision 1.34 date: 91/02/08 14:34:57; author: wjh; state: Exp; lines added/del: 34/23 readfile and writefile will no longer signal a runtime error if they cannot access the given file. Instead they send a message to stderr which shows up in the console. For an errroneous file, readfile and writefile return an empty strings. The control-G will no longer be treated as a runtime error. Instead it will calmly terminate Ness execution and display the message "Interrupted !" ---------------------------- revision 1.33 date: 90/12/11 17:05:23; author: wjh; state: Exp; lines added/del: 6/2 fix so stack pointer is correctly set after calling a C function Source file: atk/ness/objects/ness.c Current version: 1.31 revision 1.31 date: 90/11/28 14:38:48; author: susan; state: Exp; lines added/del: 12/4 moved andrewos.h to be first include file Source file: atk/ness/objects/nesscomp.gra Current version: 1.14 revision 1.14 date: 91/02/08 14:31:50; author: wjh; state: Exp; lines added/del: 2/5 The same object or view may now be the subject of more than one "extend" block in a Ness script. Source file: atk/ness/objects/nevent.c Current version: 1.26 revision 1.26 date: 91/02/08 14:33:29; author: wjh; state: Exp; lines added/del: 12/7 The same object or view may now be the subject of more than one "extend" block in a Ness script. The first character of menu strings and key sequences is no longer omitted. ---------------------------- revision 1.25 date: 91/01/14 17:22:22; author: wjh; state: Exp; lines added/del: 29/17 updated for changes to styles This fixes the problem that 'extend' did not work. The problem was that short strings were treated as having styles. Also added line spacing, tabs, and color to MergeStyles and fixed AddStyles to not put on styles that are already shared (by pointer) between target and source. Source file: atk/ness/objects/search.c Current version: 1.26 revision 1.26 date: 91/02/08 14:37:53; author: wjh; state: Exp; lines added/del: 31/14 clearstyles now does an additional step when clearing the styles from an entire text: it deletes all style definitions which have been added and are not part of a template. The effect is that writefile of text that has been processed with clearstyles will not have ATK formatting. ---------------------------- revision 1.25 date: 91/01/31 22:22:25; author: wjh; state: Exp; lines added/del: 11/3 fixed a bug in addstyles wherein if the pattern had multiple styles the innermost was applied as many times as the depth and others were not applied at all ---------------------------- revision 1.24 date: 91/01/14 17:19:18; author: wjh; state: Exp; lines added/del: 59/9 updated for changes to styles This fixes the problem that 'extend' did not work. The problem was that short strings were treated as having styles. Also added line spacing, tabs, and color to MergeStyles and fixed AddStyles to not put on styles that are already shared (by pointer) between target and source. ---------------------------- revision 1.23 date: 90/12/04 14:58:37; author: wjh; state: Exp; lines added/del: 9/4 corrected search() to check for empty pattern argument ---------------------------- revision 1.22 date: 90/11/30 15:42:01; author: wjh; state: Exp; lines added/del: 13/9 fixed a bug that caused crash in search.c on pmaxen ---------------------------- revision 1.21 date: 90/11/28 15:23:54; author: wjh; state: Exp; lines added/del: 11/3 fixed a bug in the search() function which was crashing it during present.n Source file: atk/ness/objects/nesscomp.c Current version: 1.2 revision 1.2 date: 91/02/08 14:33:17; author: wjh; state: Exp; lines added/del: 90/93 The same object or view may now be the subject of more than one "extend" block in a Ness script. Source file: atk/ness/nesslib/Imakefile Current version: 1.16 revision 1.16 date: 91/02/28 10:36:38; author: wjh; state: Exp; lines added/del: 1/1 gnu-emacs style character transpose ---------------------------- revision 1.15 date: 91/02/14 08:54:46; author: wjh; state: Exp; lines added/del: 1/1 added fromrtf.n, a translator from rtf to ATK ---------------------------- revision 1.14 date: 91/01/28 11:29:12; author: wjh; state: Exp; lines added/del: 1/1 added fileconvert.n octalimage.n; reordered list Source file: atk/ness/nesslib/format.n Current version: 1.4 revision 1.4 date: 90/12/18 16:58:41; author: wjh; state: Exp; lines added/del: 5/4 fixed format_wrap() to avoid going into a loop when the selection ends with a newline Source file: atk/ness/nesslib/tokens.n Current version: 1.6 revision 1.6 date: 90/12/04 14:57:21; author: wjh; state: Exp; lines added/del: 3/1 corrected it to return the empty string at the end of the tokenized text Source file: atk/ness/nesslib/unscribe.n Current version: 1.2 revision 1.2 date: 90/12/18 10:26:32; author: wjh; state: Exp; lines added/del: 88/100 updated for newness Source file: atk/ness/nesslib/fromrtf.n Current version: 1.7 revision 1.7 date: 91/05/02 14:19:09; author: wjh; state: Exp; lines added/del: 23/20 fixed to handle empty headers and footers taught it to believe that \nextcset means \ansi ---------------------------- revision 1.6 date: 91/03/06 14:35:28; author: wjh; state: Exp; lines added/del: 38/21 added verious character translations: ellipses, left brace center fixed \\ added \cell and \row as tab and newline defined \bullet \emdash \endash \lquote \rquote \ldblquote \rdblquote ---------------------------- revision 1.5 date: 91/02/25 14:11:10; author: wjh; state: Exp; lines added/del: 25/6 reformatted the symbols shown for SymbolA and Symbol fonts ---------------------------- revision 1.4 date: 91/02/25 13:19:06; author: wjh; state: Exp; lines added/del: 28/23 added a few symbol mappings for \mac ---------------------------- revision 1.3 date: 91/02/19 09:42:39; author: wjh; state: Exp; lines added/del: 4/1 print version number at runtime. synch version number with RCS revision number ---------------------------- revision 1.2 date: 91/02/19 09:33:48; author: wjh; state: Exp; lines added/del: 156/56 bug fixes, especially to indentation and \* deal with an additional fonttbl format ---------------------------- revision 1.1 date: 91/02/14 08:55:12; author: wjh; state: Exp; Initial revision Source file: atk/ness/nesslib/fileconvert.n Current version: 1.1 revision 1.1 date: 91/01/28 11:28:49; author: wjh; state: Exp; Initial revision Source file: atk/ness/nesslib/octalimage.n Current version: 1.1 revision 1.1 date: 91/01/28 11:29:50; author: wjh; state: Exp; Initial revision Source file: atk/ness/nesslib/gnutranspose.n Current version: 1.1 revision 1.1 date: 91/02/28 10:37:00; author: wjh; state: Exp; Initial revision Source file: atk/ness/demos/Imakefile Current version: 1.14 revision 1.14 date: 91/03/20 20:16:09; author: wjh; state: Exp; lines added/del: 1/1 added happybday.n Source file: atk/ness/doc/nessfunc.d Current version: 1.11 revision 1.11 date: 91/02/08 14:39:33; author: wjh; state: Exp; lines added/del: 18/13 changed definitions of readfile and writefile ---------------------------- revision 1.10 date: 91/01/28 11:40:18; author: wjh; state: Exp; lines added/del: 41/18 added documentation for fileconvert.n, ctype.n, and octalimage.n ---------------------------- revision 1.9 date: 90/12/04 14:56:07; author: wjh; state: Exp; lines added/del: 50/38 Improved the general description of the search commands. Source file: atk/raster/cmd/rasterv.c Current version: 2.26 revision 2.26 date: 90/11/28 14:42:23; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/raster/cmd/rastvaux.c Current version: 1.2 revision 1.2 date: 90/11/28 14:42:48; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file Source file: atk/raster/convert/Imakefile Current version: 2.11 revision 2.11 date: 91/04/03 16:24:37; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support ---------------------------- revision 2.10 date: 91/04/02 20:58:35; author: gk5g; state: Exp; lines added/del: 9/1 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. ---------------------------- revision 2.9 date: 91/01/04 12:06:06; author: gk5g; state: Exp; lines added/del: 14/1 Link convertraster against libresolv.a because it's a program that links against libclass.a and libclass.a has undefined resolver symbols. This is because the resolver is now in runapp. Source file: atk/raster/convert/convras.help Current version: 1.4 revision 1.4 date: 91/01/22 12:56:14; author: gk5g; state: Exp; lines added/del: 17/12 Patch submitted by Bill Cattey. Source file: atk/raster/lib/Imakefile Current version: 2.8 revision 2.8 date: 91/04/03 16:24:49; author: susan; state: Exp; lines added/del: 1/0 added SCO Unix support Source file: atk/raster/lib/xwdio.c Current version: 1.6 revision 1.6 date: 91/02/12 15:18:50; author: gk5g; state: Exp; lines added/del: 29/33 Up-to-date with MIT. Missed a rev somehow. ---------------------------- revision 1.5 date: 91/01/14 18:05:13; author: gk5g; state: Exp; lines added/del: 3/3 Patch submitted by Bill Cattey: There are some conversion utilities that do not pad X bitmaps and window dumps out to 16 bit short words. This patch handles that case correctly. ---------------------------- revision 1.4 date: 90/11/28 14:41:04; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file Source file: atk/raster/lib/xwdio.ch Current version: 1.2 revision 1.2 date: 91/02/12 15:19:27; author: gk5g; state: Exp; lines added/del: 24/25 Up-to-date with MIT. Missed a rev somehow. Source file: atk/raster/lib/xbm.c Current version: 1.5 revision 1.5 date: 91/02/12 17:23:47; author: gk5g; state: Exp; lines added/del: 2/4 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 1.4 date: 91/01/14 17:29:08; author: gk5g; state: Exp; lines added/del: 1/3 Patch submitted by Bill Cattey: Changed comment for pixelimage_create(). ---------------------------- revision 1.3 date: 90/11/28 14:40:54; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file Source file: atk/rofftext/rofftext.c Current version: 2.20 revision 2.20 date: 91/05/06 19:01:32; author: rr2b; state: Exp; lines added/del: 18/4 added ifefs for TROFF_TAGS_ENV. Hayden's tag code will only be used if this is defined. . ---------------------------- revision 2.19 date: 91/04/03 16:25:03; author: susan; state: Exp; lines added/del: 14/3 added SCO Unix support ---------------------------- revision 2.18 date: 91/02/11 12:06:39; author: susan; state: Exp; lines added/del: 6/6 changed scale_m to (int)scale_m since Sun Compiler barfed ---------------------------- revision 2.17 date: 91/02/05 17:43:07; author: gk5g; state: Exp; lines added/del: 383/178 Changes made by Charles Hayden to support additional troff macros. Also included is an extensively-modified mm macro package that eliminates a lot of the garbage that mm goes through for no useful purpose, and which just generates extraneous stuff anyway. This package handles footnotes and references by turning them into Andrew footnotes; tables by turning them into spreadsheets; and tags and PIC by turning them into links. It has an experimental hypertext button macro, .BU. Headings (using the .H macro) are marked so that they show up in the Table of Contents. Several bugs in original rofftext are fixed, but otherwise it is upwardly compatible. Two new classes: mmtext and mantext. These are subclasses of rofftext and enable direct viewing of Man pages and manuscript-macro (mm) troff files. Source file: atk/rofftext/Imakefile Current version: 2.16 revision 2.16 date: 91/04/04 15:32:11; author: susan; state: Exp; lines added/del: 1/1 fixed InstalllLink ---------------------------- revision 2.15 date: 91/04/03 16:25:21; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support ---------------------------- revision 2.14 date: 91/02/05 18:44:44; author: gk5g; state: Exp; lines added/del: 0/1 Removed references to tmac.an. ---------------------------- revision 2.13 date: 91/02/05 17:39:17; author: gk5g; state: Exp; lines added/del: 7/3 Changes made by Charles Hayden to support additional troff macros. Also included is an extensively-modified mm macro package that eliminates a lot of the garbage that mm goes through for no useful purpose, and which just generates extraneous stuff anyway. This package handles footnotes and references by turning them into Andrew footnotes; tables by turning them into spreadsheets; and tags and PIC by turning them into links. It has an experimental hypertext button macro, .BU. Headings (using the .H macro) are marked so that they show up in the Table of Contents. Several bugs in original rofftext are fixed, but otherwise it is upwardly compatible. Two new classes: mmtext and mantext. These are subclasses of rofftext and enable direct viewing of Man pages and manuscript-macro (mm) troff files. Source file: atk/rofftext/roffcmds.c Current version: 2.10 revision 2.10 date: 91/05/06 19:01:32; author: rr2b; state: Exp; lines added/del: 6/5 added ifefs for TROFF_TAGS_ENV. Hayden's tag code will only be used if this is defined. . ---------------------------- revision 2.9 date: 91/02/05 17:42:45; author: gk5g; state: Exp; lines added/del: 588/77 Changes made by Charles Hayden to support additional troff macros. Also included is an extensively-modified mm macro package that eliminates a lot of the garbage that mm goes through for no useful purpose, and which just generates extraneous stuff anyway. This package handles footnotes and references by turning them into Andrew footnotes; tables by turning them into spreadsheets; and tags and PIC by turning them into links. It has an experimental hypertext button macro, .BU. Headings (using the .H macro) are marked so that they show up in the Table of Contents. Several bugs in original rofftext are fixed, but otherwise it is upwardly compatible. Two new classes: mmtext and mantext. These are subclasses of rofftext and enable direct viewing of Man pages and manuscript-macro (mm) troff files. Source file: atk/rofftext/roffcmds.h Current version: 2.4 revision 2.4 date: 91/02/05 17:42:56; author: gk5g; state: Exp; lines added/del: 16/3 Changes made by Charles Hayden to support additional troff macros. Also included is an extensively-modified mm macro package that eliminates a lot of the garbage that mm goes through for no useful purpose, and which just generates extraneous stuff anyway. This package handles footnotes and references by turning them into Andrew footnotes; tables by turning them into spreadsheets; and tags and PIC by turning them into links. It has an experimental hypertext button macro, .BU. Headings (using the .H macro) are marked so that they show up in the Table of Contents. Several bugs in original rofftext are fixed, but otherwise it is upwardly compatible. Two new classes: mmtext and mantext. These are subclasses of rofftext and enable direct viewing of Man pages and manuscript-macro (mm) troff files. Source file: atk/rofftext/roffstyl.c Current version: 2.11 revision 2.11 date: 91/02/05 17:42:59; author: gk5g; state: Exp; lines added/del: 12/11 Changes made by Charles Hayden to support additional troff macros. Also included is an extensively-modified mm macro package that eliminates a lot of the garbage that mm goes through for no useful purpose, and which just generates extraneous stuff anyway. This package handles footnotes and references by turning them into Andrew footnotes; tables by turning them into spreadsheets; and tags and PIC by turning them into links. It has an experimental hypertext button macro, .BU. Headings (using the .H macro) are marked so that they show up in the Table of Contents. Several bugs in original rofftext are fixed, but otherwise it is upwardly compatible. Two new classes: mmtext and mantext. These are subclasses of rofftext and enable direct viewing of Man pages and manuscript-macro (mm) troff files. Source file: atk/rofftext/roffstyl.h Current version: 2.7 revision 2.7 date: 91/02/05 17:28:50; author: gk5g; state: Exp; lines added/del: 5/5 Changed _AIX to AIX. Source file: atk/rofftext/rofftxta.c Current version: 2.9 revision 2.9 locked by: gk5g; date: 91/02/05 18:58:37; author: gk5g; state: Exp; lines added/del: 18/11 Changed ParseArgs to look in $ANDREWDIR/lib/tmac for the macro file if the argument is -mm. If the argument is -man, look in /usr/lib/tmac. ---------------------------- revision 2.8 date: 91/02/05 18:02:00; author: gk5g; state: Exp; lines added/del: 11/5 Added to code to look in $ANDREWDIR/lib/tmac for the appropriate macro file. Source file: atk/rofftext/rofftext.ch Current version: 2.8 revision 2.8 date: 91/02/12 15:26:52; author: gk5g; state: Exp; lines added/del: 3/4 Removed #define BUFSIZ. This is defined in stdio.h. ---------------------------- revision 2.7 date: 91/02/05 17:43:20; author: gk5g; state: Exp; lines added/del: 31/7 Changes made by Charles Hayden to support additional troff macros. Also included is an extensively-modified mm macro package that eliminates a lot of the garbage that mm goes through for no useful purpose, and which just generates extraneous stuff anyway. This package handles footnotes and references by turning them into Andrew footnotes; tables by turning them into spreadsheets; and tags and PIC by turning them into links. It has an experimental hypertext button macro, .BU. Headings (using the .H macro) are marked so that they show up in the Table of Contents. Several bugs in original rofftext are fixed, but otherwise it is upwardly compatible. Two new classes: mmtext and mantext. These are subclasses of rofftext and enable direct viewing of Man pages and manuscript-macro (mm) troff files. Source file: atk/rofftext/rofftext.h Current version: 2.5 revision 2.5 date: 91/02/05 17:29:02; author: gk5g; state: Exp; lines added/del: 5/5 Changed _AIX to AIX. Source file: atk/rofftext/roffutil.c Current version: 2.5 revision 2.5 date: 91/02/05 17:43:25; author: gk5g; state: Exp; lines added/del: 17/7 Changes made by Charles Hayden to support additional troff macros. Also included is an extensively-modified mm macro package that eliminates a lot of the garbage that mm goes through for no useful purpose, and which just generates extraneous stuff anyway. This package handles footnotes and references by turning them into Andrew footnotes; tables by turning them into spreadsheets; and tags and PIC by turning them into links. It has an experimental hypertext button macro, .BU. Headings (using the .H macro) are marked so that they show up in the Table of Contents. Several bugs in original rofftext are fixed, but otherwise it is upwardly compatible. Two new classes: mmtext and mantext. These are subclasses of rofftext and enable direct viewing of Man pages and manuscript-macro (mm) troff files. Source file: atk/rofftext/roffutil.h Current version: 2.5 revision 2.5 date: 91/02/05 17:29:06; author: gk5g; state: Exp; lines added/del: 5/5 Changed _AIX to AIX. Source file: atk/rofftext/README Current version: 1.1 revision 1.1 date: 91/02/05 17:31:01; author: gk5g; state: Exp; Initial revision Source file: atk/rofftext/mantext.c Current version: 1.1 revision 1.1 date: 91/02/05 17:31:56; author: gk5g; state: Exp; Initial revision Source file: atk/rofftext/mantext.ch Current version: 1.1 revision 1.1 date: 91/02/05 17:32:05; author: gk5g; state: Exp; Initial revision Source file: atk/rofftext/mantext.tpl Current version: 1.1 revision 1.1 date: 91/02/05 17:32:23; author: gk5g; state: Exp; Initial revision Source file: atk/rofftext/mmtext.c Current version: 1.1 revision 1.1 date: 91/02/05 17:32:27; author: gk5g; state: Exp; Initial revision Source file: atk/rofftext/mmtext.ch Current version: 1.1 revision 1.1 date: 91/02/05 17:32:32; author: gk5g; state: Exp; Initial revision Source file: atk/rofftext/mmtext.tpl Current version: 1.1 revision 1.1 date: 91/02/05 17:32:35; author: gk5g; state: Exp; Initial revision Source file: atk/rofftext/tmac.an Current version: 1.1 revision 1.1 date: 91/02/05 17:32:40; author: gk5g; state: Exp; Initial revision Source file: atk/rofftext/tmac.mm Current version: 1.1 revision 1.1 date: 91/02/05 17:32:47; author: gk5g; state: Exp; Initial revision Source file: atk/support/buffer.c Current version: 2.29 revision 2.29 date: 91/02/21 15:25:39; author: gk5g; state: Exp; lines added/del: 7/3 Change submitted by Bill Cattey: Source file: atk/support/buffer.ch Current version: 2.10 revision 2.10 date: 90/12/14 14:59:01; author: ajp; state: Exp; lines added/del: 8/3 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/support/complete.c Current version: 2.14 revision 2.14 date: 91/04/02 16:58:33; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix support added SCO Unix support .; ---------------------------- revision 2.13 date: 91/02/12 17:28:47; author: gk5g; state: Exp; lines added/del: 4/8 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 2.12 date: 91/01/22 15:52:36; author: gk5g; state: Exp; lines added/del: 5/5 Changed type of second argument to FileComplete(). It was a boolean but it should be a long. Source file: atk/support/nstdmark.c Current version: 2.14 revision 2.14 date: 91/03/11 16:18:29; author: rr2b; state: Exp; lines added/del: 7/5 Changed to account for global isolation to fix some problems encountered using ness's text manipulation Source file: atk/support/print.c Current version: 2.26 revision 2.26 date: 91/02/12 17:28:52; author: gk5g; state: Exp; lines added/del: 5/5 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 2.25 date: 91/01/21 17:56:50; author: gk5g; state: Exp; lines added/del: 5/5 Patch submitted by Todd Inglett: The #ifdef needs to be fixed to include the RS/6000. We want to ignore SIGCLD signals during a print. ---------------------------- revision 2.24 date: 90/11/28 14:43:51; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file Source file: atk/support/style.c Current version: 2.14 revision 2.14 date: 90/12/14 14:59:50; author: ajp; state: Exp; lines added/del: 45/9 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/support/style.ch Current version: 2.8 revision 2.8 date: 90/12/20 18:36:05; author: ajp; state: Exp; lines added/del: 29/2 Added macro for setting missing style flags including tabsCharacters flag ---------------------------- revision 2.7 date: 90/12/14 14:59:43; author: ajp; state: Exp; lines added/del: 3/3 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/support/stylesht.c Current version: 2.6 revision 2.6 date: 90/12/14 15:00:14; author: ajp; state: Exp; lines added/del: 6/7 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/support/bufferlist.c Current version: 1.8 revision 1.8 date: 91/02/12 17:28:36; author: gk5g; state: Exp; lines added/del: 4/8 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 1.7 date: 90/12/14 14:59:33; author: ajp; state: Exp; lines added/del: 48/18 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/support/bufferlist.ch Current version: 1.4 revision 1.4 date: 90/12/14 14:59:28; author: ajp; state: Exp; lines added/del: 3/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: contrib/mit/util/strinput.c Current version: 1.3 revision 1.3 date: 91/05/07 00:44:51; author: gk5g; state: Exp; lines added/del: 18/12 Added a LinkTree method that links the textv into the strinput. It's necessary to link any children views into the viewTree in this way so that viewTree "messages" can travel up to the root, prior to the first fullupdate. . ---------------------------- revision 1.2 date: 91/04/25 21:29:38; author: gk5g; state: Exp; lines added/del: 49/65 *** empty log message *** ---------------------------- revision 1.1 date: 91/04/02 19:34:39; author: gk5g; state: Exp; Initial revision Source file: atk/supportviews/Imakefile Current version: 2.13 revision 2.13 date: 91/02/11 12:00:56; author: gk5g; state: Exp; lines added/del: 1/1 Added help-alias "scrolling". Source file: atk/supportviews/matte.c Current version: 2.12 revision 2.12 date: 91/03/29 00:05:28; author: rr2b; state: Exp; lines added/del: 5/5 fixed menulist which caused a blank menu item to appear... ---------------------------- revision 2.11 date: 90/12/14 20:04:14; author: ajp; state: Exp; lines added/del: 3/3 Type fix ---------------------------- revision 2.10 date: 90/12/14 15:00:25; author: ajp; state: Exp; lines added/del: 12/25 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/supportviews/scroll.c Current version: 2.25 revision 2.25 date: 91/04/12 13:48:37; author: rr2b; state: Exp; lines added/del: 7/17 Took out all the code which tried to force motifish behavior views using scroll have to decide what is "motifish" ---------------------------- revision 2.24 date: 91/04/04 17:08:06; author: rr2b; state: Exp; lines added/del: 1185/111 Merged in code from Marc Pawliger to support "Motif-style" scrollbars ---------------------------- revision 2.23 date: 91/02/18 17:51:03; author: dba; state: Exp; lines added/del: 25/6 Changed from_range_to_bar and from_bar_to_range to use doubles when necessary to avoid overflowing. Source file: atk/supportviews/scroll.ch Current version: 2.11 revision 2.11 date: 91/04/04 17:08:57; author: rr2b; state: Exp; lines added/del: 36/3 Merged in code from Marc Pawliger to support "Motif-style" scrollbars Source file: atk/supportviews/scroll.help Current version: 1.5 revision 1.5 date: 91/05/04 17:25:34; author: rr2b; state: Exp; lines added/del: 75/21 re-formatted the preferences sections and included the preferences listed in the preferences help file to the preferences list here . ---------------------------- revision 1.4 date: 91/04/25 19:44:42; author: rr2b; state: Exp; lines added/del: 6/0 *** empty log message *** ---------------------------- revision 1.3 date: 91/04/25 19:40:43; author: rr2b; state: Exp; lines added/del: 35/3 *** empty log message *** Source file: atk/supportviews/strtbl.c Current version: 2.8 revision 2.8 date: 90/12/19 13:25:41; author: ajp; state: Exp; lines added/del: 22/8 Added method GetEntryOfString which returns the entry id for a string Source file: atk/supportviews/strtbl.ch Current version: 2.7 revision 2.7 date: 90/12/19 13:26:15; author: ajp; state: Exp; lines added/del: 5/4 Added method GetEntryOfString which returns the entry id for a string Source file: atk/supportviews/strtblv.c Current version: 2.7 revision 2.7 date: 90/12/14 15:00:34; author: ajp; state: Exp; lines added/del: 3/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: contrib/mit/util/strinput.ch Current version: 1.3 revision 1.3 date: 91/05/07 00:49:13; author: gk5g; state: Exp; lines added/del: 1/0 Added a LinkTree override. . ---------------------------- revision 1.2 date: 91/04/25 21:29:38; author: gk5g; state: Exp; lines added/del: 2/4 *** empty log message *** ---------------------------- revision 1.1 date: 91/04/02 19:34:45; author: gk5g; state: Exp; Initial revision Source file: atk/table/Imakefile Current version: 1.19 revision 1.19 date: 91/04/10 16:00:10; author: gk5g; state: Exp; lines added/del: 7/9 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 1.18 date: 91/04/09 13:44:50; author: gk5g; state: Exp; lines added/del: 2/0 Don't DeclareFont if FONTS_TO_BDF_ENV is defined. ---------------------------- revision 1.17 date: 91/04/04 15:33:14; author: susan; state: Exp; lines added/del: 1/1 fixed InstallLink ---------------------------- revision 1.16 date: 91/04/02 16:58:51; author: susan; state: Exp; lines added/del: 6/2 added SCO Unix support ---------------------------- revision 1.15 date: 91/03/24 00:40:18; author: gk5g; state: Exp; lines added/del: 2/0 Don't install fonts if NO_FONTS_ENV is defined. Source file: atk/table/tabio.c Current version: 1.12 revision 1.12 date: 91/03/29 00:28:29; author: rr2b; state: Exp; lines added/del: 4/4 fixed bug in advance macro which caused an infinite loop when plain text was being pasted into a cell sometimes. Source file: atk/table/table.c Current version: 1.17 revision 1.17 date: 90/12/06 23:31:59; author: gk5g; state: Exp; lines added/del: 4/5 Don't declare malloc-family on RS/6000. ---------------------------- revision 1.16 date: 90/11/28 14:44:41; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file / Source file: atk/text/Imakefile Current version: 2.23 revision 2.23 date: 91/05/16 23:22:16; author: gk5g; state: Exp; lines added/del: 2/0 Install the new vi helpfile. .pc ---------------------------- revision 2.22 date: 90/12/14 15:00:47; author: ajp; state: Exp; lines added/del: 10/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/content.help Current version: 1.2 revision 1.2 date: 91/05/21 21:06:37; author: gk5g; state: Exp; lines added/del: 21/3 Added description of new TOC manipulation functionality and ContentsScrollTop preference option. . Source file: atk/text/drawtxtv.c Current version: 2.37 revision 2.37 date: 91/04/01 13:06:00; author: gk5g; state: Exp; lines added/del: 4/3 Patch submitted by Bill Cattey: This patch fixes the following problem: Insert an inset in a paragraph. Insert a tab after the inset so that the line would push more text onto the next line. BOOM! Core dump. ---------------------------- revision 2.36 date: 91/02/06 13:17:47; author: tpn; state: Exp; lines added/del: 7/5 Fixed a recently introduced bug that could cause a core dump if characters were inserted before an inset alone on a line. A value in the textitem part of a lineitem was being set, even though the lineitem was of type li_view. ---------------------------- revision 2.35 date: 91/01/23 14:44:50; author: gk5g; state: Exp; lines added/del: 4/4 Changes made by David Andersen and Mike Horowitz regarding the computation of the size of rubber spaces ending a line that has a "soft newline". ---------------------------- revision 2.34 date: 90/12/20 12:27:22; author: ajp; state: Exp; lines added/del: 6/4 Fix in handling tabs before the left margin (when there is outdented text). ---------------------------- revision 2.33 date: 90/12/19 23:04:27; author: ajp; state: Exp; lines added/del: 3/3 Fix to keep drawing code from removing spaces following a soft return. ---------------------------- revision 2.32 date: 90/12/19 13:24:36; author: ajp; state: Exp; lines added/del: 6/2 Fix for clearing out the interparagraph spacing when typing a return. ---------------------------- revision 2.31 date: 90/12/18 17:43:17; author: ajp; state: Exp; lines added/del: 4/4 Fix bug in tabs code, fix from cattey. ---------------------------- revision 2.30 date: 90/12/14 15:00:54; author: ajp; state: Exp; lines added/del: 396/211 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/indexpro.c Current version: 1.5 revision 1.5 date: 91/04/25 11:11:29; author: tpn; state: Exp; lines added/del: 0/0 Fixed two bugs where index entries would overlap. ---------------------------- revision 1.4 date: 91/02/07 16:37:24; author: tpn; state: Exp; lines added/del: 6/4 Fixed bug where both term and term++subterm are indexed. Result will now print correctly. Source file: atk/text/readscr.c Current version: 2.11 revision 2.11 date: 91/04/02 16:59:03; author: susan; state: Exp; lines added/del: 4/4 added SCO Unix support Source file: atk/text/search.c Current version: 2.9 revision 2.9 date: 90/12/16 22:45:19; author: ajp; state: Exp; lines added/del: 22/6 Changes as noted in atk/ajpchg.16.0 ---------------------------- revision 2.8 date: 90/12/16 17:29:51; author: ajp; state: Exp; lines added/del: 37/2 Added procedure, GetQuotedSearchString, that takes a string an properly quotes it for using it in an RE search. This is used when you want to prime a search with a selected string. In this case you probably don't want symbols like a dot, backslahs, etc to be interpreted as part of a regular expression. Source file: atk/text/search.ch Current version: 2.5 revision 2.5 date: 90/12/16 22:44:58; author: ajp; state: Exp; lines added/del: 1/1 Changes as noted in atk/ajpchg.16.0 ---------------------------- revision 2.4 date: 90/12/16 17:27:32; author: ajp; state: Exp; lines added/del: 1/0 Added procedure, GetQuotedSearchString, that takes a string an properly quotes it for using it in an RE search. This is used when you want to prime a search with a selected string. In this case you probably don't want symbols like a dot, backslahs, etc to be interpreted as part of a regular expression. Source file: atk/text/smpltext.c Current version: 2.18 revision 2.18 date: 90/12/14 15:01:30; author: ajp; state: Exp; lines added/del: 63/3 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/smpltext.ch Current version: 2.11 revision 2.11 date: 90/12/14 15:01:19; author: ajp; state: Exp; lines added/del: 7/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/text.c Current version: 2.35 revision 2.35 date: 91/02/25 17:05:24; author: tpn; state: Exp; lines added/del: 4/4 Fixed bug where, in unusual cases, text could add an extra newline when the file if written out. ---------------------------- revision 2.34 date: 91/02/15 14:04:26; author: gk5g; state: Exp; lines added/del: 92/69 Backed-out last change to text_AlwaysCopyText. ---------------------------- revision 2.33 date: 91/02/06 14:53:17; author: gk5g; state: Exp; lines added/del: 69/92 Change made by Rob Ryan: Changed the way text_AlwaysCopyText copies the environments from the srctext to the destination text. Now use text_EnumerateEnvironments. ---------------------------- revision 2.32 date: 90/12/19 14:44:31; author: ajp; state: Exp; lines added/del: 14/4 Change text_Write to write out styles if you have modified the stylesheet attched to the text object. This removes the need for placing the lines about writing templates out in datastream format in you init files. ---------------------------- revision 2.31 date: 90/12/15 12:08:49; author: ajp; state: Exp; lines added/del: 3/3 type fix ---------------------------- revision 2.30 date: 90/12/14 15:01:48; author: ajp; state: Exp; lines added/del: 45/114 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/text.ch Current version: 2.13 revision 2.13 date: 90/12/14 15:01:42; author: ajp; state: Exp; lines added/del: 7/2 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/text.doc Current version: 1.7 revision 1.7 date: 91/04/03 15:30:36; author: gk5g; state: Exp; lines added/del: 113/104 Updated documentation provided by Bill Cattey. Source file: atk/text/textv.c Current version: 2.31 revision 2.31 date: 91/05/01 16:49:46; author: dba; state: Exp; lines added/del: 29/7 More fixes for thumbing. . ---------------------------- revision 2.30 date: 91/04/30 17:36:41; author: dba; state: Exp; lines added/del: 12/3 *** empty log message *** ---------------------------- revision 2.29 date: 91/04/12 13:31:27; author: rr2b; state: Exp; lines added/del: 12/5 Added ScrollbarPosition preference when set to "right" it forces text scrollbars to be placed on the right, if set otherwise it forces them to be placed on the left. Otherwise the default is used, if MotifScrollbars are on the default is to place the scrollbar on the right. ---------------------------- revision 2.28 date: 91/02/18 17:44:02; author: dba; state: Exp; lines added/del: 20/14 Clipped the arguments to BitBlt so that X won't get confused. Minor fix to getinfo ---------------------------- revision 2.27 date: 91/02/13 10:21:51; author: dba; state: Exp; lines added/del: 415/181 Changes that allow insets to be scrolled partially off the top of the view ... fixed a few other small bugs. ---------------------------- revision 2.26 date: 90/12/18 13:51:11; author: ajp; state: Exp; lines added/del: 3/3 Enabled AlwaysDisplayStyleMenus, this causes the style menus to always be displayed, even without a selection region. Selecting such a menu option ath that point will allow you to start typing in that style. ---------------------------- revision 2.25 date: 90/12/14 15:02:22; author: ajp; state: Exp; lines added/del: 252/87 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/textv.ch Current version: 2.14 revision 2.14 date: 91/02/18 17:45:28; author: dba; state: Exp; lines added/del: 4/2 Added two macro methods: EncodePosition and DecodePosition. These translate the positions used internally by text to and from the numbers that are reported to scroll. These were added so that captions (in messages) can override getinfo, setframe, and whatisat. ---------------------------- revision 2.13 date: 91/02/13 10:23:58; author: dba; state: Exp; lines added/del: 14/4 Added textview_SetTopOffTop which allows insets to be scrolled partially off the top of the view. Making this work also required three new instance variables. ---------------------------- revision 2.12 date: 90/12/14 15:02:12; author: ajp; state: Exp; lines added/del: 36/7 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/tindex.c Current version: 1.7 revision 1.7 date: 91/02/12 17:30:58; author: gk5g; state: Exp; lines added/del: 4/4 Removed declaration of rindex/index. That is handled by andrewos.h. Source file: atk/text/tmac.atk Current version: 1.6 revision 1.6 locked by: tpn; date: 90/12/14 15:02:49; author: ajp; state: Exp; lines added/del: 2/0 ==> Andy's Changes: See atk/ajpchg.16.0 <== ---------------------------- revision 1.5 date: 90/11/20 14:16:21; author: gk5g; state: Exp; lines added/del: 5/0 Patch submitted by Bill Cattey: It's necessary here at MIT to make simplex the default. The following patch to atk/text/tmac.atk creates a .Duplex macro so that setting duplex printing is as easy as setting simplex printing. Source file: atk/text/tpllist.c Current version: 2.13 revision 2.13 date: 90/12/15 17:21:41; author: ajp; state: Exp; lines added/del: 21/24 Fixe for adding in the global styles ---------------------------- revision 2.12 date: 90/12/14 15:02:54; author: ajp; state: Exp; lines added/del: 20/4 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/txtstvec.doc Current version: 1.2 revision 1.2 date: 91/04/03 15:32:11; author: gk5g; state: Exp; lines added/del: 280/0 Updated documentation provided by Bill Cattey. Source file: atk/text/txtstvec.h Current version: 2.6 revision 2.6 date: 90/12/14 15:03:05; author: ajp; state: Exp; lines added/del: 4/7 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/txttroff.c Current version: 2.42 revision 2.42 date: 91/05/07 20:43:49; author: dba; state: Exp; lines added/del: 11/2 #if 0'd out a tabs_Death(nsv.tabs) in WriteSomeTroff in a situation where we can't be sure that nsv has been initialized. This should be redone so that we can know if nsv has been init'ed, but for now this avoids the core dump at the expense of a minor memory leak. . ---------------------------- revision 2.41 date: 91/04/24 20:26:53; author: dba; state: Exp; lines added/del: 74/14 *** empty log message *** ---------------------------- revision 2.40 date: 91/04/03 17:36:59; author: susan; state: Exp; lines added/del: 6/7 added SCO Unix support ---------------------------- revision 2.39 date: 91/04/03 15:27:07; author: gk5g; state: Exp; lines added/del: 80/14 Patches submitted by Bill Cattey: This patch fixes the following problem: Insert an inset in a paragraph. Insert a tab after the inset so that the line would push more text onto the next line. BOOM! Core dump. Cleaned up the use of state vectors now that they have tabs. This patch enables txttroff to do the right thing when printing tabs which are done with spaces rather than positional offsets. This should correct problems with indenting experienced by users of ctext. ---------------------------- revision 2.38 date: 91/01/23 14:47:09; author: gk5g; state: Exp; lines added/del: 4/4 Changes made by David Andersen and Mike Horowitz regarding the computation of the size of rubber spaces ending a line that has a "soft newline". ---------------------------- revision 2.37 date: 90/12/20 12:26:38; author: ajp; state: Exp; lines added/del: 4/4 Fix in setting tabs at beginning of document and after returning from an inset. ---------------------------- revision 2.36 date: 90/12/19 23:06:53; author: ajp; state: Exp; lines added/del: 8/2 Fix for the proper setting of margins at the beginning of the text. This will allow users to set the global margins ---------------------------- revision 2.35 date: 90/12/14 15:03:15; author: ajp; state: Exp; lines added/del: 112/40 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/txtvcmds.c Current version: 2.61 revision 2.61 date: 91/05/24 19:04:45; author: susan; state: Exp; lines added/del: 17/14 applied null pointer patch .c de ---------------------------- revision 2.60 date: 91/05/09 17:22:29; author: dba; state: Exp; lines added/del: 9/9 Merged in corrections to proc descriptions from Joe Newcomer. .a ---------------------------- revision 2.59 date: 91/05/09 17:14:09; author: dba; state: Exp; lines added/del: 132/21 Added support for a new preference: StyleCommandPrefix, which can be set to \es in order to get the old bindings for the style commands (that's esc-s, rather than the new esc-' bindings from MIT). Also added a binding for \e'\es for textview-show-styles, so that changing the prefix to \es results in a binding to \es\es. . ---------------------------- revision 2.58 date: 91/05/05 20:21:58; author: gk5g; state: Exp; lines added/del: 110/77 The first comment I got when I showed VI mode to a VI user was: "The arrow keys don't work. How can you expect anyone to use VI mode if the most basic mode of operation is not supported." The following is a patch to text/txtvcmds.c to add key bindings to VI command mode so that the arrow keys (and the other function keys like page up and page down) work. This patch was submitted by Bill Cattey. . ---------------------------- revision 2.57 date: 91/02/21 16:41:07; author: gk5g; state: Exp; lines added/del: 10/3 Patch submitted by Bill Cattey: Added new functions and procatble entries for better Gnu-emacs compatibilty. textview-kill-next-word textview-kill-previous-word textview-MIT-kill-line The functions bound to these proctableEntries all place the deleted text on the cubuffer. ---------------------------- revision 2.56 date: 90/12/19 23:08:03; author: ajp; state: Exp; lines added/del: 7/3 Added a soft new line command (bound to j) that is similar to but puts in a soft return instead if a new line. Also added menu binding for bringing up the Style Editor. ---------------------------- revision 2.55 date: 90/12/18 13:49:48; author: ajp; state: Exp; lines added/del: 4/4 Changed default setting of UseNewStylePlainer and UseStyleKeybindings. The first changes the use of plainer without a selection region The second enables the keybindings for styles. ---------------------------- revision 2.54 date: 90/12/15 12:54:35; author: ajp; state: Exp; lines added/del: 7/11 type fixes Removed use of DigitCmd for Emacs bindings since it is the same as SelfInsertCmd in that case. ---------------------------- revision 2.53 date: 90/12/15 12:47:47; author: ajp; state: Exp; lines added/del: 3/2 Added missing include of ctype.h ---------------------------- revision 2.52 date: 90/12/14 15:03:34; author: ajp; state: Exp; lines added/del: 507/2668 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/txtvinfo.h Current version: 2.11 revision 2.11 date: 90/12/14 15:04:19; author: ajp; state: Exp; lines added/del: 11/3 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/txtvcsty.c Current version: 1.4 revision 1.4 date: 91/05/09 17:10:54; author: dba; state: Exp; lines added/del: 4/4 Changed textview_InsertEnvironment to allow the rock to be the empty string as well as NULL. This facilitates rebinding this proc, since I don't know of any way to specify a NULL rock in an init file. . ---------------------------- revision 1.3 date: 90/12/14 15:04:06; author: ajp; state: Exp; lines added/del: 545/6 ==> Andy's Changes: See atk/ajpchg.16.0 <== Source file: atk/text/pcompch.c Current version: 1.16 revision 1.16 date: 90/11/28 14:46:00; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file Source file: atk/text/comps Current version: 1.6 revision 1.6 date: 91/02/25 19:10:09; author: gk5g; state: Exp; lines added/del: 6/3 Patch submitted by Bill Cattey: Corrects a fault where the overbar and member symbols were transposed. (IE you'd get an overbar if you asked for the member composition.) Adds a composition "#" for the british pound sterling symbol. Adds a composition "de" for the degree sign. Adds a compostion "bu" for the bullet. Changes second occurance of the "gr" composition to be "dl". This is because the mneumonic name grADIENT for the symbol confilcts with the gREEK rHo symbol, but would not conflict with dEl. (The upside down triangle could be called either a gradient symbol or a del.) Source file: atk/text/txtvcmod.c Current version: 1.9 revision 1.9 date: 91/05/05 20:21:58; author: gk5g; state: Exp; lines added/del: 89/68 I noticed that the VI line kill commands were doing the wrong thing with formatted text. Along the way I learned more about how DoCopyRegion worked, and discovered that my ForeKillWord command would do the wrong thing if formatted words were deleted. They would appear as nested text objects instead of formatted words in an ATK data stream. This patch for text/txtvcmod.c corrects the fault in textview_ForeKillWordCmd, adds comments to clarify how DoCopyRegion works, and enables the VI line kill commands to properly save formatted text. This patch was submitted by Bill Cattey. . ---------------------------- revision 1.8 date: 91/02/21 16:44:48; author: gk5g; state: Exp; lines added/del: 128/3 Patch submitted by Bill Cattey: Added new functions and procatble entries for better Gnu-emacs compatibilty. textview-kill-next-word textview-kill-previous-word textview-MIT-kill-line The functions bound to these proctableEntries all place the deleted text on the cubuffer. ---------------------------- revision 1.7 date: 91/02/13 10:26:10; author: dba; state: Exp; lines added/del: 6/12 Cleaned up some compiler warnings left over from Andy's changes. ---------------------------- revision 1.6 date: 91/02/05 21:17:45; author: gk5g; state: Exp; lines added/del: 3/4 Removed a double-declaration of a formal paramtereter to a static function. ---------------------------- revision 1.5 date: 91/01/31 12:06:54; author: gk5g; state: Exp; lines added/del: 12/4 Andy forgot to declare some formal parameters for the VI mode command routines. Remove some warnings from the compilation. ---------------------------- revision 1.4 date: 90/12/19 23:09:41; author: ajp; state: Exp; lines added/del: 76/11 Added soft new line command. Changed way lFcmds work to replicate the spaces/tabs of the previous line. If you convert spaces into tabs then things will not line up. ---------------------------- revision 1.3 date: 90/12/15 17:45:25; author: ajp; state: Exp; lines added/del: 7/7 Type fixes ---------------------------- revision 1.2 date: 90/12/15 12:04:47; author: ajp; state: Exp; lines added/del: 3/2 Added missing include of ctype.h ---------------------------- revision 1.1 date: 90/12/14 14:56:37; author: ajp; state: Exp; Initial revision Source file: atk/text/tabs.ch Current version: 1.1 revision 1.1 date: 90/12/14 14:56:28; author: ajp; state: Exp; Initial revision Source file: atk/text/tabs.c Current version: 1.5 revision 1.5 date: 91/05/21 16:25:07; author: susan; state: Exp; lines added/del: 6/6 moved andrewos.h to be first include . ---------------------------- revision 1.4 date: 91/05/20 16:58:22; author: susan; state: Exp; lines added/del: 3/3 changed system.h to andrewos.h . ---------------------------- revision 1.3 date: 91/05/20 16:23:41; author: susan; state: Exp; lines added/del: 7/3 added include of system.h for hpux . ---------------------------- revision 1.2 date: 90/12/19 13:23:14; author: ajp; state: Exp; lines added/del: 4/4 Fix for ApplyChange when deleting a tab and there is no previous tab. ---------------------------- revision 1.1 date: 90/12/14 14:56:32; author: ajp; state: Exp; Initial revision Source file: atk/text/vi.help Current version: 1.1 revision 1.1 date: 91/05/16 23:21:56; author: gk5g; state: Exp; Initial revision Source file: atk/text/txtvcmv.c Current version: 1.6 revision 1.6 date: 91/04/24 13:20:30; author: gk5g; state: Exp; lines added/del: 0/0 Patch submitted by Bill Cattey: A bug in the line finding code crept into the merge of the VI command set. This is because the text_GetBeginningOfLine routine is a little different from the routine that used for that purpose in the VI commands. ---------------------------- revision 1.5 date: 91/02/13 10:26:44; author: dba; state: Exp; lines added/del: 57/71 Changed GlitchUp, GlitchDown, NextScreen and PrevScreen (^Z, ^Q, ^V, alt-V) to use the new inset scrolling code added to textv.c. ---------------------------- revision 1.4 date: 90/12/17 11:55:51; author: ajp; state: Exp; lines added/del: 18/12 Fix for Next and Previous Line Cmds that was introduced when adding in VI support. ---------------------------- revision 1.3 date: 90/12/15 17:45:43; author: ajp; state: Exp; lines added/del: 4/4 Type fixes ---------------------------- revision 1.2 date: 90/12/15 12:48:21; author: ajp; state: Exp; lines added/del: 3/2 Added missing include of ctype.h ---------------------------- revision 1.1 date: 90/12/14 14:56:43; author: ajp; state: Exp; Initial revision Source file: atk/text/txtvcsrch.c Current version: 1.3 revision 1.3 date: 91/02/13 10:28:19; author: dba; state: Exp; lines added/del: 6/8 Cleaned up some compiler warnings left over from Andy's changes. ---------------------------- revision 1.2 date: 90/12/15 12:05:25; author: ajp; state: Exp; lines added/del: 3/2 Added missing include of ctype.h ---------------------------- revision 1.1 date: 90/12/14 14:56:55; author: ajp; state: Exp; Initial revision Source file: atk/text/txtvcmsc.c Current version: 1.1 revision 1.1 date: 90/12/14 14:57:01; author: ajp; state: Exp; Initial revision Source file: atk/text/txtvcmds.h Current version: 1.1 revision 1.1 date: 90/12/14 14:57:06; author: ajp; state: Exp; Initial revision Source file: atk/text/tabs.doc Current version: 1.2 revision 1.2 date: 91/04/03 15:32:00; author: gk5g; state: Exp; lines added/del: 38/29 Updated documentation provided by Bill Cattey. ---------------------------- revision 1.1 date: 90/12/15 13:38:15; author: ajp; state: Exp; Initial revision Source file: atk/textaux/compchar.c Current version: 1.13 revision 1.13 date: 90/11/28 14:46:50; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file. Source file: atk/textaux/contentv.c Current version: 1.18 revision 1.18 date: 91/05/21 20:19:44; author: gk5g; state: Exp; lines added/del: 19/4 Patch submitted by Charles Hayden: I changed contentv in a minor way. First I made it so that the current position is always visible in the window. This is bacuse we have classes that manipulate the contents window independent of the mouse, so that the carat can get put outside of wht is visible. Second, we provided an option that will show the current line as the top line in the window. This is controlled by a preference option (ContentsScrollTop). . ---------------------------- revision 1.17 date: 91/04/02 17:51:35; author: gk5g; state: Exp; lines added/del: 16/13 Changed the way destroy() deals with destroying the TOC window. There are observable-list dependancies set up when the TOC window is created that must be taken into account when destroying the window. You must be sure to remove an observer from all observer-lists that it may be on before destroying that observer. Otherwise, the observer mechanism may try to call observable_ObserveChanged() with an invalid observer! If you don't understand this concept or this change, get in touch with gk5g+@andrew. ---------------------------- revision 1.16 date: 90/11/26 11:48:53; author: tpn; state: Exp; lines added/del: 3/4 A previous patch had contentv__MakeWindow creating 2 new buffers when it should only have been creating one. Source file: atk/textaux/contentv.ch Current version: 1.3 revision 1.3 date: 91/05/21 20:19:44; author: gk5g; state: Exp; lines added/del: 4/3 Patch submitted by Charles Hayden: I changed contentv in a minor way. First I made it so that the current position is always visible in the window. This is bacuse we have classes that manipulate the contents window independent of the mouse, so that the carat can get put outside of wht is visible. Second, we provided an option that will show the current line as the top line in the window. This is controlled by a preference option (ContentsScrollTop). . Source file: atk/toez/readscrb.c Current version: 1.9 revision 1.9 date: 91/01/16 15:22:32; author: wjh; state: Exp; lines added/del: 6/2 fixed bug which inserted newlines in the middle of paragraphs if a previous line of the same length ended with a style that has the KeepNextNL flag Source file: atk/typescript/Imakefile Current version: 2.12 revision 2.12 date: 91/04/02 16:59:53; author: susan; state: Exp; lines added/del: 3/3 added SCO Unix support Source file: atk/typescript/fcomp.c Current version: 1.14 revision 1.14 locked by: gk5g; date: 91/04/08 20:56:54; author: gk5g; state: Exp; lines added/del: 7/1 Added a wrapper routine, mystrcmp because on some systems strcmp is a macro so you can't grab it for use as a call-back routine. ---------------------------- revision 1.13 date: 91/02/12 17:37:33; author: gk5g; state: Exp; lines added/del: 0/2 Removed declaration of rindex/index. That is handled by andrewos.h. ---------------------------- revision 1.12 date: 91/01/29 17:07:12; author: gk5g; state: Exp; lines added/del: 13/17 Re-formatted for consistency. Fixed a bug in tscript.c:SaveCommand() -- only save the last command if there actually was one. ---------------------------- revision 1.11 date: 91/01/09 21:05:36; author: gk5g; state: Exp; lines added/del: 10/4 In SaveLastCommand(), instead of manipulating textBuf I simply copy it into cmdStr and then append the end-of-string character ('\0'). You shouldn't fool with a data structure that is internal to text. In PossibleCompletions(), added a local variable (struct FontSummary*) fontSummary. That variable is a pointer that is returned by fontdesc_FontSummary(). We don't try to dereference it unless it's non-NULL. Furthermore, the second argument passed to fontdesc_FontSummary() should be a (struct graphic*), not a (struct view*). Source file: atk/typescript/tscript.c Current version: 2.53 revision 2.53 date: 91/05/22 17:09:06; author: gk5g; state: Exp; lines added/del: 4/4 Patch submitted by Juergen Henke : In typescript_InitializeObject, when trying to put the subchannel into TIOCREMOTE mode, treat as IBMR2 or hpux. . ---------------------------- revision 2.52 date: 91/04/26 23:41:49; author: gk5g; state: Exp; lines added/del: 22/22 *** empty log message *** ---------------------------- revision 2.51 date: 91/04/02 16:59:21; author: susan; state: Exp; lines added/del: 11/5 added SCO Unix support ---------------------------- revision 2.50 date: 91/02/14 16:42:59; author: dba; state: Exp; lines added/del: 4/4 Changes so that typetext will use the typescript.bodyfont and not report itself as being modified. This makes it work better in an ez buffer. ---------------------------- revision 2.49 date: 91/02/04 18:46:03; author: gk5g; state: Exp; lines added/del: 3/2 Added forward-declaration for SendSig(). ---------------------------- revision 2.48 date: 91/02/04 18:42:24; author: gk5g; state: Exp; lines added/del: 9/10 Noone pays attention to the value returned by SendSig() so I made it a static void routine. ---------------------------- revision 2.47 date: 91/01/29 17:08:15; author: gk5g; state: Exp; lines added/del: 662/577 Re-formatted for consistency. Fixed a bug in tscript.c:SaveCommand() -- only save the last command if there actually was one. ---------------------------- revision 2.46 date: 91/01/22 18:55:38; author: gk5g; state: Exp; lines added/del: 159/101 I didn't merge Todd's changes in with the current version of this file. I had to back out Todd's changes and merge them by hand because of all the changes that Andy made in the interim. ---------------------------- revision 2.45 date: 91/01/21 18:00:51; author: gk5g; state: Exp; lines added/del: 376/239 Patch submitted by Todd Inglett: Source file: atk/typescript/tscript.ch Current version: 2.11 revision 2.11 date: 91/01/21 18:00:12; author: gk5g; state: Exp; lines added/del: 6/6 Patch submitted by Todd Inglett: Source file: atk/typescript/tscripta.c Current version: 2.14 revision 2.14 date: 91/01/21 18:03:11; author: gk5g; state: Exp; lines added/del: 18/3 Patch submitted by Todd Inglett: Stop method now destroys the typescript object. This is only necessary for the UTMP_MUNGE code. Source file: atk/typescript/tscripta.ch Current version: 2.7 revision 2.7 date: 91/01/21 18:01:46; author: gk5g; state: Exp; lines added/del: 7/3 Patch submitted by Todd Inglett: Added missing InitializeObject and FinalizeObject decls and override for Stop. This is only necessary for the UTMP_MUNGE code. Source file: atk/typescript/typetext.c Current version: 2.10 revision 2.10 date: 91/02/14 16:44:40; author: dba; state: Exp; lines added/del: 11/3 Changes so that typetext will use the typescript.bodyfont and not report itself as being modified. This makes it work better in an ez buffer. Source file: atk/typescript/typetext.ch Current version: 2.6 revision 2.6 date: 91/02/14 16:44:33; author: dba; state: Exp; lines added/del: 4/3 Changes so that typetext will use the typescript.bodyfont and not report itself as being modified. This makes it work better in an ez buffer. Source file: atk/textobjects/Imakefile Current version: 1.10 revision 1.10 date: 91/04/02 17:00:09; author: susan; state: Exp; lines added/del: 2/2 added SCO Unix support Source file: atk/textobjects/dired.c Current version: 1.7 revision 1.7 date: 91/04/02 17:00:17; author: susan; state: Exp; lines added/del: 5/0 added SCO Unix support Source file: atk/textobjects/panel.c Current version: 1.9 revision 1.9 date: 90/12/14 16:23:50; author: gk5g; state: Exp; lines added/del: 14/20 Removed static style and font pointers and made them panel instance-variables. This is so we don't try to destroy a style or font that has already been destroyed. Don't forget that we never destroy fonts because they are cached and reused. Source file: atk/value/Imakefile Current version: 2.16 revision 2.16 date: 91/05/07 15:42:21; author: tpn; state: Exp; lines added/del: 6/4 Added entry for mbuttonv. . ---------------------------- revision 2.15 date: 91/04/25 19:52:06; author: tpn; state: Exp; lines added/del: 28/0 *** empty log message *** ---------------------------- revision 2.14 date: 91/04/10 16:01:08; author: gk5g; state: Exp; lines added/del: 0/4 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 2.13 date: 91/04/09 14:34:29; author: gk5g; state: Exp; lines added/del: 2/0 Don't DeclareFont if FONTS_TO_BDF_ENV is defined. ---------------------------- revision 2.12 date: 91/03/23 20:06:20; author: gk5g; state: Exp; lines added/del: 2/1 Don't install fonts if NO_FONTS_ENV is defined. ---------------------------- revision 2.11 date: 91/01/21 17:31:07; author: gk5g; state: Exp; lines added/del: 2/0 Added checkv.do to DOBJS list. Added checkv.ih to IHFILES list. The checkv class was submitted by Bill Cattey. Source file: atk/value/clklistv.c Current version: 1.11 revision 1.11 date: 91/02/12 17:40:07; author: gk5g; state: Exp; lines added/del: 3/4 Removed declaration of rindex/index. That is handled by andrewos.h. Source file: atk/value/menttext.c Current version: 2.12 revision 2.12 date: 91/02/12 17:40:13; author: gk5g; state: Exp; lines added/del: 7/6 Removed declaration of rindex/index. That is handled by andrewos.h. Source file: atk/value/mbuttonv.c Current version: 1.1 revision 1.1 date: 91/05/07 15:42:46; author: tpn; state: Exp; Initial revision Source file: atk/value/checkv.c Current version: 1.1 revision 1.1 date: 91/01/21 17:32:34; author: gk5g; state: Exp; Initial revision Source file: atk/value/checkv.ch Current version: 1.1 revision 1.1 date: 91/01/21 17:33:23; author: gk5g; state: Exp; Initial revision Source file: atk/value/mbuttonv.ch Current version: 1.1 revision 1.1 date: 91/05/07 15:42:46; author: tpn; state: Exp; Initial revision Source file: atk/zip/lib/Imakefile Current version: 2.21 revision 2.21 date: 91/04/10 16:02:48; author: gk5g; state: Exp; lines added/del: 0/4 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 2.20 date: 91/04/09 01:11:47; author: gk5g; state: Exp; lines added/del: 2/0 Don't DeclareFont if FONTS_TO_BDF_ENV is defined. ---------------------------- revision 2.19 date: 91/04/04 15:34:03; author: susan; state: Exp; lines added/del: 1/1 fixed InstallLink ---------------------------- revision 2.18 date: 91/04/02 17:00:58; author: susan; state: Exp; lines added/del: 3/3 added SCO Unix support ---------------------------- revision 2.17 date: 91/03/23 20:03:30; author: gk5g; state: Exp; lines added/del: 2/0 Don't install fonts if NO_FONTS_ENV is defined. Source file: atk/zip/lib/ziposym.c Current version: 2.20 revision 2.20 date: 91/04/02 17:00:34; author: susan; state: Exp; lines added/del: 3/1 added SCO Unix support Source file: atk/zip/lib/zipvp00.c Current version: 2.10 Source file: atk/zip/utility/ltapp.c Current version: 1.4 revision 1.4 date: 90/11/28 14:54:26; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file. Source file: atk/zip/utility/schedapp.c Current version: 1.4 revision 1.4 date: 90/11/28 14:54:32; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file. Source file: atkams/messages/cmd/Imakefile Current version: 2.14 revision 2.14 date: 91/04/10 16:16:20; author: gk5g; state: Exp; lines added/del: 0/4 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 2.13 date: 91/04/09 18:45:33; author: gk5g; state: Exp; lines added/del: 2/0 Don't DeclareFont if FONTS_TO_BDF_ENV is defined. ---------------------------- revision 2.12 date: 91/03/23 20:09:14; author: gk5g; state: Exp; lines added/del: 2/1 Don't install fonts if NO_FONTS_ENV is defined. Source file: atkams/messages/doc/folders.help Current version: 1.3 revision 1.3 date: 91/04/24 20:07:51; author: susan; state: Exp; lines added/del: 7/4 *** empty log message *** Source file: atkams/messages/doc/msgs.help Current version: 1.3 revision 1.3 date: 91/04/24 20:06:04; author: susan; state: Exp; lines added/del: 45/16 *** empty log message *** Source file: atkams/messages/doc/sendmsg.help Current version: 1.3 revision 1.3 date: 91/04/24 20:06:49; author: susan; state: Exp; lines added/del: 8/6 *** empty log message *** Source file: atkams/messages/lib/Imakefile Current version: 2.17 revision 2.17 date: 91/04/03 16:50:58; author: susan; state: Exp; lines added/del: 10/6 added SCO Unix support ---------------------------- revision 2.16 date: 90/12/18 20:55:14; author: gk5g; state: Exp; lines added/del: 1/6 NO longer link dynamic objects against libresolv.a. The resolver is no located in runapp. Source file: atkams/messages/lib/capaux.c Current version: 1.22 revision 1.22 date: 91/04/27 06:00:22; author: gk5g; state: Exp; lines added/del: 14/15 *** empty log message *** ---------------------------- revision 1.21 date: 91/04/14 17:23:55; author: gk5g; state: Exp; lines added/del: 618/247 "too many defines" ---------------------------- revision 1.20 date: 91/04/02 19:35:39; author: gk5g; state: Exp; lines added/del: 3/2 Needed to #include . ---------------------------- revision 1.19 date: 91/04/02 16:53:16; author: gk5g; state: Exp; lines added/del: 8/250 These changes fix a bug that occurred on a SunOS4.1 machine. If a file needs an auxillary module, all the classprocedures need to be placed in the non-auxillary module. I don't know why this is the case. The affect of the bug was that some weird memory errors occur in a module in the AUX module. This sort of "fix" may have to made to other AUX modules. ---------------------------- revision 1.18 date: 91/02/11 15:00:21; author: gk5g; state: Exp; lines added/del: 4/3 In captions_ActOnMarkedMessages(), when printing a set of marked messages, set HadDisaster = TRUE if ams_CUI_PrintBodyFromCUIDWithFlags() returns an error condition. ---------------------------- revision 1.17 date: 90/12/17 17:11:48; author: ajp; state: Exp; lines added/del: 3/4 Removed setting of interlinespacing in captions styles. Now that interline spacing works setting it in this case really causes the display of captions to be too spread out. Source file: atkams/messages/lib/captions.c Current version: 2.38 revision 2.38 date: 91/04/27 06:00:22; author: gk5g; state: Exp; lines added/del: 22/23 *** empty log message *** ---------------------------- revision 2.37 date: 91/04/14 17:24:14; author: gk5g; state: Exp; lines added/del: 270/619 "too many defines" ---------------------------- revision 2.36 date: 91/04/02 16:50:08; author: gk5g; state: Exp; lines added/del: 248/21 These changes fix a bug that occurred on a SunOS4.1 machine. If a file needs an auxillary module, all the classprocedures need to be placed in the non-auxillary module. I don't know why this is the case. The affect of the bug was that some weird memory errors occur in a module in the AUX module. This sort of "fix" may have to made to other AUX modules. ---------------------------- revision 2.35 date: 91/02/18 17:40:14; author: dba; state: Exp; lines added/del: 24/18 Patched up the scrolling interface to work with the changes to textview. Basically, this involves using textview_EncodePosition and textview_DecodePosition at the right times. These tranlate the positions used internally by text into the numbers that are reported to scroll. ---------------------------- revision 2.34 date: 90/12/16 15:43:22; author: ajp; state: Exp; lines added/del: 4/4 Removed unnecessary include of view.ih in order to get past too many defines. ---------------------------- revision 2.33 date: 90/11/28 14:56:37; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file. Source file: atkams/messages/lib/foldaux.c Current version: 1.13 revision 1.13 date: 91/04/14 17:24:38; author: gk5g; state: Exp; lines added/del: 57/2 "too many defines" ---------------------------- revision 1.12 date: 91/04/03 16:11:08; author: gk5g; state: Exp; lines added/del: 7/98 These changes fix a bug that occurred on a SunOS4.1 machine. If a file needs an auxillary module, all the classprocedures need to be placed in the non-auxillary module. I don't know why this is the case. The affect of the bug was that some weird memory errors occur in a module in the AUX module. This sort of "fix" may have to made to other AUX modules. ---------------------------- revision 1.11 date: 90/12/18 11:01:20; author: ajp; state: Exp; lines added/del: 3/4 Removed another interline spacing setting Source file: atkams/messages/lib/folders.c Current version: 1.31 revision 1.31 date: 91/04/14 17:24:45; author: gk5g; state: Exp; lines added/del: 4/56 "too many defines" ---------------------------- revision 1.30 date: 91/04/03 16:10:33; author: gk5g; state: Exp; lines added/del: 173/76 These changes fix a bug that occurred on a SunOS4.1 machine. If a file needs an auxillary module, all the classprocedures need to be placed in the non-auxillary module. I don't know why this is the case. The affect of the bug was that some weird memory errors occur in a module in the AUX module. This sort of "fix" may have to made to other AUX modules. Source file: atkams/messages/lib/messages.c Current version: 2.40 revision 2.40 date: 91/04/27 06:00:22; author: gk5g; state: Exp; lines added/del: 16/17 *** empty log message *** ---------------------------- revision 2.39 date: 91/04/18 22:14:02; author: rr2b; state: Exp; lines added/del: 26/9 *** empty log message *** ---------------------------- revision 2.38 date: 91/03/21 16:08:14; author: gk5g; state: Exp; lines added/del: 106/229 Moved some code from messages.c into messaux.c to get by the "too many defines" error. Removed some extraneous external function declarations. ---------------------------- revision 2.37 date: 91/03/14 14:56:18; author: gk5g; state: Exp; lines added/del: 180/3 Added "Next Digest" and "Previous Digest" functions for moving through digest messages, with default key bindings ESC-n and ESC-p. Source file: atkams/messages/lib/messages.ch Current version: 2.10 revision 2.10 date: 91/04/18 22:16:51; author: rr2b; state: Exp; lines added/del: 4/4 *** empty log message *** Source file: atkams/messages/lib/messaux.c Current version: 1.6 revision 1.6 date: 91/04/27 06:00:22; author: gk5g; state: Exp; lines added/del: 6/9 *** empty log message *** ---------------------------- revision 1.5 date: 91/04/25 03:07:21; author: rr2b; state: Exp; lines added/del: 3/4 *** empty log message *** ---------------------------- revision 1.4 date: 91/03/21 16:09:29; author: gk5g; state: Exp; lines added/del: 128/104 Moved some code from messages.c into messaux.c to get by the "too many defines" error. Removed some extraneous external function declarations. Source file: atkams/messages/lib/messwind.c Current version: 1.10 Source file: atkams/messages/lib/msgsa.c Current version: 2.14 revision 2.14 date: 91/04/03 16:50:03; author: susan; state: Exp; lines added/del: 4/3 added SCO Unix support Source file: atkams/messages/lib/msgsvers.h Current version: 2.23 revision 2.23 date: 91/02/15 16:09:06; author: wjh; state: Exp; lines added/del: 4/4 add sendmessage-focus-on-body and sendmessage-focus-on-headers Source file: atkams/messages/lib/options.c Current version: 2.24 revision 2.24 date: 91/01/31 14:47:37; author: gk5g; state: Exp; lines added/del: 31/20 Changed method options__SetMessagesOptions to correctly setup the options document. It was doing some funky stuff with adding a '\377' character at the position where the value insets were to go. It was also directly accessing the text object root environment in order to establish the various styles in the doc. I figure that was bogus (data hiding) and replaced the environment_InsertStyle calls with text_AlwaysAddStyle calls. Source file: atkams/messages/lib/sendaux.c Current version: 1.28 revision 1.28 date: 91/04/27 06:00:22; author: gk5g; state: Exp; lines added/del: 33/33 *** empty log message *** ---------------------------- revision 1.27 date: 91/02/15 16:06:21; author: wjh; state: Exp; lines added/del: 6/4 add sendmessage-focus-on-body and sendmessage-focus-on-headers ---------------------------- revision 1.26 date: 90/12/07 12:36:09; author: gk5g; state: Exp; lines added/del: 8/4 Don't declare malloc-family routines on RS/6000. ---------------------------- revision 1.25 date: 90/11/28 14:57:22; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file. Source file: atkams/messages/lib/sendmsg.c Current version: 2.40 revision 2.40 date: 91/05/05 22:38:34; author: gk5g; state: Exp; lines added/del: 25/4 Replaced the routine ProduceUnscribedVersion(), with the version that Curt Galloway originally wrote plus one bug fix. This bug resulted in unformatting errors when sending mail. . ---------------------------- revision 2.39 date: 91/04/25 20:32:37; author: gk5g; state: Exp; lines added/del: 4/26 *** empty log message *** ---------------------------- revision 2.38 date: 91/04/22 19:18:28; author: gk5g; state: Exp; lines added/del: 6/4 *** empty log message *** ---------------------------- revision 2.37 date: 91/04/03 16:50:18; author: susan; state: Exp; lines added/del: 33/5 added SCO Unix support ---------------------------- revision 2.36 date: 91/03/14 14:57:55; author: gk5g; state: Exp; lines added/del: 12/5 Allow two different signature files depending on whether mail you send is formatted/unformatted. ---------------------------- revision 2.35 date: 91/02/15 16:05:35; author: wjh; state: Exp; lines added/del: 15/3 add sendmessage-focus-on-body and sendmessage-focus-on-headers ---------------------------- revision 2.34 date: 90/11/28 14:57:35; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file. Source file: atkams/messages/lib/stubs.c Current version: 1.29 revision 1.29 date: 91/04/03 16:50:40; author: susan; state: Exp; lines added/del: 21/6 added SCO Unix support Source file: atkams/messages/lib/text822v.c Current version: 1.15 revision 1.15 date: 91/04/03 16:50:50; author: susan; state: Exp; lines added/del: 1/0 added SCO Unix support Source file: atkams/messages/lib/fldtreev.c Current version: 1.4 revision 1.4 date: 91/04/02 16:32:15; author: gk5g; state: Exp; lines added/del: 1/1 The last element of an array of bind_Description structs should be a struct bind_Description with NULL values. ---------------------------- revision 1.3 date: 90/11/28 14:57:01; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file. Source file: atkams/messages/scripts/Imakefile Current version: 2.17 revision 2.17 date: 91/04/04 15:35:35; author: susan; state: Exp; lines added/del: 1/1 fixed InstallLink ---------------------------- revision 2.16 date: 91/04/03 16:49:04; author: susan; state: Exp; lines added/del: 10/9 addd SCO Unix support Source file: contrib/Imakefile Current version: 1.8 revision 1.8 date: 91/04/15 15:32:15; author: gk5g; state: Exp; lines added/del: 2/1 Added mit to SUBDIRS list. ---------------------------- revision 1.7 date: 91/02/13 16:43:51; author: susan; state: Exp; lines added/del: 1/1 deleted hyplink ---------------------------- revision 1.6 date: 90/12/04 15:48:26; author: mcinerny; state: Exp; lines added/del: 1/1 Added demos container directory. Source file: contrib/demos/Imakefile Current version: 1.1 revision 1.1 date: 90/12/04 15:43:16; author: mcinerny; state: Exp; Initial revision Source file: contrib/ltext/ltext.c Current version: 2.10 revision 2.10 date: 91/05/05 22:45:19; author: gk5g; state: Exp; lines added/del: 13/10 Patch submitted by Ralph Hill : Ltext mode knows about and formats some ``functions'' in a special way. For example (defun foo () (body-of-foo)) vs. (foo-bar foo () body-of-foo)) For certain special forms, it knows that there are some parameters that are indented in one way, and others that are indented in another way. For defuns, there are two special parameters. This is fine, until you get CLOS. You would like to tell ltext that defmethod is like defun. Unfortunately, as distributed, the table is coded in. Here is a patch that defaults to the old behavior, but will read the table from your preferences. . Source file: contrib/m3text/m3textv.c Current version: 1.7 revision 1.7 date: 90/11/28 14:58:40; author: susan; state: Exp; lines added/del: 3/3 moved andrewos.h to be first include file. Source file: contrib/rmtext/rmtextv.c Current version: 1.7 revision 1.7 date: 90/11/28 14:59:25; author: susan; state: Exp; lines added/del: 5/4 moved andrewos.h to be first include file. Source file: contrib/time/timeodayv.c Current version: 1.4 revision 1.4 date: 91/01/30 10:42:05; author: mcinerny; state: Exp; lines added/del: 0/0 Add defensive programming, in (failed) attempt to help writestamps print (they cause a core dump now). Source file: contrib/tm/tm.c Current version: 2.24 revision 2.24 date: 91/04/02 17:13:42; author: susan; state: Exp; lines added/del: 33/5 added SCO Unix support ---------------------------- revision 2.23 date: 90/12/07 13:43:24; author: gk5g; state: Exp; lines added/del: 5/5 Changed definition of macro ENTER_TIOCREMOTE for RS/6000. ---------------------------- revision 2.22 date: 90/12/06 14:22:41; author: gk5g; state: Exp; lines added/del: 3/5 Backed out last change that surrounded the call to ENTER_TIOCREMOTE() in termulator_StartProcess with #ifdef INCORRECTSIGNALS. We want the psuedo-terminal to be in TIOCREMOTE mode so the parent tm process and the child shell can read/write pre-alligned record boundaries. The fix that this backs out was for the RS/6000. It was a mal-formed attempt at a fix. AIX ptys & process groups are hard to get right but I'm still working on it. Source file: contrib/tm/tm.ch Current version: 2.6 Source file: contrib/tm/tm19.c Current version: 2.5 Source file: contrib/tm/tma.c Current version: 2.6 Source file: contrib/tm/tma.ch Current version: 2.6 Source file: contrib/tm/tmv.c Current version: 2.8 revision 2.8 date: 91/04/02 17:14:02; author: susan; state: Exp; lines added/del: 4/4 added SCO Unix support Source file: contrib/wpedit/Imakefile Current version: 1.11 revision 1.11 date: 90/12/21 17:19:43; author: gk5g; state: Exp; lines added/del: 3/9 No longer link dynamic objects against the resolver library. The resolver code is now in runapp. Source file: contrib/eatmail/Imakefile Current version: 1.2 revision 1.2 date: 91/04/02 17:14:22; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: contrib/eatmail/eatmail.c Current version: 1.2 revision 1.2 date: 91/04/02 17:14:29; author: susan; state: Exp; lines added/del: 2/0 added SCO Unix support Source file: contrib/mit/Imakefile Current version: 1.1 revision 1.1 date: 91/05/29 18:33:41; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/Imakefile Current version: 1.5 revision 1.5 date: 91/05/21 18:37:03; author: susan; state: Exp; lines added/del: 1/1 added headers and footers as Aliases . ---------------------------- revision 1.4 date: 91/05/05 21:07:30; author: gk5g; state: Exp; lines added/del: 2/0 I've modified my fork help procedure to use the im_AddZombieHandler to watch over the fork. This also required modifying the Imakefile to link against libutil.a. . ---------------------------- revision 1.3 date: 91/04/02 20:20:19; author: gk5g; state: Exp; lines added/del: 0/1 Removed installation of unused shellscript (ezcomp). ---------------------------- revision 1.2 date: 91/04/02 20:11:56; author: gk5g; state: Exp; lines added/del: 0/4 Removed some extraneous help-alias installation rules for programs that we don't use here at CMU (ahelp). ---------------------------- revision 1.1 date: 91/04/02 19:33:17; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/compat.c Current version: 1.1 revision 1.1 date: 91/04/02 19:33:33; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/compat.ch Current version: 1.1 revision 1.1 date: 91/04/02 19:33:41; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/ez2ascii.c Current version: 1.1 revision 1.1 date: 91/04/02 19:33:45; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/ez2ascii.help Current version: 1.1 revision 1.1 date: 91/04/02 19:33:50; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/ez2ps Current version: 1.1 revision 1.1 date: 91/04/02 20:14:44; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/ez2ps.help Current version: 1.1 revision 1.1 date: 91/04/02 19:33:54; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/header.c Current version: 1.4 revision 1.4 date: 91/05/21 16:23:57; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include . ---------------------------- revision 1.3 date: 91/05/20 16:59:34; author: susan; state: Exp; lines added/del: 1/1 changed system.h to andrewos.h . ---------------------------- revision 1.2 date: 91/05/20 16:31:06; author: susan; state: Exp; lines added/del: 4/0 added include of system..h for hpux . ---------------------------- revision 1.1 date: 91/04/02 19:33:59; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/header.ch Current version: 1.1 revision 1.1 date: 91/04/02 19:34:05; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/headertxt.help Current version: 1.1 revision 1.1 date: 91/04/02 19:34:10; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/headrtv.c Current version: 1.1 revision 1.1 date: 91/04/02 19:34:15; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/headrtv.ch Current version: 1.1 revision 1.1 date: 91/04/02 19:34:22; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/popts.c Current version: 1.5 revision 1.5 date: 91/05/07 00:48:36; author: gk5g; state: Exp; lines added/del: 0/7 Removed some unnecessary calls. . ---------------------------- revision 1.4 date: 91/04/25 21:29:38; author: gk5g; state: Exp; lines added/del: 150/149 *** empty log message *** ---------------------------- revision 1.3 date: 91/04/04 18:45:46; author: gk5g; state: Exp; lines added/del: 5/5 Patch submitted by Bill Cattey: Since I now have overrides installed in my im, I thought I'd convert the printer setup dialogue box to use them. This patch makes that conversion by changing every occurance of transient to override (I had to do the capitalization myself by hand. Another thing query replace should do...) ---------------------------- revision 1.2 date: 91/04/02 20:07:34; author: gk5g; state: Exp; lines added/del: 1/1 The function printopts_MakeButton() incorrectly declared its third parameter as "void function();" when it should be "void (*function)();". ---------------------------- revision 1.1 date: 91/04/02 19:34:27; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/popts.ch Current version: 1.2 revision 1.2 date: 91/04/25 21:29:38; author: gk5g; state: Exp; lines added/del: 17/11 *** empty log message *** ---------------------------- revision 1.1 date: 91/04/02 19:34:34; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/vutils.c Current version: 1.2 revision 1.2 date: 91/05/05 21:06:55; author: gk5g; state: Exp; lines added/del: 27/7 Patch submitted by Bill Cattey: I've modified my fork help procedure to use the im_AddZombieHandler to watch over the fork. . ---------------------------- revision 1.1 date: 91/04/02 19:34:51; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/util/vutils.ch Current version: 1.1 revision 1.1 date: 91/04/02 19:34:56; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/Imakefile Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/icon.ch Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/note.c Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/noteview.ch Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/psinset.help Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/iconview.c Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/note.ch Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/ps.c Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/psview.c Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/icon.c Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/iconview.ch Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/noteview.c Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/ps.ch Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: contrib/mit/annot/psview.ch Current version: 1.1 revision 1.1 date: 91/05/24 19:10:47; author: gk5g; state: Exp; Initial revision Source file: oda/src/tkerr1.c Current version: 1.2 Source file: oda/src/wasn14.c Current version: 1.1 Source file: overhead/Imakefile Current version: 2.26 revision 2.26 locked by: gk5g; date: 91/05/08 18:53:03; author: gk5g; state: Exp; lines added/del: 1/9 Don't build wm! We don't support it anymore and it should be removed from this source tree. We do support ATK on-top-of wm, we just don't want to build wm -- the program. . ---------------------------- revision 2.25 date: 91/04/02 17:01:53; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: overhead/addalias/Imakefile Current version: 1.3 revision 1.3 date: 91/04/02 17:02:14; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: overhead/addalias/addalias.c Current version: 1.4 revision 1.4 date: 91/04/02 17:02:20; author: susan; state: Exp; lines added/del: 4/0 added SCO Unix support Source file: overhead/class/cmd/Imakefile Current version: 2.23 revision 2.23 date: 91/04/10 15:17:05; author: dba; state: Exp; lines added/del: 4/4 Added support for hp9000s800 dynamic loader. ---------------------------- revision 2.22 date: 91/04/08 17:01:46; author: gk5g; state: Exp; lines added/del: 26/9 Added support for LIBDL_ENV. ---------------------------- revision 2.21 date: 91/04/04 22:58:19; author: gk5g; state: Exp; lines added/del: 6/6 For LIBDL_ENV, use relative shared library paths via -L ${DESTDIR}/lib -lclass. ---------------------------- revision 2.20 date: 91/04/02 20:38:58; author: gk5g; state: Exp; lines added/del: 3/1 If LIBDL_ENV is defined we also define the macro SYS_LIBS = -lresolv so that the shared resolver library is used. ---------------------------- revision 2.19 date: 91/02/15 17:37:40; author: gk5g; state: Exp; lines added/del: 8/4 Code submitted by Guy Harris in support of SunOS4.1 ---------------------------- revision 2.18 date: 91/01/04 18:26:48; author: gk5g; state: Exp; lines added/del: 9/3 Link dofix & dotest against the resolver library because libclass.a now contains undefined resolver symbols due to the fact the the resolver code is now in runapp. Source file: overhead/class/cmd/doindex.c Current version: 1.18 revision 1.18 date: 91/05/23 16:32:02; author: gk5g; state: Exp; lines added/del: 7/9 Patch submitted by Guy Harris & Charles Hayden: I have tested a fix to the dynamic loader problem on sun4.1.1. There is code in runapp.c and in doindex.c that attempts to correct for a bug in Sun's dynamic loader. The problem I was having will affect atk program that is run when file descriptors other than 0, 1, and 2 are open. In my case, my shell leaves file descriptor 3 open when it runs programs. . ---------------------------- revision 1.17 date: 91/04/08 17:34:37; author: gk5g; state: Exp; lines added/del: 6/6 Fixed up some bogus cpp directives. ---------------------------- revision 1.16 date: 91/02/15 17:38:39; author: gk5g; state: Exp; lines added/del: 14/0 Code submitted by Guy Harris in support of SunOS4.1 Source file: overhead/class/machdep/Imakefile Current version: 1.7 revision 1.7 date: 91/04/02 17:02:48; author: susan; state: Exp; lines added/del: 3/0 added SCO Unix support Source file: overhead/class/machdep/aix_i386/Imakefile Current version: 1.19 revision 1.19 date: 91/02/07 13:15:47; author: gk5g; state: Exp; lines added/del: 1/1 When creating libc.eplist, don't make nm output the symbol value in hex because we need to have awk convert it into a number. We need the value as a number because it is possible that an external symbol can be defined in a particular module without having an associated {bss,text,data}-segment. The linker apparently doesn't know exactly what segment to place the symbol in until the final link phase. If the symbol has no segment, but does have a non-zero value then we can assume that it is defined by that nlist entry. ---------------------------- revision 1.18 date: 91/02/01 15:06:35; author: gk5g; state: Exp; lines added/del: 2/4 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.17 date: 91/01/31 17:05:05; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a. ---------------------------- revision 1.16 date: 91/01/31 13:00:08; author: gk5g; state: Exp; lines added/del: 10/4 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.15 date: 91/01/28 20:33:43; author: gk5g; state: Exp; lines added/del: 1/1 Forgot to rename the RESOLVER_CMD to RESOLVER_SPLIT_CMD. ---------------------------- revision 1.14 date: 91/01/28 20:31:09; author: gk5g; state: Exp; lines added/del: 1/0 Forgot the LIBC_RESOLVER_LIST macro which defines all the resolver modules located in libc. ---------------------------- revision 1.13 date: 91/01/28 20:28:13; author: gk5g; state: Exp; lines added/del: 4/8 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.12 date: 91/01/22 14:15:57; author: gk5g; state: Exp; lines added/del: 4/0 Added GETHOSTBYNAME_HACK to remove the libc.a module that defines gethostbyname iff we are using a separate resolver library. Gethostbyname is now in runapp so we don't want it to get into libcx.a. ---------------------------- revision 1.11 date: 91/01/07 23:09:52; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.10 date: 91/01/07 19:58:28; author: gk5g; state: Exp; lines added/del: 23/18 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). ---------------------------- revision 1.9 date: 91/01/07 13:43:37; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.8 date: 91/01/04 14:05:21; author: gk5g; state: Exp; lines added/del: 12/3 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/aix_i386/getlist.awk Current version: 1.6 revision 1.6 date: 91/02/07 13:17:14; author: gk5g; state: Exp; lines added/del: 4/1 When parsing the input for defined, external symbols we must check that the symbol value is non-zero if there is no associated {text,data,bss} segment. This is because the linker apparently doesn't know exactly what segment to place the symbol in until the final link phase. If there is no segment but the value is non-zero, that nlist entry defines that symbol. Now want entrypoints daylight, timezone, and tzname from libc: ctime.o because otherwize the peculiarity described above prevents these symbols from being placed in globalrefs._h and results in the symbols being reported as undefined by makedo. ---------------------------- revision 1.5 date: 91/01/25 17:19:40; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.4 date: 91/01/07 13:34:13; author: gk5g; state: Exp; lines added/del: 102/99 Parsed out the name of the library containing the module that defines a particular entry-point. A single module-name may exist in two different libraries so we need to distinguish between them by keeping track of the library-name/module-name pair. ---------------------------- revision 1.3 date: 90/12/21 16:41:08; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/aix_rt/Imakefile Current version: 1.20 revision 1.20 date: 91/02/01 15:08:14; author: gk5g; state: Exp; lines added/del: 2/4 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.19 date: 91/01/31 17:06:34; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a. ---------------------------- revision 1.18 date: 91/01/31 13:00:15; author: gk5g; state: Exp; lines added/del: 10/4 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.17 date: 91/01/28 20:32:56; author: gk5g; state: Exp; lines added/del: 6/9 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.16 date: 91/01/22 14:05:11; author: gk5g; state: Exp; lines added/del: 4/0 Added GETHOSTBYNAME_HACK to remove the libc.a module that defines gethostbyname iff we are using a separate resolver library. Gethostbyname is now in runapp so we don't want it to get into libcx.a. ---------------------------- revision 1.15 date: 91/01/07 23:11:02; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.14 date: 91/01/07 20:34:56; author: gk5g; state: Exp; lines added/del: 1/1 Forgot to put $(RESOLVER_LIB) in the dependancy list for libcx.a. ---------------------------- revision 1.13 date: 91/01/07 20:11:47; author: gk5g; state: Exp; lines added/del: 24/20 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.12 date: 91/01/07 13:46:38; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.11 date: 91/01/04 12:41:05; author: gk5g; state: Exp; lines added/del: 12/3 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/aix_rt/getlist.awk Current version: 1.5 revision 1.5 date: 91/01/25 17:24:18; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.4 date: 91/01/07 22:41:36; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with the if-statement that sets up the definer array and the library array. Did not have curly-brackets around BOTH assignment statements. This was causing the library array to be assigned to for each symbol that was not UNDEFINED. This was a killer bug because it forced resolver symbols that are suppose to be in runapp only, to be in libcx.a as well. This just can't be, espcially on SYSV derivative os-types. ---------------------------- revision 1.3 date: 91/01/04 12:37:32; author: gk5g; state: Exp; lines added/del: 114/112 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.2 date: 90/12/21 16:44:01; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/aos_rt/Imakefile Current version: 1.16 revision 1.16 date: 91/02/01 14:49:08; author: gk5g; state: Exp; lines added/del: 2/4 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.15 date: 91/01/31 17:02:26; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a. ---------------------------- revision 1.14 date: 91/01/31 13:00:20; author: gk5g; state: Exp; lines added/del: 12/6 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.13 date: 91/01/28 20:24:08; author: gk5g; state: Exp; lines added/del: 6/9 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.12 date: 91/01/22 14:01:03; author: gk5g; state: Exp; lines added/del: 4/0 Added GETHOSTBYNAME_HACK to remove the libc.a module that defines gethostbyname iff we are using a separate resolver library. Gethostbyname is now in runapp so we don't want it to get into libcx.a. ---------------------------- revision 1.11 date: 91/01/07 22:43:42; author: gk5g; state: Exp; lines added/del: 1/1 The order of args to NM should be RESOLVER_LIB, libc.a, libhack.a. getlist.awk needs to see the resolver symbols first. ---------------------------- revision 1.10 date: 91/01/07 20:00:15; author: gk5g; state: Exp; lines added/del: 2/1 Instead of archiving /lib/crt0.o we copy it into the temporary subdir. This way we can just create libcx.a from each .o module in the temp subdir without worrying if we have extracted any resolver modules or not. ---------------------------- revision 1.9 date: 91/01/07 19:38:27; author: gk5g; state: Exp; lines added/del: 19/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). ---------------------------- revision 1.8 date: 91/01/04 23:36:55; author: gk5g; state: Exp; lines added/del: 2/5 Removed RESOLVER_LIB from the creation of libcx.a. ---------------------------- revision 1.7 date: 91/01/04 16:37:08; author: gk5g; state: Exp; lines added/del: 1/1 Only extract modules from RESOLVLIB if RESOLVLIB is a non-empty string and RESOLVER_ENV is defined. This change was made to the macro RESOLVER_CMD. ---------------------------- revision 1.6 date: 91/01/04 12:09:08; author: gk5g; state: Exp; lines added/del: 22/9 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/aos_rt/getlist.awk Current version: 1.5 revision 1.5 date: 91/01/25 17:25:50; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.4 date: 91/01/07 22:36:15; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with the if-statement that sets up the definer array and the library array. Did not have curly-brackets around BOTH assignment statements. This was causing the library array to be assigned to for each symbol that was not UNDEFINED. This was a killer bug because it forced resolver symbols that are suppose to be in runapp only, to be in libcx.a as well. This just can't be, espcially on SYSV derivative os-types. ---------------------------- revision 1.3 date: 91/01/04 12:12:07; author: gk5g; state: Exp; lines added/del: 115/113 Now grab resolver entry-points because the resolver now goes into runapp. As well, since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.2 date: 90/12/21 16:46:25; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/dec_mips/getlist.awk Current version: 1.8 revision 1.8 date: 91/02/18 15:21:29; author: gk5g; state: Exp; lines added/del: 1/0 We need to ask for something from /lib/crt0.o so that it gets added to DelList._. We don't want crt0.o in libcx.a because it will ultimately end up in runapp. ---------------------------- revision 1.7 date: 91/01/25 17:29:08; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.6 date: 91/01/07 22:49:33; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.5 date: 91/01/04 14:28:41; author: gk5g; state: Exp; lines added/del: 114/112 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.4 date: 90/12/21 16:53:52; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/dec_mips/Imakefile Current version: 1.18 revision 1.18 date: 91/02/01 15:04:08; author: gk5g; state: Exp; lines added/del: 2/8 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.17 date: 91/01/31 17:03:15; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a. ---------------------------- revision 1.16 date: 91/01/31 13:00:26; author: gk5g; state: Exp; lines added/del: 10/4 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.15 date: 91/01/28 20:35:54; author: gk5g; state: Exp; lines added/del: 6/5 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.14 date: 91/01/22 14:03:49; author: gk5g; state: Exp; lines added/del: 4/0 Added GETHOSTBYNAME_HACK to remove the libc.a module that defines gethostbyname iff we are using a separate resolver library. Gethostbyname is now in runapp so we don't want it to get into libcx.a. ---------------------------- revision 1.13 date: 91/01/08 18:17:51; author: gk5g; state: Exp; lines added/del: 1/0 In the temporary subdir, new, where libc.a and libresolv.a are decomposed we make each file writable after decomposing the first of these libraries because ar x causes a archive directory to be created and it has no permissions at all. When libc.a is decomposed it tries to write over the first directory. It can't do that so it outputs an error message. This fix simply avoids yet another potentially confusing error message. ---------------------------- revision 1.12 date: 91/01/07 22:48:34; author: gk5g; state: Exp; lines added/del: 2/2 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.11 date: 91/01/07 20:20:18; author: gk5g; state: Exp; lines added/del: 15/10 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.10 date: 91/01/07 13:48:26; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.9 date: 91/01/04 14:23:15; author: gk5g; state: Exp; lines added/del: 12/3 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/dec_mips/doload.c Current version: 1.16 revision 1.16 date: 91/05/20 17:17:14; author: susan; state: Exp; lines added/del: 4/3 rr2b's fix for unaligned access errors . ---------------------------- revision 1.15 date: 90/11/28 15:00:23; author: susan; state: Exp; lines added/del: 1/2 moved andrewos.h to be first include file. Source file: overhead/class/machdep/dec_vax/Imakefile Current version: 1.15 revision 1.15 date: 91/05/22 16:59:30; author: gk5g; state: Exp; lines added/del: 2/2 Patch submitted by Juergen Henke : Added additional translations of NM output. . ---------------------------- revision 1.14 date: 91/02/01 15:07:26; author: gk5g; state: Exp; lines added/del: 2/4 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.13 date: 91/01/31 17:05:52; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a. ---------------------------- revision 1.12 date: 91/01/31 13:00:30; author: gk5g; state: Exp; lines added/del: 12/6 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.11 date: 91/01/28 20:37:20; author: gk5g; state: Exp; lines added/del: 6/9 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.10 date: 91/01/22 14:17:20; author: gk5g; state: Exp; lines added/del: 4/0 Added GETHOSTBYNAME_HACK to remove the libc.a module that defines gethostbyname iff we are using a separate resolver library. Gethostbyname is now in runapp so we don't want it to get into libcx.a. ---------------------------- revision 1.9 date: 91/01/07 22:51:39; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.8 date: 91/01/07 20:23:58; author: gk5g; state: Exp; lines added/del: 20/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.7 date: 91/01/07 13:49:26; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.6 date: 91/01/04 13:12:27; author: gk5g; state: Exp; lines added/del: 22/9 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/dec_vax/getlist.awk Current version: 1.5 revision 1.5 date: 91/01/25 17:30:26; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.4 date: 91/01/07 22:50:54; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.3 date: 91/01/04 13:14:06; author: gk5g; state: Exp; lines added/del: 115/113 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.2 date: 90/12/21 16:54:56; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/hp_68k/Imakefile Current version: 1.15 revision 1.15 date: 91/02/01 15:08:58; author: gk5g; state: Exp; lines added/del: 2/4 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.14 date: 91/01/31 17:07:26; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a. ---------------------------- revision 1.13 date: 91/01/31 13:00:36; author: gk5g; state: Exp; lines added/del: 10/4 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.12 date: 91/01/28 20:38:48; author: gk5g; state: Exp; lines added/del: 6/9 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.11 date: 91/01/22 14:19:48; author: gk5g; state: Exp; lines added/del: 4/0 Added GETHOSTBYNAME_HACK to remove the libc.a module that defines gethostbyname iff we are using a separate resolver library. Gethostbyname is now in runapp so we don't want it to get into libcx.a. ---------------------------- revision 1.10 date: 91/01/07 22:53:14; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.9 date: 91/01/07 20:40:24; author: gk5g; state: Exp; lines added/del: 20/16 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.8 date: 91/01/07 13:50:13; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.7 date: 91/01/04 13:34:24; author: gk5g; state: Exp; lines added/del: 22/9 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/hp_68k/getlist.awk Current version: 1.8 revision 1.8 date: 91/01/25 17:31:20; author: gk5g; state: Exp; lines added/del: 1/0 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.7 date: 91/01/07 22:52:33; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.6 date: 91/01/07 13:40:04; author: gk5g; state: Exp; lines added/del: 3/0 Added tolower/toupper entry-point hooks. These two are functions under POSIX and must go into runapp because they have internal state related to international characters sets. We must have only a single copy of these two functions. ---------------------------- revision 1.5 date: 91/01/04 13:31:43; author: gk5g; state: Exp; lines added/del: 131/129 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.4 date: 90/12/21 16:56:36; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/hp_pa_risc/Imakefile Current version: 1.1 revision 1.1 date: 91/03/29 12:09:00; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/doload.c Current version: 1.1 revision 1.1 date: 91/03/29 12:09:14; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/doload.h Current version: 1.1 revision 1.1 date: 91/03/29 12:09:23; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/dump.shar Current version: 1.1 revision 1.1 date: 91/03/29 12:09:26; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/dynld.shar Current version: 1.1 revision 1.1 date: 91/03/29 12:09:30; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/dynld.ez Current version: 1.1 revision 1.1 date: 91/03/29 12:09:41; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/entry.spp Current version: 1.1 revision 1.1 date: 91/03/29 12:09:47; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/makedo.csh Current version: 1.1 revision 1.1 date: 91/03/29 12:09:54; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/milli.shar Current version: 1.1 revision 1.1 date: 91/03/29 12:09:57; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/hp_pa_risc/symbols.c Current version: 1.1 revision 1.1 date: 91/03/29 12:10:02; author: dba; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/Imakefile Current version: 1.1 revision 1.1 date: 91/04/02 17:03:29; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/dofix.c Current version: 1.1 revision 1.1 locked by: susan; date: 91/04/02 17:03:57; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/dolist.c Current version: 1.1 revision 1.1 date: 91/04/02 17:04:04; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/doload.c Current version: 1.1 revision 1.1 date: 91/04/02 17:04:15; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/doload.h Current version: 1.1 revision 1.1 date: 91/04/02 17:04:20; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/entry.spp Current version: 1.1 revision 1.1 date: 91/04/02 17:04:23; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/getlist.awk Current version: 1.1 revision 1.1 date: 91/04/02 17:04:28; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/globals.spp Current version: 1.1 revision 1.1 date: 91/04/02 17:04:32; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sco_i386/makedo.csh Current version: 1.1 revision 1.1 date: 91/04/02 17:04:34; author: susan; state: Exp; Initial revision Source file: overhead/class/machdep/sun_68k/Imakefile Current version: 1.20 revision 1.20 date: 91/02/01 15:09:51; author: gk5g; state: Exp; lines added/del: 2/4 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.19 date: 91/01/31 17:01:20; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a. ---------------------------- revision 1.18 date: 91/01/31 13:00:42; author: gk5g; state: Exp; lines added/del: 12/6 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.17 date: 91/01/28 20:42:15; author: gk5g; state: Exp; lines added/del: 6/9 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.16 date: 91/01/22 13:19:33; author: gk5g; state: Exp; lines added/del: 1/1 I mispelled the GETHOSTENT_HACK macro where it was being referenced. Ooops. ---------------------------- revision 1.15 date: 91/01/16 15:58:12; author: gk5g; state: Exp; lines added/del: 6/2 Added a new step, GETHOSTNAME_HACK. This is necessary on a Sun when linking against a separate resolver library. Gethostbyname() is defined in the module gethostnamadr.o in libresolv.a. It is defined in the module gethostent() in libc.a. We don't want gethostbyname to be in both runapp and libcx.a so we remove it from libcx.a if RESOLVER_ENV is defined. If RESOLVER_ENV isn't defined then it will get deleted from libcx.a because it will have been placed in DelList._ in the normal fashion. ---------------------------- revision 1.14 date: 91/01/07 22:57:40; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.13 date: 91/01/07 19:46:37; author: gk5g; state: Exp; lines added/del: 19/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). ---------------------------- revision 1.12 date: 91/01/07 14:03:04; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.11 date: 91/01/04 13:47:10; author: gk5g; state: Exp; lines added/del: 1/2 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. ---------------------------- revision 1.10 date: 91/01/02 14:31:44; author: susan; state: Exp; lines added/del: 4/4 fixed syntax error ---------------------------- revision 1.9 date: 91/01/02 13:48:26; author: gk5g; state: Exp; lines added/del: 2/2 Fixed a syntax error. ---------------------------- revision 1.8 date: 90/12/21 16:33:45; author: gk5g; state: Exp; lines added/del: 23/9 Placed resolver modules in runapp and put them into globalrefs._h. No longer link dynamic objects against RESOLVLIB. Source file: overhead/class/machdep/sun_68k/getlafs.awk Current version: 1.6 revision 1.6 date: 91/01/25 17:38:58; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.5 date: 91/01/16 16:07:24; author: gk5g; state: Exp; lines added/del: 2/1 There is a problem because gethostbyname is defined in both libc.a and libresolv.a-- but in different modules. In libresolv.a it is defined in gethostnamadr.o. In libc.a it is defined in gethostent.o. The solution is to ask for the entry-point gethostent only if we aren't linking against a separate resolver library. If the module that defines the symbol gethostbyname is "gethostnamadr.o" then we don't ask to keep gethostent because we're linking against libresolv.a. ---------------------------- revision 1.4 date: 91/01/15 18:44:33; author: gk5g; state: Exp; lines added/del: 1/0 Must also grab gethostent entry-point because if we don't and there is a standalone resolver library it will cause the incorrect version of gethostbyname to be entered into libcx.a. The resolver code is in runapp and there should be no conflicting routines in libcx.a. ---------------------------- revision 1.3 date: 91/01/07 22:56:44; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.2 date: 91/01/04 14:14:56; author: gk5g; state: Exp; lines added/del: 114/74 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. Source file: overhead/class/machdep/sun_68k/getlist.awk Current version: 1.8 revision 1.8 date: 91/01/25 17:38:22; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.7 date: 91/01/16 16:03:07; author: gk5g; state: Exp; lines added/del: 2/1 There is a problem because gethostbyname is defined in both libc.a and libresolv.a-- but in different modules. In libresolv.a it is defined in gethostnamadr.o. In libc.a it is defined in gethostent.o. The solution is to ask for the entry-point gethostent only if we aren't linking against a separate resolver library. If the module that defines the symbol gethostbyname is "gethostnamadr.o" then we don't ask to keep gethostent because we're linking against libresolv.a. ---------------------------- revision 1.6 date: 91/01/15 18:42:47; author: gk5g; state: Exp; lines added/del: 1/0 Must also grab gethostent entry-point because if we don't and there is a standalone resolver library it will cause the incorrect version of gethostbyname to be entered into libcx.a. The resolver code is in runapp and there should be no conflicting routines in libcx.a. ---------------------------- revision 1.5 date: 91/01/07 22:56:05; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.4 date: 91/01/04 13:57:45; author: gk5g; state: Exp; lines added/del: 122/116 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.3 date: 90/12/21 16:34:31; author: gk5g; state: Exp; lines added/del: 40/0 Placed resolver modules in runapp and put them into globalrefs._h. No longer link dynamic objects against RESOLVLIB. Source file: overhead/class/machdep/sun_68k_41/Imakefile Current version: 1.1 revision 1.1 date: 91/02/15 15:58:41; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_68k_41/doload.c Current version: 1.1 revision 1.1 date: 91/02/15 15:59:48; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_68k_41/doload.h Current version: 1.1 revision 1.1 date: 91/02/15 15:59:55; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_68k_41/entry.spp Current version: 1.1 revision 1.1 date: 91/02/15 16:00:02; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_68k_41/makedo.csh Current version: 1.2 revision 1.2 date: 91/03/23 20:13:54; author: gk5g; state: Exp; lines added/del: 1/1 Added -lresolv argument to ld line. Need to have a way for undefined symbols to pass through ld without being flagged when those symbols will be resolved at load-time. ---------------------------- revision 1.1 date: 91/02/15 16:00:07; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_sparc/Imakefile Current version: 1.21 revision 1.21 date: 91/02/01 15:05:43; author: gk5g; state: Exp; lines added/del: 2/4 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.20 date: 91/01/31 16:59:56; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a ---------------------------- revision 1.19 date: 91/01/31 13:00:47; author: gk5g; state: Exp; lines added/del: 10/4 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.18 date: 91/01/28 20:43:50; author: gk5g; state: Exp; lines added/del: 6/9 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.17 date: 91/01/22 13:22:49; author: gk5g; state: Exp; lines added/del: 4/0 Added GETHOSTENT_HACK macro to remove the module gethostent.o from libcx.a if a separate resolver library is being used. We need to remove gethostent.o because it defines the function gethostbyname in libc.a. That function is defined in a different module in libresolv.a. ---------------------------- revision 1.16 date: 91/01/07 23:00:41; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.15 date: 91/01/07 21:22:08; author: gk5g; state: Exp; lines added/del: 1/1 Changed the order of the arguments to NM in the dependancy section for libc.eplist. The order should be libc.a, RESOLVER_LIB, libhack.a. The order is important because the affect the way getlist.awk sees the incoming entry-points. The first time it sees an entry-point it grabs it by putting it into an internal data structure. We need to be sure that it sees the resolver entry-points first. ---------------------------- revision 1.14 date: 91/01/07 20:31:58; author: gk5g; state: Exp; lines added/del: 20/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.13 date: 91/01/07 13:52:39; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.12 date: 91/01/04 14:00:35; author: gk5g; state: Exp; lines added/del: 0/1 Removed a small hack. ---------------------------- revision 1.11 date: 91/01/02 14:33:02; author: susan; state: Exp; lines added/del: 4/4 fixed syntax error ---------------------------- revision 1.10 date: 91/01/02 13:50:17; author: gk5g; state: Exp; lines added/del: 2/2 Fixed a syntax error. ---------------------------- revision 1.9 date: 91/01/02 12:06:14; author: gk5g; state: Exp; lines added/del: 19/11 Fix for problem with Sun4 wrt the resolver library. The resolver code is no located in runapp. There is no need to link anything but runapp against the resolver. ---------------------------- revision 1.8 date: 90/12/18 17:57:06; author: gk5g; state: Exp; lines added/del: 7/1 Added symbols from RESOLVLIB into libcx.a if RESOLVER_ENV is defined. The resolver is in runapp. Other dynamic object need not be linked against libresolv.a. Source file: overhead/class/machdep/sun_sparc/getlafs.awk Current version: 1.7 revision 1.7 date: 91/01/31 16:59:06; author: gk5g; state: Exp; lines added/del: 2/1 We only want the entry point gethostent if the definer of gethostbyname is NOT the resolver module gethostnamadr.o. If this is the case, then we are NOT linking against a seperate resolver library, so we need gethostent from libc because it defines gethostbyname. ---------------------------- revision 1.6 date: 91/01/25 17:42:18; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.5 date: 91/01/15 18:45:51; author: gk5g; state: Exp; lines added/del: 1/0 Must also grab gethostent entry-point because if we don't and there is a standalone resolver library it will cause the incorrect version of gethostbyname to be entered into libcx.a. The resolver code is in runapp and there should be no conflicting routines in libcx.a. ---------------------------- revision 1.4 date: 91/01/07 22:59:40; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.3 date: 91/01/07 13:54:30; author: gk5g; state: Exp; lines added/del: 2/0 Added tolower/toupper entry-point hooks. These two are functions under POSIX and must go into runapp because they have internal state related to international characters sets. We must have only a single copy of these two functions. ---------------------------- revision 1.2 date: 91/01/04 14:18:42; author: gk5g; state: Exp; lines added/del: 115/74 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. Source file: overhead/class/machdep/sun_sparc/getlist.awk Current version: 1.10 revision 1.10 date: 91/01/31 16:56:44; author: gk5g; state: Exp; lines added/del: 2/1 We only want the entry point gethostent if the definer of gethostbyname is NOT the resolver module gethostnamadr.o. If this is the case, then we are NOT linking against a seperate resolver library, so we need gethostent from libc because it defines gethostbyname. ---------------------------- revision 1.9 date: 91/01/25 17:42:09; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.8 date: 91/01/15 18:45:39; author: gk5g; state: Exp; lines added/del: 1/0 Must also grab gethostent entry-point because if we don't and there is a standalone resolver library it will cause the incorrect version of gethostbyname to be entered into libcx.a. The resolver code is in runapp and there should be no conflicting routines in libcx.a. ---------------------------- revision 1.7 date: 91/01/07 22:59:27; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.6 date: 91/01/07 13:41:43; author: gk5g; state: Exp; lines added/del: 2/0 Added tolower/toupper entry-point hooks. These two are functions under POSIX and must go into runapp because they have internal state related to international characters sets. We must have only a single copy of these two functions. ---------------------------- revision 1.5 date: 91/01/04 12:21:54; author: gk5g; state: Exp; lines added/del: 115/120 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.4 date: 91/01/02 18:20:25; author: gk5g; state: Exp; lines added/del: 2/0 Added hooks to grab toupper/tolower. This is necessary because on the Sun4 these are functions that reside in libc.a and they also have internal presistent data. Thus must only have a single copy in a running image. ---------------------------- revision 1.3 date: 91/01/02 12:07:44; author: gk5g; state: Exp; lines added/del: 40/0 Fix for problem with Sun4 wrt the resolver library. The resolver code is no located in runapp. There is no need to link anything but runapp against the resolver. Source file: overhead/class/machdep/sun_sparc_41/Imakefile Current version: 1.3 revision 1.3 date: 91/04/03 23:12:55; author: gk5g; state: Exp; lines added/del: 2/2 Mispelled globals.o ---------------------------- revision 1.2 date: 91/04/02 20:35:22; author: gk5g; state: Exp; lines added/del: 16/3 We create our own shared resolver library and install it in ${DESTDIR}/lib. ---------------------------- revision 1.1 date: 91/02/15 16:00:39; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_sparc_41/doload.c Current version: 1.1 revision 1.1 date: 91/02/15 16:00:45; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_sparc_41/doload.h Current version: 1.1 revision 1.1 date: 91/02/15 16:00:51; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_sparc_41/entry.spp Current version: 1.1 revision 1.1 date: 91/02/15 16:00:57; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/sun_sparc_41/makedo.csh Current version: 1.3 revision 1.3 date: 91/04/02 20:36:22; author: gk5g; state: Exp; lines added/del: 1/1 Removed the "-lresolv" from the ld line. There is now a shared resolver library in ${DESTIR}/lib. The ProgramTarget() in andrew/config/andrew.rls now uses -L ${DESTDIR}/lib so that if the syslib includes -lresolv, it will find our shared version of the library. ---------------------------- revision 1.2 date: 91/03/23 20:10:06; author: gk5g; state: Exp; lines added/del: 1/1 added -lresolv to ld line. We have the resolver code in runapp but I don't see how to tell ld that certain symbols (like the resolver ones) will be resolved, so to speak, at load-time. The result is, we have the resolver code in both runapp and those dynamic objects that actually reference resolver routines (andrew/atkams/messages/lib/amss.do). ---------------------------- revision 1.1 date: 91/02/15 16:01:03; author: gk5g; state: Exp; Initial revision Source file: overhead/class/machdep/i386_mach/Imakefile Current version: 1.11 revision 1.11 date: 91/02/01 15:04:53; author: gk5g; state: Exp; lines added/del: 2/4 Changed ARCHIVE_COM from a cpp define to a Make macro. ---------------------------- revision 1.10 date: 91/01/31 17:04:04; author: gk5g; state: Exp; lines added/del: 1/1 Added gethostent.o to the LIBC_RESOLVER_LIST. We don't want any module that defines gethostbyname in libcx.a. ---------------------------- revision 1.9 date: 91/01/31 13:00:52; author: gk5g; state: Exp; lines added/del: 12/6 These changes submitted by Bill Cattey allow the linking of the Gnu utilities library via its inclusion into libcx.a. ---------------------------- revision 1.8 date: 91/01/28 20:40:08; author: gk5g; state: Exp; lines added/del: 6/9 Still trying to get all the resolver code in the right place (runapp). Now have a list of resolver modules that need to be deleted from libcx.a iff RESOLVER_ENV is set and there is a separate resolver library. See LIBC_RESOLVER_HACK macro. This macro command deletes the resolver modules from libc.a that may have gotten into libcx.a. ---------------------------- revision 1.7 date: 91/01/22 14:18:36; author: gk5g; state: Exp; lines added/del: 4/0 Added GETHOSTBYNAME_HACK to remove the libc.a module that defines gethostbyname iff we are using a separate resolver library. Gethostbyname is now in runapp so we don't want it to get into libcx.a. ---------------------------- revision 1.6 date: 91/01/07 22:55:03; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.5 date: 91/01/07 20:27:07; author: gk5g; state: Exp; lines added/del: 20/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.4 date: 91/01/07 13:51:09; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.3 date: 91/01/04 13:37:29; author: gk5g; state: Exp; lines added/del: 22/9 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/i386_mach/getlist.awk Current version: 1.5 revision 1.5 date: 91/01/25 17:32:38; author: gk5g; state: Exp; lines added/del: 2/1 Fixed the for-loop that implements transitive-closure of the wanted modules. The outer loop would previously only execute once because needmore was being set to "N" after each execution of the loop body. Moved that assignment to the first line of the outer for-loop body. This is a long-standing bug. ---------------------------- revision 1.4 date: 91/01/07 22:54:11; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.3 date: 91/01/04 13:44:37; author: gk5g; state: Exp; lines added/del: 114/112 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.2 date: 90/12/21 16:58:02; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/lib/Imakefile Current version: 2.11 revision 2.11 date: 91/04/08 17:02:12; author: gk5g; state: Exp; lines added/del: 1/1 Added classproc.o to the ld-line for LIBDL_ENV. That module contains the class_RoutineStruct. ---------------------------- revision 2.10 date: 91/03/29 12:05:46; author: dba; state: Exp; lines added/del: 14/6 Changes to support the splitting of class.c into class.c and classproc.c. ---------------------------- revision 2.9 date: 91/02/15 17:39:48; author: gk5g; state: Exp; lines added/del: 13/1 Code submitted by Guy Harris in support of SunOS4.1 Source file: overhead/class/lib/class.c Current version: 2.33 revision 2.33 date: 91/04/02 17:03:12; author: susan; state: Exp; lines added/del: 6/1 added SCO Unix support ---------------------------- revision 2.32 date: 91/03/29 12:03:43; author: dba; state: Exp; lines added/del: 3/78 Tore out the class_RoutineStruct and put it into classproc.c. This is necessary on the hp800 so that this table can be both statically and dynamically loaded. Source file: overhead/class/lib/class.h Current version: 2.18 revision 2.18 date: 91/04/02 17:03:02; author: susan; state: Exp; lines added/del: 4/1 added SCO Unix support Source file: overhead/class/lib/classproc.c Current version: 1.1 revision 1.1 date: 91/03/29 12:06:17; author: dba; state: Exp; Initial revision Source file: overhead/class/testing/Imakefile Current version: 2.18 revision 2.18 date: 91/05/08 18:59:00; author: gk5g; state: Exp; lines added/del: 5/1 Link testmain against RESOLVLIB because libclass.a depends on it. . ---------------------------- revision 2.17 date: 91/03/13 14:42:29; author: gk5g; state: Exp; lines added/del: 1/1 The MAKEDOFLAGS macro was defined as -b ../bin -g -d ${BASEDIR}/lib. I moved the -g to the front of the definition. Source file: overhead/conv/Imakefile Current version: 1.12 revision 1.12 date: 91/04/10 15:19:05; author: dba; state: Exp; lines added/del: 1/0 Added DependTarget() ---------------------------- revision 1.11 date: 91/04/03 16:48:43; author: susan; state: Exp; lines added/del: 1/1 addd SCO Unix support ---------------------------- revision 1.10 date: 91/04/02 17:25:28; author: gk5g; state: Exp; lines added/del: 8/1 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. ---------------------------- revision 1.9 date: 91/01/04 12:03:45; author: gk5g; state: Exp; lines added/del: 7/1 Link conclass against libresolv.a because it's a program that links against libclass.a and libclass.a has undefined resolver symbols. This is because the resolver is now in runapp. Source file: overhead/cmenu/Imakefile Current version: 2.8 revision 2.8 date: 91/04/02 17:05:03; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: overhead/cmenu/cmcreate.c Current version: 2.15 revision 2.15 date: 91/05/20 17:57:48; author: gk5g; state: Exp; lines added/del: 9/2 Patch submitted by Charles Hayden: I put code in cmcreate.c in patch 10 to do the PaneSpread. Then I put the following line in .Xresources: *.PaneSpread: 1.5 This says make the spread 1.5 times the "standard" spread. . ---------------------------- revision 2.14 date: 91/05/02 21:27:16; author: gk5g; state: Exp; lines added/del: 4/3 #included andrewos.h prior to including crsrimg.h. We need to know what platform we are on to get around the XNews cursor bug. . ---------------------------- revision 2.13 date: 91/04/14 17:30:21; author: gk5g; state: Exp; lines added/del: 3/3 Reversed the BlackPixel() and WhitePixel() macros passed to XCreatePixmapFromBitmapData when creating cursorMaskPixmap. ---------------------------- revision 2.12 date: 91/04/14 17:17:26; author: gk5g; state: Exp; lines added/del: 3/3 Was using WhitePixel() for both fore- and background pixel in call to XCreatePixmapFromBitmapData to create the cursorMaskPixmap. ---------------------------- revision 2.11 date: 91/04/03 13:11:57; author: gk5g; state: Exp; lines added/del: 6/8 Change suggested by Dave Nichols: When it specifies the mask for the cursor, it uses a mask with 0 for the bits that should be visible, and 1 for the bits that should be transparent. This works fine on the MIT server, but the xnews server seems to ignore the parameters that tell which bits are which and assume that 1 bits are visible and 0s are transparent. Instead of getting a black arrow with a transparent background, you get a transparent arrow on a white background. Inverting the mask and changing the 1s and 0s in the call fixes this up. I use the WhitePixel() & BlackPixel() macros in the call to XCreatePixmapFromBitmapData(). Source file: overhead/cmenu/cmenu.help Current version: 1.8 revision 1.8 date: 91/05/20 18:03:11; author: gk5g; state: Exp; lines added/del: 10/3 Added description of the cmenu PaneSpread property. . ---------------------------- revision 1.7 date: 91/01/14 13:55:16; author: gk5g; state: Exp; lines added/del: 30/44 The template was missing and the styles were messed up. I fixed it. Source file: overhead/cmenu/crsrimg.h Current version: 2.6 revision 2.6 date: 91/05/02 21:29:58; author: gk5g; state: Exp; lines added/del: 4/4 Reverse the cursormask_bits if OPENWINDOWS_ENV, sys_sun4_41, or sys_sun3_41 is defined. . ---------------------------- revision 2.5 date: 91/04/26 17:47:00; author: gk5g; state: Exp; lines added/del: 2/2 *** empty log message *** ---------------------------- revision 2.4 date: 91/04/03 13:13:48; author: gk5g; state: Exp; lines added/del: 10/2 Change suggested by Dave Nichols: When it specifies the mask for the cursor, it uses a mask with 0 for the bits that should be visible, and 1 for the bits that should be transparent. This works fine on the MIT server, but the xnews server seems to ignore the parameters that tell which bits are which and assume that 1 bits are visible and 0s are transparent. Instead of getting a black arrow with a transparent background, you get a transparent arrow on a white background. Inverting the mask and changing the 1s and 0s in the call fixes this up. I use the WhitePixel() & BlackPixel() macros in the call to XCreatePixmapFromBitmapData(). Source file: overhead/eli/bglisp/Imakefile Current version: 2.5 revision 2.5 date: 91/04/02 17:05:24; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: overhead/eli/lib/Imakefile Current version: 2.7 revision 2.7 date: 91/03/29 12:15:54; author: dba; state: Exp; lines added/del: 2/3 Removed spaces from the ..WithReplacement lines. They were introducing spaces into the sed commands, and breaking things on the hp800. Source file: overhead/fonts/cmd/Imakefile Current version: 2.6 revision 2.6 date: 91/05/17 17:57:52; author: gk5g; state: Exp; lines added/del: 2/2 When WM_ENV is defined, create the wm-specific font conversion programs by linking against ${WMBASEDIR}/lib/libfont.a. WMBASEDIR should be set by the builder in site.mcr. . . Source file: overhead/fonts/fonts/adobe/Imakefile Current version: 2.16 revision 2.16 date: 91/04/10 15:51:37; author: gk5g; state: Exp; lines added/del: 0/4 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 2.15 date: 91/04/09 16:56:02; author: gk5g; state: Exp; lines added/del: 4/4 Added support for NO_FONTS_ENV and FONTS_TO_BDF_ENV. ---------------------------- revision 2.14 date: 91/04/04 01:57:14; author: gk5g; state: Exp; lines added/del: 2/0 Don't use DeclareFont() rule if NO_FONTS_ENV or FONTS_TO_BDF_ENV are defined. Source file: overhead/fonts/fonts/programs/Imakefile Current version: 2.17 revision 2.17 date: 91/05/21 16:49:44; author: gk5g; state: Exp; lines added/del: 2/2 Patch submitted by Bill Cattey: Since the DECMIPS hardware uses video hardware as the VAX which has the stupid hardware limitation of 16x16 pixel cursor size, it too should use the icn16x16 font. . ---------------------------- revision 2.16 date: 91/04/10 16:08:20; author: gk5g; state: Exp; lines added/del: 0/3 Handle NO_FONTS_ENV and FONTS_TO_BDF_ENV in andrew/config/andrew.rls. ---------------------------- revision 2.15 date: 91/04/04 22:10:45; author: gk5g; state: Exp; lines added/del: 4/1 Changed andyoffice12 to andyof12. Added support for FONTS_TO_BDF_ENV and NO_FONTS_ENV. Source file: overhead/fonts/fonts/programs/andyof12.fdb Current version: 1.1 revision 1.1 date: 91/04/04 21:54:20; author: gk5g; state: Exp; Initial revision Source file: overhead/genmake/Imakefile Current version: 1.6 revision 1.6 date: 91/04/02 17:05:41; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: overhead/index/index.c Current version: 2.5 revision 2.5 date: 91/04/02 17:05:55; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix support Source file: overhead/index/indexio.c Current version: 2.4 revision 2.4 date: 91/04/02 17:06:05; author: susan; state: Exp; lines added/del: 8/3 added SCO Unix support Source file: overhead/mail/hdrs/mailconf.h Current version: 2.29 revision 2.29 date: 91/04/09 18:02:24; author: gk5g; state: Exp; lines added/del: 1/1 Patch submitted by Craig Everhart: AMDS as it comes out of the box has unfortunate defaults for how long it waits on one transient error: in particular, the transient error that it can get when checking whether the destination mail domain runs AMDS. This can happen when somebody defines an AFS cell named after a popular mail domain, yet doesn't run servers for that AFS cell. This patch defines a new AndrewSetup option: AMS_CrossCellQueueLifetime. ---------------------------- revision 2.28 date: 91/04/02 17:06:28; author: susan; state: Exp; lines added/del: 6/1 added SCO Unix support Source file: overhead/mail/lib/dropoff.c Current version: 2.18 revision 2.18 date: 91/04/26 17:22:25; author: susan; state: Exp; lines added/del: 5/0 *** empty log message *** ---------------------------- revision 2.17 date: 90/12/06 14:27:47; author: gk5g; state: Exp; lines added/del: 0/1 Removed #include . Source file: overhead/mail/lib/Imakefile Current version: 2.17 revision 2.17 date: 91/04/03 20:31:26; author: gk5g; state: Exp; lines added/del: 10/3 Changed to use SYS_LIBS as second argument to TestingOnlyTesting() rule. Source file: overhead/mail/lib/amsconf.c Current version: 2.5 revision 2.5 date: 91/04/02 17:06:48; author: susan; state: Exp; lines added/del: 1/0 added SCO Unix support Source file: overhead/mail/lib/authret.c Current version: 2.11 revision 2.11 date: 90/11/28 15:03:56; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. Source file: overhead/mail/lib/capture.c Current version: 1.8 revision 1.8 date: 91/04/02 17:07:20; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support Source file: overhead/mail/lib/ckamsdel.c Current version: 2.20 revision 2.20 date: 90/11/28 15:04:05; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. Source file: overhead/mail/lib/fwdvalid.c Current version: 1.13 revision 1.13 date: 90/11/28 15:04:15; author: susan; state: Exp; lines added/del: 2/1 moved andrewos.h to be first include file. Source file: overhead/mail/lib/locname.c Current version: 2.16 revision 2.16 date: 90/11/28 15:04:24; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file. Source file: overhead/mail/lib/mailconf.c Current version: 2.49 revision 2.49 date: 91/04/09 18:04:59; author: gk5g; state: Exp; lines added/del: 4/0 Patch submitted by Craig Everhart: AMDS as it comes out of the box has unfortunate defaults for how long it waits on one transient error: in particular, the transient error that it can get when checking whether the destination mail domain runs AMDS. This can happen when somebody defines an AFS cell named after a popular mail domain, yet doesn't run servers for that AFS cell. This patch implements a new AndrewSetup option: AMS_CrossCellQueueLifetime. ---------------------------- revision 2.48 date: 91/04/09 13:40:49; author: gk5g; state: Exp; lines added/del: 38/2 Added SCO changes. ---------------------------- revision 2.47 date: 90/11/28 15:04:35; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file. Source file: overhead/mail/lib/parseadd.c Current version: 2.8 revision 2.8 date: 91/04/02 17:06:54; author: susan; state: Exp; lines added/del: 10/1 added SCO Unix support Source file: overhead/mail/lib/qmail.c Current version: 2.17 revision 2.17 date: 91/04/02 17:07:10; author: susan; state: Exp; lines added/del: 17/4 added SCO Unix support Source file: overhead/mail/lib/rsearch.c Current version: 2.8 revision 2.8 date: 91/04/10 23:18:04; author: gk5g; state: Exp; lines added/del: 1/1 Put back declaration for getenv(). ---------------------------- revision 2.7 date: 91/04/09 13:36:08; author: gk5g; state: Exp; lines added/del: 3/7 Removed #include . Moved andrewos.h to the top. Removed declaration of getenv, strcpy, strncpy. Source file: overhead/mail/lib/scan822.c Current version: 2.7 revision 2.7 date: 90/11/28 15:04:49; author: susan; state: Exp; lines added/del: 1/1 moved andrewos.h to be first include file. Source file: overhead/mail/lib/stats.c Current version: 2.11 revision 2.11 date: 91/03/29 12:18:48; author: dba; state: Exp; lines added/del: 2/0 Fixed up conflicting declarations of inet_addr() on the hp800. ---------------------------- revision 2.10 date: 90/11/28 15:04:57; author: susan; state: Exp; lines added/del: 1/2 moved andrewos.h to be first include file. Source file: overhead/mail/cmd/Imakefile Current version: 1.5 revision 1.5 date: 91/04/02 17:07:30; author: susan; state: Exp; lines added/del: 2/2 added SCO Unix support Source file: overhead/malloc/malloc.ci Current version: 2.19 revision 2.19 date: 91/05/28 21:49:36; author: gk5g; state: Exp; lines added/del: 2/6 Backed out change for pmax_3 (valloc replaced system malloc). The problem was with the dynamic loading. . ---------------------------- revision 2.18 date: 91/05/09 19:04:54; author: gk5g; state: Exp; lines added/del: 7/12 Removed any attempted hacks to get this library to build on the RS/6000. Only use valloc in the single call to malloc used in our malloc. . ---------------------------- revision 2.17 date: 91/05/05 22:30:58; author: gk5g; state: Exp; lines added/del: 8/4 If sys_pmax_3, define malloc to be valloc. DEC recommends this memory allocator due to the way it word-aligns. . ---------------------------- revision 2.16 date: 91/04/02 17:07:49; author: susan; state: Exp; lines added/del: 5/5 added SCO Unix support Source file: overhead/malloc/plumber.ci Current version: 2.11 revision 2.11 date: 91/05/09 19:04:54; author: gk5g; state: Exp; lines added/del: 3/7 Removed any attempted hacks to get this library to build on the RS/6000. Only use valloc in the single call to malloc used in our malloc. . ---------------------------- revision 2.10 date: 91/05/05 22:30:58; author: gk5g; state: Exp; lines added/del: 8/3 If sys_pmax_3, define malloc to be valloc. DEC recommends this memory allocator due to the way it word-aligns. . Source file: overhead/parsec/Imakefile Current version: 1.5 revision 1.5 date: 91/04/02 17:08:06; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support ---------------------------- revision 1.4 date: 91/01/21 16:32:22; author: gk5g; state: Exp; lines added/del: 1/1 Changed references to {parsec,yyhide}.d to {parsec,yyhide}.doc. This is because on the PS/2 the compiler tries to save files by these names for debugging purposes. Source file: overhead/parsec/parsec.d Current version: 1.4 revision 1.4 date: 91/04/08 15:24:23; author: bobg; state: Exp; lines added/del: 23/20 Fixed a bug in the sample program. Source file: overhead/parsec/parsec.doc Current version: 1.2 revision 1.2 date: 91/04/08 15:24:57; author: bobg; state: Exp; lines added/del: 24/21 Fixed a bug in the sample program. ---------------------------- revision 1.1 date: 91/01/21 16:34:31; author: gk5g; state: Exp; Initial revision Source file: overhead/parsec/yyhide.doc Current version: 1.1 revision 1.1 date: 91/01/21 16:37:10; author: gk5g; state: Exp; Initial revision Source file: overhead/snap2/guardian/cmd/Imakefile Current version: 2.44 revision 2.44 date: 91/04/11 16:11:15; author: gk5g; state: Exp; lines added/del: 1/1 Changed AFSUTILLIB to AFSUTILS. ---------------------------- revision 2.43 date: 91/04/09 17:03:15; author: gk5g; state: Exp; lines added/del: 14/12 If AFS31_ENV is defined we use ${AFSUTILLIB}. ---------------------------- revision 2.42 date: 91/04/04 14:10:12; author: gk5g; state: Exp; lines added/del: 1/1 Added -L library search path spec if LIBDL_ENV is defined. We need to use our shared version of the resolver library. ---------------------------- revision 2.41 date: 91/04/03 16:48:30; author: susan; state: Exp; lines added/del: 8/8 *** empty log message *** ---------------------------- revision 2.40 date: 91/04/02 17:43:43; author: gk5g; state: Exp; lines added/del: 11/4 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. ---------------------------- revision 2.39 date: 91/03/22 17:03:42; author: gk5g; state: Exp; lines added/del: 0/2 Removed references to outdated AFS libraries, libscrypt.a & libr.a. Source file: overhead/snap2/guardian/cmd/demonlog.c Current version: 2.14 revision 2.14 date: 91/04/02 17:09:13; author: susan; state: Exp; lines added/del: 5/1 added SCO Unix support Source file: overhead/snap2/guardian/cmd/fwddecl.h Current version: 1.5 revision 1.5 date: 90/12/21 13:23:29; author: gk5g; state: Exp; lines added/del: 5/5 Disabled routines ReportAuthError() & homeCell() and disabled their forward declarations. ---------------------------- revision 1.4 date: 90/12/17 15:54:15; author: gk5g; state: Exp; lines added/del: 6/4 Commented out forward declarations for outdated routines CellPwdAuth, PwdAuth, and VTokensAuth. Source file: overhead/snap2/guardian/cmd/guardian.c Current version: 2.96 revision 2.96 date: 91/04/09 17:04:26; author: gk5g; state: Exp; lines added/del: 2/2 Removed external declaration of strcmp(). ---------------------------- revision 2.95 date: 91/04/04 13:58:43; author: gk5g; state: Exp; lines added/del: 5/1 Fixed a problem with merging the SCO Unix changes. ---------------------------- revision 2.94 date: 91/04/04 13:48:24; author: gk5g; state: Exp; lines added/del: 2/3 Removed inclusion of outdate AFS include file comauth.h. ---------------------------- revision 2.93 date: 91/04/02 17:08:27; author: susan; state: Exp; lines added/del: 48/4 added SCO Unix support ---------------------------- revision 2.92 date: 91/03/22 17:04:46; author: gk5g; state: Exp; lines added/del: 1/2 Removed reference to outdate AFS header file, comauth.h. ---------------------------- revision 2.91 date: 90/12/21 13:25:01; author: gk5g; state: Exp; lines added/del: 5/3 Disabled routines ReportAuthError() & homeCell() and disabled their forward declarations. ---------------------------- revision 2.90 date: 90/12/21 12:43:04; author: gk5g; state: Exp; lines added/del: 3/1 Disabled some old (I believe) authentication code in really_authenticate(). Remove the code when this has been tested awhile. ---------------------------- revision 2.89 date: 90/12/17 14:10:18; author: gk5g; state: Exp; lines added/del: 32/29 Changes submitted by Bob Oesterlin (IBM Rochester) in support of AFS3.1. Removed code dealing with old-style token gathering. Source file: overhead/snap2/loadserv/Imakefile Current version: 2.17 revision 2.17 date: 91/04/02 17:09:36; author: susan; state: Exp; lines added/del: 2/2 added SCO Unix support . ---------------------------- revision 2.16 date: 91/03/22 17:16:43; author: gk5g; state: Exp; lines added/del: 0/2 Removed reference to outdated AFS libraries libr.a & libscrypt.a. Source file: overhead/snap2/nametime/Imakefile Current version: 2.8 revision 2.8 date: 91/04/03 16:48:16; author: susan; state: Exp; lines added/del: 1/1 addd SCO Unix support ---------------------------- revision 2.7 date: 91/04/02 17:44:14; author: gk5g; state: Exp; lines added/del: 13/1 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. Source file: overhead/snap2/nametime/nametime.c Current version: 2.5 revision 2.5 date: 91/04/02 17:09:53; author: susan; state: Exp; lines added/del: 3/1 . added SCO Unix Source file: overhead/snap2/pcserver/Imakefile Current version: 2.32 revision 2.32 date: 91/04/02 17:10:49; author: susan; state: Exp; lines added/del: 2/2 added SCO Unix support ---------------------------- revision 2.31 date: 91/03/22 17:25:20; author: gk5g; state: Exp; lines added/del: 0/2 Removed reference to outdated AFS libraries libr.a & libscrypt.a. Source file: overhead/snap2/pcserver/pcsexec.c Current version: 2.5 revision 2.5 date: 91/04/02 17:10:24; author: susan; state: Exp; lines added/del: 2/0 added SCO Unix support Source file: overhead/snap2/pcserver/pcsprocs.c Current version: 2.5 revision 2.5 date: 91/04/02 17:10:32; author: susan; state: Exp; lines added/del: 14/7 added SCO Unix support Source file: overhead/snap2/pcserver/pcssnap.c Current version: 2.9 revision 2.9 date: 91/04/03 16:48:02; author: susan; state: Exp; lines added/del: 2/0 addd SCO Unix support Source file: overhead/snap2/pcserver/pcsutils.c Current version: 2.5 revision 2.5 date: 91/04/02 17:10:42; author: susan; state: Exp; lines added/del: 9/2 added SCO Unix support Source file: overhead/snap2/pcserver/pcsvice.c Current version: 2.11 revision 2.11 date: 91/05/03 21:19:51; author: gk5g; state: Exp; lines added/del: 1/6 Removed redefinition of bool_t for PS/2 AIX. It's been done right in AIX. Changed andyenv.h to andrewos.h. . Source file: overhead/snap2/snap2/snapclie.c Current version: 2.5 revision 2.5 date: 90/11/28 15:05:48; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. Source file: overhead/snap2/snap2t/snptclie.c Current version: 1.8 revision 1.8 date: 90/11/28 15:06:26; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. Source file: overhead/util/cmd/Imakefile Current version: 2.5 revision 2.5 date: 91/04/02 17:11:13; author: susan; state: Exp; lines added/del: 2/2 added SCO Unix support Source file: overhead/util/hdrs/tokens.h Current version: 2.7 revision 2.7 date: 90/12/14 20:21:59; author: ajp; state: Exp; lines added/del: 4/4 Fix syntax error in tokens.h ---------------------------- revision 2.6 date: 90/12/06 16:41:57; author: gk5g; state: Exp; lines added/del: 4/6 Changed definition of TOKENS_LEN to be consistent with AFS3.1. Source file: overhead/util/hdrs/util.h Current version: 2.25 revision 2.25 date: 91/04/26 17:00:55; author: gk5g; state: Exp; lines added/del: 5/5 *** empty log message *** Source file: overhead/util/lib/tokunpak.c Current version: 2.21 revision 2.21 date: 90/12/17 13:35:30; author: gk5g; state: Exp; lines added/del: 11/134 Changes submitted by Bob Oesterlin (IBM Rochester) in support of AFS3.1. Removed code dealing with old-style token gathering. ---------------------------- revision 2.20 date: 90/11/28 15:07:50; author: susan; state: Exp; lines added/del: 4/4 moved andrewos.h to be first include file. , Source file: overhead/util/lib/Imakefile Current version: 2.38 revision 2.38 date: 91/04/11 14:45:54; author: gk5g; state: Exp; lines added/del: 0/2 Build ${BASEDIR}/lib/libafs.a even when AFS_ENV is not defined. The routines in that lib are taken from lib/afs/util.a and are NOT AFS-specific. ---------------------------- revision 2.37 date: 91/04/11 14:42:18; author: gk5g; state: Exp; lines added/del: 1/1 Finished putting lcstring and ucstring lin libafs.a. ---------------------------- revision 2.36 date: 91/04/11 14:16:20; author: gk5g; state: Exp; lines added/del: 8/1 Added a new library ${BASEDIR}/lib/libafs.a. This library contains the AFS utility routines lcstring and ucstring. These routines are define in the AFS utility library lib/afs/util.a. We don't want to use this library so we stole those two routines and put them in their own lib so that we can put them last in the macro-list of libs that are to be used to link certain AFS-related ProgramTarget()'s. ---------------------------- revision 2.35 date: 91/04/11 13:56:10; author: gk5g; state: Exp; lines added/del: 2/2 Added ucstring module to libutil ---------------------------- revision 2.34 date: 91/04/04 19:33:59; author: gk5g; state: Exp; lines added/del: 2/2 Removed the function lcstring() from the module ulstrcmp.c. lcstring() was taken from lib/afs/util.a so that library wouldn't be necessary. It is necessary now. On the sun4c version of AFS3.1, several AFS libs need lcstring. So, I pulled lcstring out of ulstrcmp and put it into its own module. ---------------------------- revision 2.33 date: 91/04/04 18:31:37; author: gk5g; state: Exp; lines added/del: 1/1 To be consistent there are now two args to the TestingOnlyTestingRule(LIBS,syslibs). ---------------------------- revision 2.32 date: 91/04/02 17:11:45; author: susan; state: Exp; lines added/del: 19/1 added SCO Unix support Source file: overhead/util/lib/btw.c Current version: 2.17 revision 2.17 date: 91/04/02 17:11:58; author: susan; state: Exp; lines added/del: 8/1 added SCO Unix support Source file: overhead/util/lib/btwp.c Current version: 2.12 revision 2.12 date: 90/11/28 15:07:41; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. , Source file: overhead/util/lib/cellauth.c Current version: 2.20 revision 2.20 date: 90/12/06 14:29:28; author: gk5g; state: Exp; lines added/del: 2/3 Removed #include . Source file: overhead/util/lib/fdplumb.c Current version: 2.10 revision 2.10 date: 91/04/02 17:12:27; author: susan; state: Exp; lines added/del: 4/4 added SCO Unix support ---------------------------- revision 2.9 date: 91/03/29 12:22:51; author: dba; state: Exp; lines added/del: 5/5 Changed ifndef hp900s300 to ifndef hpux so it will work on the 800 as well. Source file: overhead/util/lib/fdplumb6.c Current version: 2.5 revision 2.5 date: 91/04/02 17:12:31; author: susan; state: Exp; lines added/del: 7/2 added SCO Unix support Source file: overhead/util/lib/getcpw.c Current version: 2.14 revision 2.14 date: 91/03/21 15:41:10; author: gk5g; state: Exp; lines added/del: 2/2 Don't initialize passwd struct element pw_quota when system defines POSIX_ENV. Source file: overhead/util/lib/getpty.c Current version: 1.9 revision 1.9 date: 91/01/21 18:17:17; author: gk5g; state: Exp; lines added/del: 48/7 Patch submitted by Todd Inglett: Added O_NOCTTY for POSIX_ENV and some new code for RS/6000. The O_NOCTTY flag prevents getpty() from accidentally acquiring the pty as a controlling terminal. The new code for the RS/6000 opens /dev/ptc to let the system pick a free pseudo-terminal. The other method would often pick a pty that was still in use, but not controlled by a shell. Source file: overhead/util/lib/gtvpwkey.c Current version: 2.10 revision 2.10 date: 91/03/21 16:02:11; author: gk5g; state: Exp; lines added/del: 2/2 Don't initialize passwd struct member pw_quota if POSIX_ENV is defined. Source file: overhead/util/lib/pause.c Current version: 2.7 revision 2.7 date: 91/04/02 17:12:24; author: susan; state: Exp; lines added/del: 3/3 added SCO Unix support Source file: overhead/util/lib/prefs.help Current version: 1.14 revision 1.14 date: 91/05/24 22:51:51; author: gk5g; state: Exp; lines added/del: 2/10 Removed description of AlternateEditor preference. . ---------------------------- revision 1.13 date: 91/05/05 20:38:02; author: gk5g; state: Exp; lines added/del: 41/14 Patch submitted by Bill Cattey: In chatting with the author of VI mode, I promised to document the preference I added which disables the keyboard toggle of VI mode. I also documented how to make EZ come up in VI mode by default. . ---------------------------- revision 1.12 date: 91/05/04 17:25:02; author: rr2b; state: Exp; lines added/del: 53/3 added new scrollbar preferences . ---------------------------- revision 1.11 date: 91/05/04 05:29:08; author: rr2b; state: Exp; lines added/del: 226/39 added info about the menubar preferences . ---------------------------- revision 1.10 date: 91/02/11 18:03:40; author: gk5g; state: Exp; lines added/del: 40/4 Documented the preferences UseProgramNameInTitle, MaxTitleLength, and MaxIconLabelLength. Source file: overhead/util/lib/procstuf.c Current version: 2.8 revision 2.8 date: 91/04/02 17:12:19; author: susan; state: Exp; lines added/del: 4/4 added SCO Unix support ---------------------------- revision 2.7 date: 91/03/29 12:25:41; author: dba; state: Exp; lines added/del: 10/10 Changed hp900s300 to hpux so it will work on the 800 as well. Source file: overhead/util/lib/profile.c Current version: 2.7 revision 2.7 date: 90/11/27 17:09:38; author: ajp; state: Exp; lines added/del: 15/12 Added ATT code to allow control of global profile reading from an environment variable. Source file: overhead/util/lib/setprof.c Current version: 2.14 revision 2.14 date: 91/05/24 22:44:52; author: gk5g; state: Exp; lines added/del: 10/6 When the profile read is global (not writable), we must create a new ~/preferences for the user in order to save a preference value. . ---------------------------- revision 2.13 date: 91/04/02 17:12:34; author: susan; state: Exp; lines added/del: 6/2 added SCO Unix support Source file: overhead/util/lib/setup.help Current version: 1.4 revision 1.4 date: 91/04/09 17:58:12; author: gk5g; state: Exp; lines added/del: 13/10 Patch submitted by Craig Everhart: Description of new AndrewSetup option AMS_CrossCellQueueLifetime. Source file: overhead/util/lib/times.c Current version: 1.12 revision 1.12 date: 91/04/02 17:12:43; author: susan; state: Exp; lines added/del: 1/1 added SCO Unix support ---------------------------- revision 1.11 date: 91/03/29 12:29:55; author: dba; state: Exp; lines added/del: 8/2 Added support for hp800. Source file: overhead/util/lib/tokpak.c Current version: 2.20 revision 2.20 date: 90/12/17 14:03:01; author: gk5g; state: Exp; lines added/del: 2/93 Changes submitted by Bob Oesterlin (IBM Rochester) in support of AFS3.1. Removed code dealing with old-style token gathering. Source file: overhead/util/lib/ulstrcmp.c Current version: 2.8 revision 2.8 date: 91/04/04 19:36:32; author: gk5g; state: Exp; lines added/del: 3/25 Removed the function lcstring() from the module ulstrcmp.c. lcstring() was taken from lib/afs/util.a so that library wouldn't be necessary. It is necessary now. On the sun4c version of AFS3.1, several AFS libs need lcstring. So, I pulled lcstring out of ulstrcmp and put it into its own module. Source file: overhead/util/lib/usignal.c Current version: 2.6 revision 2.6 date: 91/04/02 17:12:39; author: susan; state: Exp; lines added/del: 4/4 added SCO Unix support Source file: overhead/util/lib/wpbase.c Current version: 2.15 revision 2.15 date: 90/11/28 15:07:58; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. , Source file: overhead/util/lib/ossup.c Current version: 1.1 revision 1.1 date: 91/04/02 17:12:51; author: susan; state: Exp; Initial revision Source file: overhead/util/lib/osasm.s Current version: 1.1 revision 1.1 date: 91/04/02 17:13:04; author: susan; state: Exp; Initial revision Source file: overhead/util/lib/lcstring.c Current version: 1.2 revision 1.2 date: 91/04/11 13:53:41; author: gk5g; state: Exp; lines added/del: 3/5 Changed the top-level comment to tell the truth. ---------------------------- revision 1.1 date: 91/04/04 19:36:57; author: gk5g; state: Exp; Initial revision Source file: overhead/util/lib/ucstring.c Current version: 1.1 revision 1.1 date: 91/04/11 13:54:19; author: gk5g; state: Exp; Initial revision Source file: overhead/wputil/Imakefile Current version: 1.32 revision 1.32 date: 91/04/09 16:57:17; author: gk5g; state: Exp; lines added/del: 1/1 Now link against ${DESLIB} too. ---------------------------- revision 1.31 date: 91/04/02 17:59:51; author: gk5g; state: Exp; lines added/del: 10/3 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. Source file: overhead/wputil/brisk.c Current version: 1.5 revision 1.5 date: 91/01/22 15:28:07; author: gk5g; state: Exp; lines added/del: 6/2 The resolver symbol _res is used only if RESOLVER_ENV is defined. Source file: overhead/wputil/genaccts.c Current version: 5.15 revision 5.15 date: 90/12/06 18:26:57; author: gk5g; state: Exp; lines added/del: 3/1 Don't delare malloc-family routines on RS/6000. ---------------------------- revision 5.14 date: 90/11/28 15:09:37; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. Source file: overhead/wputil/makeboth.c Current version: 5.31 revision 5.31 date: 90/12/06 18:28:11; author: gk5g; state: Exp; lines added/del: 3/1 Don't delare malloc-family routines on RS/6000. ---------------------------- revision 5.30 date: 90/11/28 15:09:48; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. Source file: overhead/wpi/Imakefile Current version: 1.18 revision 1.18 date: 91/04/02 17:59:04; author: gk5g; state: Exp; lines added/del: 12/5 Changed so those platforms that define LIBDL_ENV can use a shared resolver library. Source file: overhead/wpi/wpi.c Current version: 1.24 revision 1.24 date: 91/03/28 13:24:47; author: mcinerny; state: Exp; lines added/del: 4/1 Fixed a bug in "forward" that caused it to dump core on bogus login names. Who would want to do this anyways? Oh well. Source file: overhead/pobbconf/AMS-Server.pobb Current version: 1.9 revision 1.9 date: 91/04/09 18:18:24; author: gk5g; state: Exp; lines added/del: 1/0 Patch submitted by Craig Everhart: AMDS as it comes out of the box has unfortunate defaults for how long it waits on one transient error: in particular, the transient error that it can get when checking whether the destination mail domain runs AMDS. This can happen when somebody defines an AFS cell named after a popular mail domain, yet doesn't run servers for that AFS cell. This patch implements a new AndrewSetup option: AMS_CrossCellQueueLifetime. Source file: overhead/pobbconf/BBD.pobb Current version: 1.61 revision 1.61 date: 91/05/03 22:34:11; author: gk5g; state: Exp; lines added/del: 6/2 I just discovered a (another) bug in csh, and it requires a work-around in the BBD script. . ---------------------------- revision 1.60 date: 91/04/24 13:57:05; author: gk5g; state: Exp; lines added/del: 0/0 Patch submitted by Craig Everhart: We had a problem with the po/bb support job BBD not being able to find an ``fs'' command for the listquota bboard (e.g. andrew.daemons.bbquota), if ``fs'' isn't in the standard $PATH. Other sites may want this also. The right answer here would be to pass in AFSBASEDIR to pobbconf, in the same way that ANDREWDIR is passed in, but this is messy, since you'd have to get a quoted form from something like andrdir.h, which is itself built from the genhdr.c program in overhead/util/hdrs, which gets its information from allsys.h/system.h/site.h rather than allsys.mcr/system.mcr/site.mcr. Yuk. Thus, in the BBD script, we look for ``fs'' under some likely rocks, and don't press the issue too far here. Source file: overhead/pobbconf/config.monitor.pobb Current version: 1.8 revision 1.8 date: 91/05/03 22:28:33; author: gk5g; state: Exp; lines added/del: 1/1 Patches submitted by Craig Everhart: Pat Barron pointed out a bug in two scripts that pobbconf uses. They try to set their PATH variable, but get the syntax wrong. . Source file: overhead/pobbconf/pobb-install.pobb Current version: 1.49 revision 1.49 date: 91/05/24 17:44:26; author: gk5g; state: Exp; lines added/del: 1/0 Patch submitted by Craig Everhart: This patch will help the address-capture process get started, if a site chooses to run it. .s Source file: overhead/pobbconf/pobb.shutdown.pobb Current version: 1.5 revision 1.5 date: 91/05/03 22:28:33; author: gk5g; state: Exp; lines added/del: 1/1 Patches submitted by Craig Everhart: Pat Barron pointed out a bug in two scripts that pobbconf uses. They try to set their PATH variable, but get the syntax wrong. . Source file: overhead/pobbconf/pobbscpt.c Current version: 1.43 revision 1.43 date: 91/04/09 18:19:20; author: gk5g; state: Exp; lines added/del: 1/0 Patch submitted by Craig Everhart: AMDS as it comes out of the box has unfortunate defaults for how long it waits on one transient error: in particular, the transient error that it can get when checking whether the destination mail domain runs AMDS. This can happen when somebody defines an AFS cell named after a popular mail domain, yet doesn't run servers for that AFS cell. This patch implements a new AndrewSetup option: AMS_CrossCellQueueLifetime. Source file: overhead/pobbconf/queueBBD.pobb Current version: 1.5 revision 1.5 date: 91/04/24 13:54:40; author: gk5g; state: Exp; lines added/del: 0/0 Patch submitted by Craig Everhart: A bug fix that I discovered while trying to enqueue the single job (bbquota) by hand. *** patchlevel.h Thu Jan 10 14:56:48 1991 --- patchlevel.h.NEW Thu May 30 19:10:55 1991 *************** *** 1 **** ! This is the Andrew component of the X.V11R4 distribution, patch level 9 --- 1 ---- ! This is the Andrew component of the X.V11R4 distribution, patch level 10 ***README Fri Jun 14 13:06:48 1991 --- README.NEW Fri Jun 14 13:05:30 1991 *************** *** 33,39 **** Mailing list: info-andrew@andrew.cmu.edu (info-andrew-request@andrew.cmu.edu for subscriptions) ! Newsgroup: internet.info-andrew 1 Installation Instructions for the Andrew Distribution --- 33,39 ---- Mailing list: info-andrew@andrew.cmu.edu (info-andrew-request@andrew.cmu.edu for subscriptions) ! Newsgroup: comp.soft-sys.andrew 1 Installation Instructions for the Andrew Distribution *************** *** 57,64 **** The Andrew Distribution is portable to a number of system types. Andrew is able to run on RT AOS 3.4, RT AIX 2.2.1, RS/6000 AIX3.1, PS/2 AIX1.2, ! Sun3 3.5, Vax Ultrix 3.0, Vax BSD, DEC MIPS, Apollo, HP, and Macintosh ! II MacMach. We run it on RT AOS 3.4 and Sun3 3.5. As shipped, the Andrew Toolkit distribution is about 55 megabytes of source that generates many megabytes of object files, libraries, fonts --- 57,64 ---- The Andrew Distribution is portable to a number of system types. Andrew is able to run on RT AOS 3.4, RT AIX 2.2.1, RS/6000 AIX3.1, PS/2 AIX1.2, ! Sun3 3.5, Sun3 4.1, Sun4 4.1, Vax Ultrix 3.1, Vax BSD, DEC MIPS, Apollo, ! HP, and Macintosh II MacMach. We run it on RT AOS 3.4 and Sun3 3.5. As shipped, the Andrew Toolkit distribution is about 55 megabytes of source that generates many megabytes of object files, libraries, fonts *************** *** 127,146 **** IBM RT AOS December 1988 rt_r3 IBM RT AIX 2.2.1 rt_aix221 ! Sun 2 SunOS 3.5 sun2_35 ! Sun 3 SunOS 3.5 sun3_35 ! Sun 3 SunOS 4.0 sun3_4 ! Sun 4 SunOS 4.0 sun4_40 DEC Vax Ultrix 2.2 vax_22 DEC Vax Ultrix 3.0 vax_3 DEC Vax BSD (4.3) vax_43 ! HP 300 HP UX hp300 ! Macintosh II MacMach mac2_51 ! Apollo DomainOS apollo68k ! DEC MIPS Ultrix 3.0 pmax_3 ! IBM PS/2 M70/80 AIX 1.1 ps_aix11 IBM PS/2 M70/80 AIX 1.2 ps_aix12 ! IBM RS/6000 AIX3.1 rs_aix31 1.2.1 The allsys.mcr, system.mcr, and site.mcr Files --- 127,146 ---- IBM RT AOS December 1988 rt_r3 IBM RT AIX 2.2.1 rt_aix221 ! Sun 2 SunOS 3.5 sun2_35 ! Sun 3 SunOS 3.5 sun3_35 ! Sun 3 SunOS 4.0 sun3_4 ! Sun 4 SunOS 4.0 sun4_40 ! Sun 4 SunOS 4.1 sun4_41 DEC Vax Ultrix 2.2 vax_22 DEC Vax Ultrix 3.0 vax_3 DEC Vax BSD (4.3) vax_43 ! HP 300 HP UX hp300 ! Macintosh II MacMach mac2_51 ! Apollo DomainOS apollo68k ! DEC MIPS Ultrix 3.0 pmax_3 IBM PS/2 M70/80 AIX 1.2 ps_aix12 ! IBM RS/6000 AIX3.1 rs_aix31 1.2.1 The allsys.mcr, system.mcr, and site.mcr Files *************** *** 161,167 **** variables, so it's reasonable to override variables such as XUTILDIR in site.mcr.) ! XBASEDIR [Default: /] XBASEDIR should point to the root of your installed X tree. X include files are assumed to be in $(XBASEDIR)/usr/include/X11. --- 161,167 ---- variables, so it's reasonable to override variables such as XUTILDIR in site.mcr.) ! XBASEDIR [Default: /] XBASEDIR should point to the root of your installed X tree. X include files are assumed to be in $(XBASEDIR)/usr/include/X11. *************** *** 169,175 **** cannot handle paths like ``//usr/include/X11'' (with the double slash), you may wish to redefine this as the null string. ! BASEDIR [Default: DEFAULT_ANDREWDIR_ENV, from allsys.h/site.h] BASEDIR specifies where you want the root of the installed Andrew tree of system software. It is not possible to build --- 169,175 ---- cannot handle paths like ``//usr/include/X11'' (with the double slash), you may wish to redefine this as the null string. ! BASEDIR [Default: DEFAULT_ANDREWDIR_ENV, from allsys.h/site.h] BASEDIR specifies where you want the root of the installed Andrew tree of system software. It is not possible to build *************** *** 187,193 **** source tree. That is, in general, when you start, BASEDIR will point to an empty directory. ! DESTDIR [Default: $(BASEDIR)] DESTDIR should always be identical to BASEDIR for system builds. It may be set to other values only in the course of testing --- 187,193 ---- source tree. That is, in general, when you start, BASEDIR will point to an empty directory. ! DESTDIR [Default: $(BASEDIR)] DESTDIR should always be identical to BASEDIR for system builds. It may be set to other values only in the course of testing *************** *** 197,217 **** AFSBASEDIR denotes the full path to files exported by an AFS (Andrew File System) installation. (AFS is a distributed file ! system available from Transarc Corporation.) It is used only if ! AFS_ENV is defined; otherwise, it is ignored entirely. If it is ! used, it is presumed that AFSBASEDIR/include/afs, ! AFSBASEDIR/lib/afs, and AFSBASEDIR/bin exist. Other specific ! requirements are listed in the discussion of AFS_ENV and ! AFS30_ENV in the section describing the *.h files. The default value is /usr/andy . Override it in your site.mcr file if you need to. CDEBUGFLAGS [Default: -O] CDEBUGFLAGS are passed to the C compiler when compiling programs. ! XUTILDIR [Default: /usr/local/bin] IMAKE [Default: $(XUTILDIR)/imake] XMAKEDEPEND [Default: $(XUTILDIR)/makedepend] --- 197,231 ---- AFSBASEDIR denotes the full path to files exported by an AFS (Andrew File System) installation. (AFS is a distributed file ! system available from Transarc Corporation. For more ! information, please send mail to afsinfo@transarc.com.) It is ! used only if AFS_ENV is defined; otherwise, it is ignored ! entirely. If it is used, it is presumed that ! AFSBASEDIR/include/afs, AFSBASEDIR/lib/afs, and AFSBASEDIR/bin ! exist. Other specific requirements are listed in the discussion ! of AFS_ENV and AFS30_ENV in the section describing the *.h files. The default value is /usr/andy . Override it in your site.mcr file if you need to. + WMBASEDIR [Default: ] + + WMBASEDIR can be used to specify the root location of the old + ITC window manager (WM) include files and libraries. WM is no + longer supported by the ITC. If you specify this macro then you + should also define WM_ENV in your site.h file (see sect. 1.2.4). + If WM_ENV is defined and WMBASEDIR is specified, it is presumed + that $(WMBASEDIR)/lib/libwm.a and + $(WMBASEDIR)/include/{font.h,wmclient.h} exist. + + There is no default value for WMBASEDIR. Set WMBASEDIR in your + site.mcr file if you want to run ATK applications with WM. + CDEBUGFLAGS [Default: -O] CDEBUGFLAGS are passed to the C compiler when compiling programs. ! XUTILDIR [Default: /usr/local/bin] IMAKE [Default: $(XUTILDIR)/imake] XMAKEDEPEND [Default: $(XUTILDIR)/makedepend] *************** *** 221,232 **** and util/makedepend/makedepend. You can set either IMAKE and XMAKEDEPEND, or XUTILDIR, to point to the appropriate place. ! XINCDIR [Default: $(XBASEDIR)/usr/include/X11] XMKFONTDIR [Default: $(XBASEDIR)/usr/bin/X11/mkfontdir] ! XLIBDIR [Default: $(XBASEDIR)/usr/lib] ! XFC [Default: $(XBASEDIR)/usr/bin/X11/bdftosnf, or under ! RELEASE2_ENV, $(XSRCDIR)/fonts/compiler/fc] ! XSRCDIR [Default: empty string] These are miscellaneous X-related absolute paths. XINCDIR needs to point to where your X include files are installed; it is used --- 235,246 ---- and util/makedepend/makedepend. You can set either IMAKE and XMAKEDEPEND, or XUTILDIR, to point to the appropriate place. ! XINCDIR [Default: $(XBASEDIR)/usr/include/X11] XMKFONTDIR [Default: $(XBASEDIR)/usr/bin/X11/mkfontdir] ! XLIBDIR [Default: $(XBASEDIR)/usr/lib] ! XFC [Default: $(XBASEDIR)/usr/bin/X11/bdftosnf, or ! under RELEASE2_ENV, $(XSRCDIR)/fonts/compiler/fc] ! XSRCDIR [Default: empty string] These are miscellaneous X-related absolute paths. XINCDIR needs to point to where your X include files are installed; it is used *************** *** 261,267 **** its interface to Andrew. The overhead/mail/lib/valhost.c file contains suggestions for what to do if this is not the case. ! INSTALL [Default: install] INSTALL denotes the name of the install program on your system. If you do not have an install program, or if your install --- 275,281 ---- its interface to Andrew. The overhead/mail/lib/valhost.c file contains suggestions for what to do if this is not the case. ! INSTALL [Default: install] INSTALL denotes the name of the install program on your system. If you do not have an install program, or if your install *************** *** 277,291 **** Additional definitions are unlikely to change. However, you may want to check these values: ! SHELL [Default: /bin/sh] SHELL specifies the path to the Bourne shell. ! CSHELL [Default: /bin/csh] CSHELL specifies the path to the C shell. ! CC [Default: cc] C compiler to use. On the IBM RT/PC, it is the hc Metaware compiler. On other systems, it is the pcc compiler. --- 291,305 ---- Additional definitions are unlikely to change. However, you may want to check these values: ! SHELL [Default: /bin/sh] SHELL specifies the path to the Bourne shell. ! CSHELL [Default: /bin/csh] CSHELL specifies the path to the C shell. ! CC [Default: cc] C compiler to use. On the IBM RT/PC, it is the hc Metaware compiler. On other systems, it is the pcc compiler. *************** *** 301,307 **** for the console program. You probably need to be concerned with only the following entries: ! _SITE_NON_ANDREW_MAIL [Default: /usr/spool/mail] Directory where console should look to see if incoming mail has arrived. --- 315,321 ---- for the console program. You probably need to be concerned with only the following entries: ! _SITE_NON_ANDREW_MAIL [Default: /usr/spool/mail] Directory where console should look to see if incoming mail has arrived. *************** *** 311,334 **** Directory where console should look to see if any outstanding printing requests are waiting. ! _SITE_LOGFILE [Default: /tmp/ConsoleLog] Default file where console logs should be written when requested by the user of console. ! _SITE_MTAB [Default: /etc/mtab] File that console should use for obtaining information about the mounted file systems. ! _SITE_BIN_SH [Default: /bin/sh] Default shell to use for exec'ing sub-programs. ! _SITE_DEV_TTY [Default: /dev/tty] ! _SITE_DEV_PTYP [Default: /dev/ptyp] _SITE_DEV_CONSOLE [Default: /dev/console] --- 325,348 ---- Directory where console should look to see if any outstanding printing requests are waiting. ! _SITE_LOGFILE [Default: /tmp/ConsoleLog] Default file where console logs should be written when requested by the user of console. ! _SITE_MTAB [Default: /etc/mtab] File that console should use for obtaining information about the mounted file systems. ! _SITE_BIN_SH [Default: /bin/sh] Default shell to use for exec'ing sub-programs. ! _SITE_DEV_TTY [Default: /dev/tty] ! _SITE_DEV_PTYP [Default: /dev/ptyp] _SITE_DEV_CONSOLE [Default: /dev/console] *************** *** 339,345 **** Device that console should use to obtain memory statistics. ! _SITE_VMUNIX [Default: /vmunix] File where console should get information about the kernel's symbol table. --- 353,359 ---- Device that console should use to obtain memory statistics. ! _SITE_VMUNIX [Default: /vmunix] File where console should get information about the kernel's symbol table. *************** *** 408,446 **** description of the space requirements for setting certain switches is presented later in this document. ! AMS_ENV [Default: defined] AMS_ENV is defined if the Andrew Message System should be built. This is the messages program and related libraries and programs. ! AMS_DELIVERY_ENV [Default: not defined] AMS_DELIVERY_ENV is defined if the Andrew Message Delivery System is to be built, regardless of whether it is expected to ! be used locally. Also see RUN_AMDS_ENV in a following section. ! WHITEPAGES_ENV [Default: not defined] WHITEPAGES_ENV is defined if the white pages facility (including phonetic name lookup) is to be built and used by the Andrew Message System. ! SNAP_ENV [Default: not defined] SNAP_ENV is defined if the Message Server is to be built. ! WM_ENV [Default: not defined] ! WM_ENV is defined if the Andrew Toolkit is to be built for the ! native Andrew Window System (wm). WM support is not available ! on the X tape distribution. ! X11_ENV [Default: defined] X11_ENV is defined if the Andrew Toolkit is to be built for the X.11 Window System. ! PRE_X11R4_ENV [Default: not defined] PRE_X11R4 should be defined if you will be linking against X11 header files and libraries that come from versions of X11 prior --- 422,468 ---- description of the space requirements for setting certain switches is presented later in this document. ! AMS_ENV [Default: defined] AMS_ENV is defined if the Andrew Message System should be built. This is the messages program and related libraries and programs. ! AMS_DELIVERY_ENV [Default: not defined] AMS_DELIVERY_ENV is defined if the Andrew Message Delivery System is to be built, regardless of whether it is expected to ! be used locally. Also see RUN_AMDS_ENV in a following section. ! Note: The mail and sendmail programs will not automatically be ! replaced with the versions that call AMS. You must install ! these programs by hand after the system has been built ! successfully. These programs will be built and will be located ! in andrew/ams/delivery/{mail,sendmail}. + WHITEPAGES_ENV [Default: not defined] + WHITEPAGES_ENV is defined if the white pages facility (including phonetic name lookup) is to be built and used by the Andrew Message System. ! SNAP_ENV [Default: not defined] SNAP_ENV is defined if the Message Server is to be built. ! WM_ENV [Default: not defined] ! WM_ENV should be defined if you want to build the Andrew Toolkit ! to run on the unsupported ITC Window Manager (WM) which is not ! provided in this distribution. You can specify the root ! location of your WM include files and libraries by defining ! WMBASEDIR in your site.mcr file. ! X11_ENV [Default: defined] X11_ENV is defined if the Andrew Toolkit is to be built for the X.11 Window System. ! PRE_X11R4_ENV [Default: not defined] PRE_X11R4 should be defined if you will be linking against X11 header files and libraries that come from versions of X11 prior *************** *** 458,491 **** has led to multiply defined symbols. If this occurs, you can undefine this symbol and rebuild atk/basics and atk/apps. ! DEBUG_MALLOC_ENV [Default: not defined] DEBUG_MALLOC_ENV is defined if the debugging version of the Andrew Toolkit memory management package should be used. Its definition implies the definition of ANDREW_MALLOC_ENV. ! ODA_ENV [Default: not defined] ODA_ENV controls the construction of the ODA tool kit and its associated translators. ! CONTRIB_ENV [Default: not defined] CONTRIB_ENV controls the construction of the contributed ! software found under source directory ./contrib . At present, ! this includes various ATK mode packages and an experimental ! hyper-link inset. ! MK_BASIC_UTILS [Default: not defined] ! MK_BASIC_INSETS [Default: defined] ! MK_BLD_BLKS [Default: defined] ! MK_HELP [Default: defined] ! MK_TEXT_EXT [Default: defined] ! MK_AUTHORING [Default: not defined] ! MK_AUX_UTILS [Default: not defined] ! MK_AUX_INSETS [Default: not defined] ! MK_EXAMPLES [Default: not defined] These flags control the building of groups of software; the core of the ATK is not dependent upon these flags, but will be built if any part of the ATK is built. Normally, these flags are all --- 480,581 ---- has led to multiply defined symbols. If this occurs, you can undefine this symbol and rebuild atk/basics and atk/apps. ! DEBUG_MALLOC_ENV [Default: not defined] DEBUG_MALLOC_ENV is defined if the debugging version of the Andrew Toolkit memory management package should be used. Its definition implies the definition of ANDREW_MALLOC_ENV. ! ODA_ENV [Default: not defined] ODA_ENV controls the construction of the ODA tool kit and its associated translators. ! SITE_ENV [Default: not defined] + SITE_ENV controls the construction of site specific Andrew + applications. The source for such applications are meant to be + placed in the directory $(TOPDIR)/site. See further + documentation in $(TOPDIR)/site/README.site.ez. + + NO_FONTS_ENV [Default: not defined] + + NO_FONTS_ENV controls whether or not the Andrew fonts will get + built. Some sites, that make heavy use of Xterminals or support + many different display types, may find it convenient to not + convert the fonts to any specific server format. By default + this symbol is not defined and, thus, the fonts are created and + installed during the build process. Define this symbol in your + site.h file if you do not want the Andrew fonts to be built. + + FONTS_TO_BDF_ENV [Default: not defined] + + FONTS_TO_BDF_ENV controls whether or not the Andrew fonts will + be converted into their Server Normal Format (.snf) during the + build process. It may be convenient to leave the fonts in + Bitmap Distribution Format (.bdf) when it is necessary to + convert these to various different Server Normal Formats + corresponding to the various X servers that may exist at your + site. If you define this symbol the result will be that all of + the Andrew fonts will be installed into ${DESTDIR}/X11fonts in + BDF. You can then run self-created font conversion scripts to + go to the various final formats. + + OPENWINDOWS_ENV [Default: not defined] + + If you want to run Andrew applications under Open Windows, + define this symbol in your site.h file. If you define this + symbol, you should set your path to include the Open Windows + binaries (usually /usr/openwin/bin). Open Windows is available + only on Sun platforms. As such, all Sun config system.mcr files + include a CONVERTFONT macro to be defined as + /usr/openwin/bin/convertfont. You can override this default + value in your site.mcr file. + + OLD_ULTRIX_ENV [Default: not defined] + + Some older version of the Ultrix operating system had a bug that + caused passwords to be echoed in the typescript program. Define + this symbol in your site.h file if you are using a version of + Ultrix that has this bug. + + CONTRIB_ENV [Default: not defined] + CONTRIB_ENV controls the construction of the contributed ! software found under source directory ./contrib. At present, ! this includes various classes for viewing programming language ! text files, a slew of utilities and classes submitted by MIT, ! and the termulator shell interface (tm). ! ISO80_FONTS_ENV [Default: not defined] + ISO80_FONTS_ENV controls which text fonts are used by Andrew + applications. By default, the fonts supplied with the Andrew + distribution are used. If ISO80_FONTS_ENV is defined in site.h, + then a different font.alias file is installed to supply pointers + to the X11 R4 fonts that comply with the ISO 8859 defined + international character set. For sites that have these fonts, + this is probably the preferred option, since it will make + accented characters available to users and programmers in most + applications, including messages. See the cpchar help file for + details on how to use them. This option also eliminates the + need for these additional fonts to be installed in the + destination directory. The only known drawback is that since + these fonts have to leave room for accents over capital vowels, + they are all defined as taller then their Andrew counterparts. + Thus, for a given size window, fewer lines of text will be + displayed. + + MK_BASIC_UTILS [Default: not defined] + MK_BASIC_INSETS [Default: defined] + MK_BLD_BLKS [Default: defined] + MK_HELP [Default: defined] + MK_TEXT_EXT [Default: defined] + MK_AUTHORING [Default: not defined] + MK_AUX_UTILS [Default: not defined] + MK_AUX_INSETS [Default: not defined] + MK_EXAMPLES [Default: not defined] + These flags control the building of groups of software; the core of the ATK is not dependent upon these flags, but will be built if any part of the ATK is built. Normally, these flags are all *************** *** 494,500 **** MK_BASIC_UTILS (= console + ezprint + champ + preview) MK_BASIC_INSETS (= eq + fad + table) MK_BLD_BLKS (= apt + org + bush + zip + chart + calc) ! MK_HELP (= glist + rofftext + help) MK_TEXT_EXT (= ctext + lookz) MK_AUTHORING (= value + lset + controllers + music + ness) MK_AUX_UTILS (= datacat + toez) --- 584,590 ---- MK_BASIC_UTILS (= console + ezprint + champ + preview) MK_BASIC_INSETS (= eq + fad + table) MK_BLD_BLKS (= apt + org + bush + zip + chart + calc) ! MK_HELP (= glist + rofftext + help) MK_TEXT_EXT (= ctext + lookz) MK_AUTHORING (= value + lset + controllers + music + ness) MK_AUX_UTILS (= datacat + toez) *************** *** 550,556 **** your environment, describing whether or not various facilities are available, where and how the software is to be installed, etc. ! LINKINSTALL_ENV [Default: defined] LINKINSTALL_ENV controls the method by which constructed files are installed. The choice is to copy or link the files. If --- 640,646 ---- your environment, describing whether or not various facilities are available, where and how the software is to be installed, etc. ! LINKINSTALL_ENV [Default: defined] LINKINSTALL_ENV controls the method by which constructed files are installed. The choice is to copy or link the files. If *************** *** 559,570 **** (copying) the binaries, libraries, etc. into $(DESTDIR). This saves considerable space. ! AFS_ENV [Default: not defined] AFS_ENV is defined if the Andrew File System is being used. This is a distributed file system available from Transarc ! Corporation. If AFS_ENV is defined, it is assumed that the ! following files will be available under AFSBASEDIR : include/afs/afsint.h include/afs/auth.h include/afs/cellconfig.h include/afs/print.h include/afs/prserver.h include/afs/comauth.h --- 649,661 ---- (copying) the binaries, libraries, etc. into $(DESTDIR). This saves considerable space. ! AFS_ENV [Default: not defined] AFS_ENV is defined if the Andrew File System is being used. This is a distributed file system available from Transarc ! Corporation. For more information, please send mail to ! afsinfo@transarc.com If AFS_ENV is defined, it is assumed that ! the following files will be available under AFSBASEDIR : include/afs/afsint.h include/afs/auth.h include/afs/cellconfig.h include/afs/print.h include/afs/prserver.h include/afs/comauth.h *************** *** 572,587 **** include/afs/prs_fs.h include/afs/venus.h include/afs/vice.h include/rx/xdr.h lib/afs/libauth.a lib/afs/libsys.a lib/librx.a lib/liblwp.a - If vopcon is to be built from atk/console/cmd, other files - needed under AFSBASEDIR are: - include/lwp.h include/r/r.h lib/afs/libcont.a - lib/afs/libafsint.a lib/libr.a lib/liblwp.a If SNAP_ENV is also defined, other files needed under AFSBASEDIR are: lib/afs/librauth.a lib/afs/libacl.a lib/libr.a lib/libscrypt.a If RUN_AMDS_ENV is also defined, so that overhead/pobbconf will be built, AFSBASEDIR/bin/fs will also be needed. ! AFS30_ENV [Default: not defined] AFS30_ENV is defined if version 3.0 or later of the Andrew File System (including the protection server) is being used. If --- 663,674 ---- include/afs/prs_fs.h include/afs/venus.h include/afs/vice.h include/rx/xdr.h lib/afs/libauth.a lib/afs/libsys.a lib/librx.a lib/liblwp.a If SNAP_ENV is also defined, other files needed under AFSBASEDIR are: lib/afs/librauth.a lib/afs/libacl.a lib/libr.a lib/libscrypt.a If RUN_AMDS_ENV is also defined, so that overhead/pobbconf will be built, AFSBASEDIR/bin/fs will also be needed. ! AFS30_ENV [Default: not defined] AFS30_ENV is defined if version 3.0 or later of the Andrew File System (including the protection server) is being used. If *************** *** 593,600 **** include/afs/prerror.h lib/afs/libprot.a lib/libubik.a lib/librxkad.a lib/libscrypt.a lib/afs/libcom_err.a ! RUN_AMDS_ENV [Default: not defined] RUN_AMDS_ENV is defined is the Andrew Message Delivery System is to be run at the site. This option affects only the default option values in mail system configuration, specified in the --- 680,698 ---- include/afs/prerror.h lib/afs/libprot.a lib/libubik.a lib/librxkad.a lib/libscrypt.a lib/afs/libcom_err.a ! AFS31_ENV [Default: not defined] + AFS31_ENV is defined if version 3.1 or later of the Andrew File + System (including the protection server) is being used. If + AFS31_ENV is defined, so should AFS30_ENV be. If this is + defined, it is assumed that the following files will be + available under AFSBASEDIR, in addition to those listed in the + basic AFS_ENV discussion: + + lib/afs/libdes.a + + RUN_AMDS_ENV [Default: not defined] + RUN_AMDS_ENV is defined is the Andrew Message Delivery System is to be run at the site. This option affects only the default option values in mail system configuration, specified in the *************** *** 604,610 **** AMS_DELIVERY_ENV in the previous section for actually building the delivery system. ! RESOLVER_ENV [Default: defined] RESOLVER_ENV is defined if the Internet Domain Name Resolver is to be used. See also the discussion for the symbol RESOLVLIB in --- 702,708 ---- AMS_DELIVERY_ENV in the previous section for actually building the delivery system. ! RESOLVER_ENV [Default: defined] RESOLVER_ENV is defined if the Internet Domain Name Resolver is to be used. See also the discussion for the symbol RESOLVLIB in *************** *** 612,618 **** is defined, RESOLVLIB will be used as the path to the resolver library routines. ! DITROFF_ENV [Default: defined] DITROFF_ENV is defined if ditroff is available for printing Andrew Toolkit documents. (see installation of printing.) --- 710,716 ---- is defined, RESOLVLIB will be used as the path to the resolver library routines. ! DITROFF_ENV [Default: defined] DITROFF_ENV is defined if ditroff is available for printing Andrew Toolkit documents. (see installation of printing.) *************** *** 646,653 **** LOCAL_ANDREW_SETUP_ENV [Default: not defined] ! The AndrewSetup mechanism, described in setup.help, is used for ! specifying system options to Andrew software at execution time. LOCAL_ANDREW_SETUP_ENV is defined if an additional path (or paths) for the AndrewSetup file should be compiled into Andrew software. --- 744,752 ---- LOCAL_ANDREW_SETUP_ENV [Default: not defined] ! The AndrewSetup mechanism, described in ! ./overhead/util/lib/setup.help, is used for specifying system ! options to Andrew software at execution time. LOCAL_ANDREW_SETUP_ENV is defined if an additional path (or paths) for the AndrewSetup file should be compiled into Andrew software. *************** *** 705,711 **** Delivery System, can use the ``ndbm'' package to manage small local databases. ! GETDOMAIN_ENV [Default: defined for only some platforms] GETDOMAIN_ENV, if defined, says that the getdomainname(2) call is available on this system and may be concatenated with the --- 804,810 ---- Delivery System, can use the ``ndbm'' package to manage small local databases. ! GETDOMAIN_ENV [Default: defined for only some platforms] GETDOMAIN_ENV, if defined, says that the getdomainname(2) call is available on this system and may be concatenated with the *************** *** 715,721 **** platform-dependent system.h file for all Suns, for Vax BSD, and for Vax Ultrix version 3.0 and later. ! RELEASE2_ENV [Default: not defined] RELEASE2_ENV controls the use of some X.V11R2 specific files. By default, this is undefined (which then assumes an X11 release --- 814,820 ---- platform-dependent system.h file for all Suns, for Vax BSD, and for Vax Ultrix version 3.0 and later. ! RELEASE2_ENV [Default: not defined] RELEASE2_ENV controls the use of some X.V11R2 specific files. By default, this is undefined (which then assumes an X11 release *************** *** 789,812 **** 1.2.8 Notes on Installation on a Sun 4 (SPARC) system ! There appears to be a problem with the Bourne shell dumping core on the ! SPARCstation 1 running SunOS 4.0.3c. (There have been reports of this ! behavior on other Sun 4 platforms as well.) By unsetenv'ing all ! unnecessary environment variables, one should be able to get the base ! system to build. However, removing environment variables is just random ! magic that sometimes works. This method is unreliable at best, the real ! solution is for Sun to fix the shell. ! There have also been reports of various version of the Sun C compiler ! dumping core when optimization is used. You may find it necessary to ! set the CDEBUGFLAGS=-g in the Imakefile for the directory in which the ! build fails. Then Rebuild the Makefile for that directory and recompile ! it from scratch. ! 1.2.8 Notes on Installation on a IBM RS/6000 ! To build on this platform you must compile and use the version of imake ! in /usr/lpp/X11/Xamples/util/imake. 2 Building the System We assume you have a C preprocessor or static preprocessor similar to --- 888,927 ---- 1.2.8 Notes on Installation on a Sun 4 (SPARC) system ! There have been reports of various version of the Sun C compiler dumping ! core when optimization is used. You may find it necessary to set the ! CDEBUGFLAGS= in the Imakefile for the directory in which the build ! fails. Then Rebuild the Makefile for that directory and recompile it ! from scratch. ! As of ATK 17.0 there is support for the SunOS4.1 native dynamic loader. ! Unfortunately, SUN has not made dbx cognizant of any dynamically-loaded ! symbols. There is a patch set located on emsworth.andrew.cmu.edu that, ! when applied to gdb 3.5, provides a new command, "add-dlopened-files", ! which finds out what objects have been loaded since the last time "gdb" ! checked what objects have been loaded, and loads the symbols for any new ! ones. ! 1.2.9 Notes on Installation on a IBM RS/6000 ! To build on this platform you must use the version of imake in ! /usr/lpp/X11/Xamples/util/imake. ! ! The console application cannot successfully monitor AFS transactions as ! of ATK version 17.0. ! ! Do not build the Class pre-processor (./overhead/class/pp) with ! optimization-- it tickles a bug that causes later classes to fail. ! ! 1.2.10 Notes on Installation on PS/2 AIXv1.2 ! ! The PS/2 C compiler will die with optimization in these directories: ! ! ./overhead/parsec ! ./atk/raster/cmd ! ./atk/eq ! ! Compile these directories with "CDEBUGFLAGS=". 2 Building the System We assume you have a C preprocessor or static preprocessor similar to *************** *** 952,960 **** The distributed Andrew fonts are tailored for about 80 pixels to the inch. For workstations with other resolutions it may be best to utilize ! X fonts instead of Andrew fonts. To do so you may use as fonts.alias ! the file non-andrew.fonts.alias in source directory xmkfontd/ instead ! of the fonts.alias file generated by doing make in xmkfontd. Help: --- 1067,1076 ---- The distributed Andrew fonts are tailored for about 80 pixels to the inch. For workstations with other resolutions it may be best to utilize ! X fonts instead of Andrew fonts. To do so you may use the file ! non-andrew.fonts.alias located in andrew/xmkfontd instead of the ! fonts.alias file generated by doing make in xmkfontd. You can ! accomplish this by #defining ISO80_FONTS_ENV in your site.h file. Help: *************** *** 1005,1011 **** CDEBUGFLAGS = -g MAKEDOFLAGS = -g -d ${BASEDIR}/lib -b ${BASEDIR}/bin ! You can now run gdb on runapp: % gdb runapp GDB, Copyright (C) 1987 Free Software Foundation, Inc. --- 1121,1132 ---- CDEBUGFLAGS = -g MAKEDOFLAGS = -g -d ${BASEDIR}/lib -b ${BASEDIR}/bin ! To debug the raster application you would first load the ! statically-linked portion of the ATK run-time system, called runapp, ! into gdb. It is important that the above make.1 macros are set to ! include the -g switch so that the symbol table is created. There is no ! use attempting to use gdb if the system has not been built with the -g ! switch. % gdb runapp GDB, Copyright (C) 1987 Free Software Foundation, Inc. *************** *** 1015,1022 **** Reading symbol data from runapp... done. Type "help" for a list of commands. ! (gdb) run -d ezapp /tmp/foo.ras -d ! Starting program: runapp -d ezapp /tmp/foo.d -d Starting ez (Version 7.0, ATK 15.0); please wait... raster: text = 0x10046594 data = 0x10049280 entry = 0x100498a8 rasterview: text = 0x1004f820 data = 0x1005cc60 entry = 0x1005f8d8 --- 1136,1143 ---- Reading symbol data from runapp... done. Type "help" for a list of commands. ! (gdb) run -d ezapp foo.ras -d ! Starting program: runapp -d ezapp foo.ras -d Starting ez (Version 7.0, ATK 15.0); please wait... raster: text = 0x10046594 data = 0x10049280 entry = 0x100498a8 rasterview: text = 0x1004f820 data = 0x1005cc60 entry = 0x1005f8d8 *************** *** 1023,1029 **** rasterimage: text = 0x1006701c data = 0x100675d0 entry = 0x10067810 pixelimage: text = 0x1006e758 data = 0x100703bc entry = 0x1007068c ! To load the symbol table for raster you would use this command on a Sun: (gdb) add-file raster.dog 0x10046594 and on an RT: --- 1144,1152 ---- rasterimage: text = 0x1006701c data = 0x100675d0 entry = 0x10067810 pixelimage: text = 0x1006e758 data = 0x100703bc entry = 0x1007068c ! To load the symbol table for the raster dynamic object you would use ! this command on a Sun or a DECstation 3100[An Andrew ToolKit view (a ! footnote) was included here, but could not be displayed.]: (gdb) add-file raster.dog 0x10046594 and on an RT: *************** *** 1030,1046 **** (gdb) set-rel 0x10046594 (gdb) add-file raster.dog - and on a DECstation: - (gdb) symbol-file raster.dog - Note that the addresses passed to these gdb commands come from the text address that runapp outputs when the -d switch is used (the second -d ! switch prevents runapp from forking itself). To determine which module ! to load in the fashion described above compare the various text ! addresses with the address at which the program failed. For example, if ! the program died at address 0x1004a520 you would find that address ! between what was reported for raster and rasterview. Thus, the failure ! was somewhere in the raster module. 2.2 System Components The major parts of the distribution consists of: underlying libraries --- 1153,1168 ---- (gdb) set-rel 0x10046594 (gdb) add-file raster.dog Note that the addresses passed to these gdb commands come from the text address that runapp outputs when the -d switch is used (the second -d ! switch prevents runapp from forking itself to become an orphaned ! process). To determine which module to load in the fashion described ! above compare the various text addresses with the address at which the ! program failed. For example, if the program died at address 0x1004a520 ! you would find that address between what was reported as the start of ! the text segments for raster and rasterview. Since the raster module ! was loaded first, we can conclude that the failure was somewhere in the ! raster module. 2.2 System Components The major parts of the distribution consists of: underlying libraries *************** *** 1088,1097 **** 2.2.2 ATK 1. Basics (or Core): ! - underlying ATK libraries ! - ez - a multi-media editor ! - typescript - a flexible csh window (not TERMCAP) ! - raster - a raster (bitmap) editor 2. Basic Utilities - console - a system monitoring program - ezprint - allows printing of ATK format documents --- 1210,1220 ---- 2.2.2 ATK 1. Basics (or Core): ! - underlying ATK libraries ! - ez - a multi-media editor ! - typescript - a flexible csh window (not TERMCAP) ! - raster - a raster (bitmap) editor ! - hyplink - a hypertext-like link inset 2. Basic Utilities - console - a system monitoring program - ezprint - allows printing of ATK format documents *************** *** 1158,1164 **** - rctext - another C text editing package - rmtext - another MODULA 2 text editing package - m3text - a MODULA 3 text editing package - - hyplink - a hypertext-like link inset - tm - an alternative to typescript - eatmail - a program which transfers mail from /usr/spool/mail/{uid} into separate files in uid's Mailbox --- 1281,1286 ---- *************** *** 1263,1268 **** --- 1385,1392 ---- ${ANDREWDIR}/bin - Runnable applications ${ANDREWDIR}/dlib/atk - Dynamic objects ${ANDREWDIR}/X11fonts -ATK specific fonts for X + ${ANDREWDIR}/xnwsfnts - ATK fonts for running under Open Windows + (if enabled) ${ANDREWDIR}/lib/tpls - Style templates for text-oriented objects ${ANDREWDIR}/lib/consoles - Console descriptions ${ANDREWDIR}/lib/atk - Compile time libraries *** Imakefile Mon Mar 4 14:31:07 1991 --- Imakefile.NEW Thu May 30 18:27:57 1991 *************** *** 4,9 **** --- 4,15 ---- \* ********************************************************************** */ #define IHaveSubdirs + #ifdef hp9000s800 + depend:: + make Makefiles SUBDIRS=ossupport + (cd ossupport; make dependInstall) + #endif /* hp9000s800 */ + #ifdef AMS_ENV AMS = ams atkams #endif /* AMS_ENV */ *************** *** 14,20 **** #ifdef CONTRIB_ENV CONTRIB = contrib ! #endif CONTRIB_ENV #ifdef ODA_ENV ODA = oda odatrans --- 20,26 ---- #ifdef CONTRIB_ENV CONTRIB = contrib ! #endif /* CONTRIB_ENV */ #ifdef ODA_ENV ODA = oda odatrans *************** *** 72,77 **** --- 78,87 ---- #ifdef X11_ENV MkdirTarget($(DESTDIR)/X11fonts) + #endif + + #ifdef OPENWINDOWS_ENV + MkdirTarget($(DESTDIR)/xnwsfnts) #endif #ifdef LINKINSTALL_ENV *** config/COPYRITE.bls Mon Jun 10 12:08:07 1991 --- config/COPYRITE.bls.NEW Mon May 13 14:06:40 1991 *************** *** 0 **** --- 1,19 ---- + + Copyright BellSouth 1991 - All Rights Reserved + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and + that both that copyright notice and this permission notice appear in + supporting documentation, and that the name of BellSouth not be used in + advertising or publicity pertaining to distribution of the software + without specific, written prior permission. + + BELLSOUTH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS, IN NO EVENT SHALL BELLSOUTH BE LIABLE FOR ANY SPECIAL, + INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + *** config/COPYRITE.att Mon Jun 10 12:11:56 1991 --- config/COPYRITE.att.NEW Mon Jun 10 12:11:23 1991 *************** *** 0 **** --- 1,18 ---- + ############################################################################ + # Copyright AT&T Bell Laboratories - All Rights Reserved # + # # + # Permission to use, copy, modify, and distribute this software and its # + # documentation for any purpose and without fee is hereby granted, # + # provided that the above copyright notice appear in all copies and # + # that both that copyright notice and this permission notice appear in # + # supporting documentation, and that the name of IBM not be used in # + # advertising or publicity pertaining to distribution of the software # + # without specific, written prior permission. # + # # + # IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL # + # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL IBM # + # BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY # + # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER # + # IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING # + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # + ############################################################################ *** config/ImakeMacros.d Mon Aug 6 10:57:12 1990 --- config/ImakeMacros.d.NEW Wed Apr 3 21:11:04 1991 *************** *** 1,4 **** ! \begindata{text,269113888} \textdsversion{12} \template{default} \define{italic --- 1,4 ---- ! \begindata{text,268745564} \textdsversion{12} \template{default} \define{italic *************** *** 54,68 **** menu:[Title,InvisibleIndex~92] attr:[Script PreviousScriptMovement Point -2] attr:[FontFace Italic Int Set]} - \define{comment - - attr:[FontFace Italic Int Set] - attr:[FontFace FixedFace Int Clear] - attr:[FontFamily Andy Int 0] - attr:[FontSize PreviousFontSize Point 2]} - \define{function - - attr:[FontFace Bold Int Set]} \define{global attr:[LeftMargin LeftEdge Int 16] --- 54,59 ---- *************** *** 72,77 **** --- 63,77 ---- attr:[FontFace FixedFace Int Set] attr:[FontFamily AndyType Int 0] attr:[FontSize ConstantFontSize Point 10]} + \define{comment + + attr:[FontFace Italic Int Set] + attr:[FontFace FixedFace Int Clear] + attr:[FontFamily Andy Int 0] + attr:[FontSize PreviousFontSize Point 2]} + \define{function + + attr:[FontFace Bold Int Set]} \define{fieldheader menu:[Region~4,FieldHeader] attr:[LeftMargin LeftMargin Cm 41615] *************** *** 103,111 **** window. }\ ! \begindata{bp,269104832} ! \enddata{bp,269104832} ! \view{bpv,269104832,0,0,0} \chapter{1 Notes} --- 103,111 ---- window. }\ ! \begindata{bp,268754692} ! \enddata{bp,268754692} ! \view{bpv,268754692,0,0,0} \chapter{1 Notes} *************** *** 176,184 **** Imakefiles MUST end with a newline} ! \begindata{bp,269104764} ! \enddata{bp,269104764} ! \view{bpv,269104764,1,0,0} \chapter{2 Standard and often used Make rules} --- 176,184 ---- Imakefiles MUST end with a newline} ! \begindata{bp,268831896} ! \enddata{bp,268831896} ! \view{bpv,268831896,1,0,0} \chapter{2 Standard and often used Make rules} *************** *** 255,263 **** \fieldcontent{Use only in conjunction with InstallHelpAlias() rule} ! \begindata{bp,269104696} ! \enddata{bp,269104696} ! \view{bpv,269104696,2,0,0} \section{2.2 Compilation rules} --- 255,263 ---- \fieldcontent{Use only in conjunction with InstallHelpAlias() rule} ! \begindata{bp,268720388} ! \enddata{bp,268720388} ! \view{bpv,268720388,2,0,0} \section{2.2 Compilation rules} *************** *** 287,295 **** \fieldcontent{All arguments need not be present - but the commas must be there, and the arguments which are to be filled in should be in the correct ! place with respect to the commas.} \fieldheader{Expanded Macro:} \fixedfieldcontent{all:: program --- 287,298 ---- \fieldcontent{All arguments need not be present - but the commas must be there, and the arguments which are to be filled in should be in the correct ! place with respect to the commas. + The syslibs can include library path search specifications using -L + interspersed with the -l. notation (see ld.1). } + \fieldheader{Expanded Macro:} \fixedfieldcontent{all:: program *************** *** 311,319 **** ! \begindata{bp,269104628} ! \enddata{bp,269104628} ! \view{bpv,269104628,3,0,0} \subsection{2.2.2 LibraryTarget} --- 314,322 ---- ! \begindata{bp,268831800} ! \enddata{bp,268831800} ! \view{bpv,268831800,3,0,0} \subsection{2.2.2 LibraryTarget} *************** *** 366,374 **** ! \begindata{bp,269104556} ! \enddata{bp,269104556} ! \view{bpv,269104556,4,0,0} \subsection{2.2.3 TestProgramTarget} --- 369,377 ---- ! \begindata{bp,268720240} ! \enddata{bp,268720240} ! \view{bpv,268720240,4,0,0} \subsection{2.2.3 TestProgramTarget} *************** *** 386,403 **** libs - libraries (*.a) which can be placed on a dependency list ! syslibs - libraries (*.a) which are not to be placed on a dependency list ! ! (most common example: -lm for the math library)} ! \fieldheader{Note:} \fieldcontent{All arguments need not be present - but the commas must be there, and the arguments which are to be filled in should be in the correct ! place with respect to the commas.} \fieldheader{Expanded Macro:} \fixedfieldcontent{test:: program --- 389,410 ---- libs - libraries (*.a) which can be placed on a dependency list ! \smaller{syslibs - libraries (*.a) which are not to be placed on a dependency ! list (most common example: -lm for the math library). + } + } ! \fieldheader{Note:} \fieldcontent{All arguments need not be present - but the commas must be there, and the arguments which are to be filled in should be in the correct ! place with respect to the commas. + The syslibs can include library path search specifications using -L + interspersed with the -l. notation (see ld.1). + } \fieldheader{Expanded Macro:} \fixedfieldcontent{test:: program *************** *** 418,426 **** \fieldheader{Use:} ! \begindata{bp,268677288} ! \enddata{bp,268677288} ! \view{bpv,268677288,5,0,0} \section{2.3 Cleanup and dependency generating rules} --- 425,433 ---- \fieldheader{Use:} ! \begindata{bp,268720172} ! \enddata{bp,268720172} ! \view{bpv,268720172,5,0,0} \section{2.3 Cleanup and dependency generating rules} *************** *** 496,504 **** things like OS-type differences} ! \begindata{bp,269183564} ! \enddata{bp,269183564} ! \view{bpv,269183564,6,0,0} \subsection{2.3.3 MkdirTarget} --- 503,511 ---- things like OS-type differences} ! \begindata{bp,268720104} ! \enddata{bp,268720104} ! \view{bpv,268720104,6,0,0} \subsection{2.3.3 MkdirTarget} *************** *** 554,562 **** ! \begindata{bp,269104412} ! \enddata{bp,269104412} ! \view{bpv,269104412,7,0,0} \section{2.4 Installation rules} --- 561,569 ---- ! \begindata{bp,268720036} ! \enddata{bp,268720036} ! \view{bpv,268720036,7,0,0} \section{2.4 Installation rules} *************** *** 636,644 **** different name than what it already has.} ! \begindata{bp,268677144} ! \enddata{bp,268677144} ! \view{bpv,268677144,8,0,0} \subsection{2.4.3 InstallDocs} --- 643,651 ---- different name than what it already has.} ! \begindata{bp,268719968} ! \enddata{bp,268719968} ! \view{bpv,268719968,8,0,0} \subsection{2.4.3 InstallDocs} *************** *** 719,727 **** } ! \begindata{bp,269104316} ! \enddata{bp,269104316} ! \view{bpv,269104316,9,0,0} \subsection{2.4.5 InstallMultiple} --- 726,734 ---- } ! \begindata{bp,268823220} ! \enddata{bp,268823220} ! \view{bpv,268823220,9,0,0} \subsection{2.4.5 InstallMultiple} *************** *** 767,775 **** ! \begindata{bp,268677024} ! \enddata{bp,268677024} ! \view{bpv,268677024,10,0,0} \subsection{2.4.6 InstallByPattern} --- 774,782 ---- ! \begindata{bp,268719872} ! \enddata{bp,268719872} ! \view{bpv,268719872,10,0,0} \subsection{2.4.6 InstallByPattern} *************** *** 895,903 **** } ! \begindata{bp,268676980} ! \enddata{bp,268676980} ! \view{bpv,268676980,11,0,0} \subsection{2.4.9 InstallLibrary} --- 902,910 ---- } ! \begindata{bp,268823100} ! \enddata{bp,268823100} ! \view{bpv,268823100,11,0,0} \subsection{2.4.9 InstallLibrary} *************** *** 975,983 **** ! \begindata{bp,268676936} ! \enddata{bp,268676936} ! \view{bpv,268676936,12,0,0} \subsection{2.4.11 InstallHardLink} --- 982,990 ---- ! \begindata{bp,268719776} ! \enddata{bp,268719776} ! \view{bpv,268719776,12,0,0} \subsection{2.4.11 InstallHardLink} *************** *** 1036,1044 **** ! \begindata{bp,268676892} ! \enddata{bp,268676892} ! \view{bpv,268676892,13,0,0} \chapter{3 Less standard, or less often used Make rules} --- 1043,1051 ---- ! \begindata{bp,268822980} ! \enddata{bp,268822980} ! \view{bpv,268822980,13,0,0} \chapter{3 Less standard, or less often used Make rules} *************** *** 1102,1110 **** ! \begindata{bp,268676848} ! \enddata{bp,268676848} ! \view{bpv,268676848,14,0,0} \subsection{3.1.3 NormalAsmPPRule} --- 1109,1117 ---- ! \begindata{bp,268844668} ! \enddata{bp,268844668} ! \view{bpv,268844668,14,0,0} \subsection{3.1.3 NormalAsmPPRule} *************** *** 1169,1177 **** ! \begindata{bp,268676804} ! \enddata{bp,268676804} ! \view{bpv,268676804,15,0,0} \subsection{3.1.5 NormalScribeRule} --- 1176,1184 ---- ! \begindata{bp,268719632} ! \enddata{bp,268719632} ! \view{bpv,268719632,15,0,0} \subsection{3.1.5 NormalScribeRule} *************** *** 1198,1206 **** - useful for printed documentation.} ! \begindata{bp,268676760} ! \enddata{bp,268676760} ! \view{bpv,268676760,16,0,0} \section{3.2 Compilation rules} --- 1205,1213 ---- - useful for printed documentation.} ! \begindata{bp,268719588} ! \enddata{bp,268719588} ! \view{bpv,268719588,16,0,0} \section{3.2 Compilation rules} *************** *** 1248,1256 **** ! \begindata{bp,268676716} ! \enddata{bp,268676716} ! \view{bpv,268676716,17,0,0} \subsection{3.2.2 YaccWithReplacement} --- 1255,1263 ---- ! \begindata{bp,268719544} ! \enddata{bp,268719544} ! \view{bpv,268719544,17,0,0} \subsection{3.2.2 YaccWithReplacement} *************** *** 1338,1346 **** \fieldheader{Use:} ! \begindata{bp,268676672} ! \enddata{bp,268676672} ! \view{bpv,268676672,18,0,0} \subsection{3.2.4 NCYaccWithHeader} --- 1345,1353 ---- \fieldheader{Use:} ! \begindata{bp,268719500} ! \enddata{bp,268719500} ! \view{bpv,268719500,18,0,0} \subsection{3.2.4 NCYaccWithHeader} *************** *** 1399,1407 **** \fieldcontent{For simple lex processing - NC = Not Compiled. } ! \begindata{bp,268676628} ! \enddata{bp,268676628} ! \view{bpv,268676628,19,0,0} \subsection{3.2.6 CppAndFilter} --- 1406,1414 ---- \fieldcontent{For simple lex processing - NC = Not Compiled. } ! \begindata{bp,268719456} ! \enddata{bp,268719456} ! \view{bpv,268719456,19,0,0} \subsection{3.2.6 CppAndFilter} *************** *** 1469,1477 **** filenames. This simply cats them together. } ! \begindata{bp,269228700} ! \enddata{bp,269228700} ! \view{bpv,269228700,20,0,0} \subsection{3.2.8 TagsTarget} --- 1476,1484 ---- filenames. This simply cats them together. } ! \begindata{bp,268719412} ! \enddata{bp,268719412} ! \view{bpv,268719412,20,0,0} \subsection{3.2.8 TagsTarget} *************** *** 1499,1507 **** ! \begindata{bp,269195700} ! \enddata{bp,269195700} ! \view{bpv,269195700,21,0,0} \chapter{4 ATK compilation rules} --- 1506,1514 ---- ! \begindata{bp,268719368} ! \enddata{bp,268719368} ! \view{bpv,268719368,21,0,0} \chapter{4 ATK compilation rules} *************** *** 1556,1564 **** and/or .do files} ! \begindata{bp,268676512} ! \enddata{bp,268676512} ! \view{bpv,268676512,22,0,0} \section{4.2 Compilation rules} --- 1563,1571 ---- and/or .do files} ! \begindata{bp,268719324} ! \enddata{bp,268719324} ! \view{bpv,268719324,22,0,0} \section{4.2 Compilation rules} *************** *** 1587,1592 **** --- 1594,1602 ---- there, and the arguments which are to be filled in should be in the correct place with respect to the commas.} + \fieldcontent{The syslibs can include library path search specifications using + -L interspersed with the -l. notation (see ld.1). } + \fieldheader{Expanded Macro:} *************** *** 1608,1616 **** ! \begindata{bp,268676468} ! \enddata{bp,268676468} ! \view{bpv,268676468,23,0,0} \subsection{4.2.2 DynamicMultiObject} --- 1618,1626 ---- ! \begindata{bp,268719280} ! \enddata{bp,268719280} ! \view{bpv,268719280,23,0,0} \subsection{4.2.2 DynamicMultiObject} *************** *** 1639,1644 **** --- 1649,1657 ---- there, and the arguments which are to be filled in should be in the correct place with respect to the commas.} + \fieldcontent{The syslibs can include library path search specifications using + -L interspersed with the -l. notation (see ld.1). } + \fieldheader{Expanded Macro:} *************** *** 1659,1667 **** ! \begindata{bp,269220448} ! \enddata{bp,269220448} ! \view{bpv,269220448,24,0,0} \section{4.3 Installation rules} --- 1672,1680 ---- ! \begindata{bp,268719236} ! \enddata{bp,268719236} ! \view{bpv,268719236,24,0,0} \section{4.3 Installation rules} *************** *** 1875,1883 **** the same destination directory (a separate one for each ex* directory) } ! \begindata{bp,269195600} ! \enddata{bp,269195600} ! \view{bpv,269195600,25,0,0} \chapter{5 Font rules } --- 1888,1896 ---- the same destination directory (a separate one for each ex* directory) } ! \begindata{bp,268719176} ! \enddata{bp,268719176} ! \view{bpv,268719176,25,0,0} \chapter{5 Font rules } *************** *** 2007,2015 **** (Installs font as a link if LINKINSTALL_ENV is defined)} ! \begindata{bp,268676352} ! \enddata{bp,268676352} ! \view{bpv,268676352,26,0,0} \section{5.2 Compilation rules} --- 2020,2028 ---- (Installs font as a link if LINKINSTALL_ENV is defined)} ! \begindata{bp,268822356} ! \enddata{bp,268822356} ! \view{bpv,268822356,26,0,0} \section{5.2 Compilation rules} *************** *** 2104,2112 **** (replaces WMFontRule and XFontRule) } ! \begindata{bp,269216276} ! \enddata{bp,269216276} ! \view{bpv,269216276,27,0,0} \chapter{6 Internal (to template) rules} --- 2117,2125 ---- (replaces WMFontRule and XFontRule) } ! \begindata{bp,268822312} ! \enddata{bp,268822312} ! \view{bpv,268822312,27,0,0} \chapter{6 Internal (to template) rules} *************** *** 2168,2176 **** \fieldcontent{Used only when LINKINSTALL_ENV is set} ! \begindata{bp,269216232} ! \enddata{bp,269216232} ! \view{bpv,269216232,28,0,0} \section{6.2 Cleanup rule} --- 2181,2189 ---- \fieldcontent{Used only when LINKINSTALL_ENV is set} ! \begindata{bp,268822268} ! \enddata{bp,268822268} ! \view{bpv,268822268,28,0,0} \section{6.2 Cleanup rule} *************** *** 2253,2261 **** \fieldheader{Use:} ! \begindata{bp,269245100} ! \enddata{bp,269245100} ! \view{bpv,269245100,29,0,0} \section{6.4 Subdir rules} --- 2266,2274 ---- \fieldheader{Use:} ! \begindata{bp,268822224} ! \enddata{bp,268822224} ! \view{bpv,268822224,29,0,0} \section{6.4 Subdir rules} *************** *** 2327,2335 **** ! \begindata{bp,269195500} ! \enddata{bp,269195500} ! \view{bpv,269195500,30,0,0} \subsection{6.4.3 InstallSubdirs} --- 2340,2348 ---- ! \begindata{bp,268822180} ! \enddata{bp,268822180} ! \view{bpv,268822180,30,0,0} \subsection{6.4.3 InstallSubdirs} *************** *** 2402,2410 **** ! \begindata{bp,269216116} ! \enddata{bp,269216116} ! \view{bpv,269216116,31,0,0} \subsection{6.4.5 InstallAliasSubdirs} --- 2415,2423 ---- ! \begindata{bp,268822136} ! \enddata{bp,268822136} ! \view{bpv,268822136,31,0,0} \subsection{6.4.5 InstallAliasSubdirs} *************** *** 2477,2485 **** ! \begindata{bp,269240928} ! \enddata{bp,269240928} ! \view{bpv,269240928,32,0,0} \subsection{6.4.7 WorldInstallSubdirs} --- 2490,2498 ---- ! \begindata{bp,268918564} ! \enddata{bp,268918564} ! \view{bpv,268918564,32,0,0} \subsection{6.4.7 WorldInstallSubdirs} *************** *** 2586,2594 **** the installed ones. } ! \begindata{bp,269216024} ! \enddata{bp,269216024} ! \view{bpv,269216024,33,0,0} \subsection{6.4.10 TagSubdirs} --- 2599,2607 ---- the installed ones. } ! \begindata{bp,268885676} ! \enddata{bp,268885676} ! \view{bpv,268885676,33,0,0} \subsection{6.4.10 TagSubdirs} *************** *** 2659,2667 **** ! \begindata{bp,269236804} ! \enddata{bp,269236804} ! \view{bpv,269236804,34,0,0} \subsection{6.4.12 MakefileSubdirs} --- 2672,2680 ---- ! \begindata{bp,268822020} ! \enddata{bp,268822020} ! \view{bpv,268822020,34,0,0} \subsection{6.4.12 MakefileSubdirs} *************** *** 2696,2699 **** \fieldheader{Use:} ! \enddata{text,269113888} --- 2709,2712 ---- \fieldheader{Use:} ! \enddata{text,268745564} *** config/allsys.h Fri Dec 21 14:50:42 1990 --- config/allsys.h.NEW Thu Apr 25 16:10:44 1991 *************** *** 64,69 **** --- 64,72 ---- the protection server */ /* #define AFS30_ENV 1 */ + /* Defined if you have version 3.1 of the Andrew File System */ + /* #define AFS31_ENV 1 */ + /* Defined if building ODA and the ODA Translators */ /* #define ODA_ENV 1 */ *************** *** 182,186 **** /* If you have an old version of Ultrix that doesn't handle disabling of ECHO for pty's then define OLD_ULTRIX_ENV */ /* #define OLD_ULTRIX_ENV 1 */ ! /* Define this if you don't want to build the fonts */ /* #define NO_FONTS_ENV 1 */ --- 185,196 ---- /* If you have an old version of Ultrix that doesn't handle disabling of ECHO for pty's then define OLD_ULTRIX_ENV */ /* #define OLD_ULTRIX_ENV 1 */ ! /* Define this if you don't want to build or install any fonts */ /* #define NO_FONTS_ENV 1 */ + + /* Define this if you want to bring the Andrew fonts to the BDF stage only */ + /* #define FONTS_TO_BDF_ENV 1 */ + + /* Define this if you want to build the Andrew fonts for the OpenWindows Environment. */ + /* #define OPENWINDOWS_ENV 1 */ + *** config/allsys.mcr Wed Sep 26 16:00:30 1990 --- config/allsys.mcr.NEW Wed Apr 3 21:11:07 1991 *************** *** 26,31 **** --- 26,38 ---- /* if you need to change this setting, you can do so in site.h . */ AFSBASEDIR = /usr/andrew #endif /* AFS_ENV */ + + /* If your AFS protection server relies on the MIT Athena Kerberos */ + /* library, set KRBLIB to name where the Kerberos library lives. */ + /* You will also need to define this variable if you make the MIT neos + application */ + KRBLIB = + /* set DESTDIR to where you want Andrew installed */ /* it is necessary that it be installed incrementally, while it is built */ /* DEFAULT_ANDREWDIR_ENV is set in the allsys.h file to the location where */ *************** *** 65,73 **** /* RESOLVLIB = /usr/lib/libresolv.a /* if in /lib/libc.a: */ RESOLVLIB = ! #else RESOLVER_ENV RESOLVLIB = ! #endif RESOLVER_ENV /* uncomment this if your make program has MAKEFLAGS but not MFLAGS */ /* #define ConstructMFLAGS */ --- 72,89 ---- /* RESOLVLIB = /usr/lib/libresolv.a /* if in /lib/libc.a: */ RESOLVLIB = ! #else /* RESOLVER_ENV */ RESOLVLIB = ! #endif /* RESOLVER_ENV */ ! ! /* the following variable is for any libraries ! * needed for networking support ! */ ! NETLIBS = ! /* this is to catch machine-specific libraries that contain ! * fixes for various functions ! */ ! SUPLIBS = /* uncomment this if your make program has MAKEFLAGS but not MFLAGS */ /* #define ConstructMFLAGS */ *** config/andrew.rls Fri Dec 21 14:50:44 1990 --- config/andrew.rls.NEW Mon Jun 17 13:56:43 1991 *************** *** 1,7 **** /* ***************************************************************** *\ * andrew.rls - macro (rules) for Imakefiles * ! * Last modified: 1 August 1989 - Adam Stoller \* ***************************************************************** */ /* ***************************************************************** *\ --- 1,7 ---- /* ***************************************************************** *\ * andrew.rls - macro (rules) for Imakefiles * ! * Last modified: 10 April 1991 - David Anderson \* ***************************************************************** */ /* ***************************************************************** *\ *************** *** 8,19 **** * Standard Compilation Rules \* ***************************************************************** */ #define NormalObjectRule() @@\ .c.o: @@\ $(RM) $@ @@\ $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c ! #define NormalATKRule() @@\ all:: $(IHFILES) ${DOBJS} @@\ @@\ --- 8,63 ---- * Standard Compilation Rules \* ***************************************************************** */ + /* + * For plaforms with shared libraries, build both PIC and non-PIC + * versions. + */ + #ifdef LIBDL_ENV + #define NormalObjectRule() @@\ + all:: @@\ + @if [ ! -d shared ]; then mkdir shared; else exit 0; fi @@\ + @@\ + .c.o: @@\ + $(RM) $@ shared/$@ @@\ + $(CC) $(PICFLAG) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ + $(MV) $*.o shared/$*.o @@\ + $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ + @@\ + clean:: @@\ + -@if [ -d shared ]; then echo " $(RM) shared/?*.o"; \ @@\ + $(RM) shared/?*.o; else exit 0; fi @@\ + + #else /* LIBDL_ENV */ #define NormalObjectRule() @@\ .c.o: @@\ $(RM) $@ @@\ $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c ! #endif /* LIBDL_ENV */ + #ifdef LIBDL_ENV + #define NormalATKRule() @@\ + all:: @@\ + @if [ ! -d shared ]; then mkdir shared; else exit 0; fi @@\ + @@\ + all:: $(IHFILES) ${DOBJS} @@\ + @@\ + .ch.ih: @@\ + $(CLASS) -s -I. $(LOCALINCLUDES) $(CLASSFLAGS) $*.ch @@\ + @@\ + .ch.eh: @@\ + $(CLASS) -s -I. $(LOCALINCLUDES) $(CLASSFLAGS) $*.ch @@\ + @@\ + .o.do: @@\ + $(MAKEDO) $(MAKEDOFLAGS) -s -o $*.do $*.o @@\ + @@\ + .c.do: @@\ + $(RM) $*.do @@\ + $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ + $(MAKEDO) $(MAKEDOFLAGS) -s -o $*.do $*.o @@\ + @@\ + test:: all @@\ + $(BASEDIR)/bin/doindex *.do + #else /* LIBDL_ENV */ #define NormalATKRule() @@\ all:: $(IHFILES) ${DOBJS} @@\ @@\ *************** *** 33,38 **** --- 77,83 ---- @@\ test:: all @@\ $(BASEDIR)/bin/doindex *.do + #endif /* LIBDL_ENV */ #ifndef LINKINSTALL_ENV *************** *** 60,65 **** --- 105,124 ---- #endif /* LINKINSTALL_ENV */ + #ifdef LIBDL_ENV + #define NormalYaccRule() @@\ + all:: @@\ + @if [ ! -d shared ]; then mkdir shared; else exit 0; fi @@\ + @@\ + .y.o: @@\ + $(YACC) $*.y @@\ + -$(RM) $*.c @@\ + $(MV) y.tab.c $*.c @@\ + $(CC) $(PICFLAG) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ + $(MV) $*.o shared/$*.o @@\ + $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ + $(RM) $*.c + #else /* LIBDL_ENV */ #define NormalYaccRule() @@\ .y.o: @@\ $(YACC) $*.y @@\ *************** *** 67,74 **** $(MV) y.tab.c $*.c @@\ $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ $(RM) $*.c ! #ifdef mips #define NormalAsmPPRule() @@\ .spp.o: @@\ -$(RM) $@ ,$*.s ,$*.c @@\ --- 126,134 ---- $(MV) y.tab.c $*.c @@\ $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ $(RM) $*.c + #endif /* LIBDL_ENV */ ! #if defined(mips) #define NormalAsmPPRule() @@\ .spp.o: @@\ -$(RM) $@ ,$*.s ,$*.c @@\ *************** *** 76,82 **** $(CC) -E -I. $(LOCALINCLUDES) $(CFLAGS) ,$*.c > ,$*.s @@\ $(AS) -nocpp -o $*.o ,$*.s @@\ $(RM) ,$*.c ,$*.s ! #else #define NormalAsmPPRule() @@\ .spp.o: @@\ -$(RM) $@ ,$*.s ,$*.c @@\ --- 136,151 ---- $(CC) -E -I. $(LOCALINCLUDES) $(CFLAGS) ,$*.c > ,$*.s @@\ $(AS) -nocpp -o $*.o ,$*.s @@\ $(RM) ,$*.c ,$*.s ! #else /* mips */ ! #if defined(SCOunix) ! #define NormalAsmPPRule() @@\ ! .spp.o: @@\ ! -$(RM) $@ ,$*.s ,$*.c @@\ ! $(CP) $*.spp ,$*.c @@\ ! cc -EP -I. $(LOCALINCLUDES) $(CFLAGS) ,$*.c > ,$*.s @@\ ! $(AS) -o $*.o ,$*.s @@\ ! $(RM) ,$*.c ,$*.s ! #else /* SCOunix */ #define NormalAsmPPRule() @@\ .spp.o: @@\ -$(RM) $@ ,$*.s ,$*.c @@\ *************** *** 84,91 **** --- 153,175 ---- $(CC) -E -I. $(LOCALINCLUDES) $(CFLAGS) ,$*.c > ,$*.s @@\ $(AS) -o $*.o ,$*.s @@\ $(RM) ,$*.c ,$*.s + #endif /* SCOunix */ #endif /* mips */ + #ifdef LIBDL_ENV + #define NormalLexRule() @@\ + all:: @@\ + @if [ ! -d shared ]; then mkdir shared; else exit 0; fi @@\ + @@\ + .l.o: @@\ + $(LEX) $*.l @@\ + -$(RM) $*.c @@\ + $(MV) lex.yy.c $*.c @@\ + $(CC) $(PICFLAG) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ + $(MV) $*.o shared/$*.o @@\ + $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ + $(RM) $*.c + #else /* LIBDL_ENV */ #define NormalLexRule() @@\ .l.o: @@\ $(LEX) $*.l @@\ *************** *** 93,98 **** --- 177,183 ---- $(MV) lex.yy.c $*.c @@\ $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) $*.c @@\ $(RM) $*.c + #endif /* LIBDL_ENV */ #define NormalScribeRule() @@\ .mss.PS: @@\ *************** *** 109,114 **** --- 194,223 ---- -$(RM) $@ @@\ $(AS) -o $*.o $*.s + #ifdef LIBDL_ENV + #define YaccWithHeader(file) @@\ + all:: @@\ + @if [ ! -d shared ]; then mkdir shared; else exit 0; fi @@\ + @@\ + file.c file.h: file.y @@\ + $(YACC) -d file.y @@\ + -$(RM) file.c file.h @@\ + $(MV) y.tab.c file.c @@\ + $(MV) y.tab.h file.h @@\ + @@\ + file.o: file.c @@\ + -$(RM) file.o @@\ + $(CC) $(PICFLAG) -c -I. $(LOCALINCLUDES) $(CFLAGS) file.c @@\ + $(MV) file.o shared/file.o @@\ + $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) file.c @@\ + @@\ + depend:: file.h file.c @@\ + @@\ + tidy:: @@\ + $(RM) file.c @@\ + clean:: @@\ + $(RM) file.h + #else /* LIBDL_ENV */ #define YaccWithHeader(file) @@\ file.c file.h: file.y @@\ $(YACC) -d file.y @@\ *************** *** 126,133 **** --- 235,247 ---- $(RM) file.c @@\ clean:: @@\ $(RM) file.h + #endif /* LIBDL_ENV */ + #ifdef LIBDL_ENV #define YaccWithReplacement(file, string) @@\ + all:: @@\ + @if [ ! -d shared ]; then mkdir shared; else exit 0; fi @@\ + @@\ file.c file.h: file.y @@\ $(YACC) -d file.y @@\ -$(RM) file.c file.h y.tab._c @@\ *************** *** 138,143 **** --- 252,259 ---- @@\ file.o: file.c @@\ -$(RM) file.o @@\ + $(CC) $(PICFLAG) -c -I. $(LOCALINCLUDES) $(CFLAGS) file.c @@\ + $(MV) file.o shared/file.o @@\ $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) file.c @@\ @@\ depend:: file.h file.c @@\ *************** *** 146,152 **** --- 262,307 ---- $(RM) file.c @@\ clean:: @@\ $(RM) file.h + #else /* LIBDL_ENV */ + #define YaccWithReplacement(file, string) @@\ + file.c file.h: file.y @@\ + $(YACC) -d file.y @@\ + -$(RM) file.c file.h y.tab._c @@\ + $(SED) -e '/yy/s//string/g' y.tab.c > y.tab._c @@\ + -$(RM) y.tab.c @@\ + $(MV) y.tab._c file.c @@\ + $(MV) y.tab.h file.h @@\ + @@\ + file.o: file.c @@\ + -$(RM) file.o @@\ + $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) file.c @@\ + @@\ + depend:: file.h file.c @@\ + @@\ + tidy:: @@\ + $(RM) file.c @@\ + clean:: @@\ + $(RM) file.h + #endif /* LIBDL_ENV */ + #ifdef LIBDL_ENV + #define LexWithReplacement(file, string) @@\ + all:: @@\ + @if [ ! -d shared ]; then mkdir shared; else exit 0; fi @@\ + @@\ + file.o: file.l @@\ + $(LEX) $*.l @@\ + -$(RM) $*.c @@\ + $(SED) -e '/yy/s//string/g' lex.yy.c > lex.yy._c @@\ + -$(RM) lex.yy.c @@\ + $(MV) lex.yy._c file.c @@\ + $(CC) $(PICFLAG) -c -I. $(LOCALINCLUDES) $(CFLAGS) file.c @@\ + $(MV) file.o shared/file.o @@\ + $(CC) -c -I. $(LOCALINCLUDES) $(CFLAGS) file.c @@\ + @@\ + tidy:: @@\ + $(RM) file.c + #else /* LIBDL_ENV */ #define LexWithReplacement(file, string) @@\ file.o: file.l @@\ $(LEX) $*.l @@\ *************** *** 158,163 **** --- 313,319 ---- @@\ tidy:: @@\ $(RM) file.c + #endif /* LIBDL_ENV */ #define NCYaccWithHeader(yfile) @@\ y.tab.c y.tab.h: yfile @@\ *************** *** 181,191 **** $(RM) target @@\ cat sources > target ! #define TestingOnlyTestingRule(libs) @@\ .SUFFIXES: .test @@\ .c.test: @@\ $(RM) $@ @@\ ! $(CC) -DTESTINGONLYTESTING $(CFLAGS) -o $*.test $*.c libs @@\ $(RM) $*.o @@\ tidy:: @@\ ${RM} *.test --- 337,347 ---- $(RM) target @@\ cat sources > target ! #define TestingOnlyTestingRule(libs,syslibs) @@\ .SUFFIXES: .test @@\ .c.test: @@\ $(RM) $@ @@\ ! $(CC) -DTESTINGONLYTESTING $(CFLAGS) -o $*.test $*.c libs syslibs @@\ $(RM) $*.o @@\ tidy:: @@\ ${RM} *.test *************** *** 194,200 **** * Basic rules for compilation (and cleanup) \* ***************************************************************** */ ! #if (defined(AIX) || defined(hpux)) #define LibraryTarget(library, objs) @@\ all:: library @@\ --- 350,356 ---- * Basic rules for compilation (and cleanup) \* ***************************************************************** */ ! #if (defined(AIX) || defined(hpux) || defined(SCOunix)) #define LibraryTarget(library, objs) @@\ all:: library @@\ *************** *** 216,233 **** #endif /* (defined(AIX) || defined(hpux)) */ #ifdef _IBMR2 - #define TestProgramTarget(program, objs, libs, syslibs) @@\ test:: program @@\ @@\ program: objs libs @@\ $(RM) $@ @@\ ! $(CC) $(CFLAGS) -o $@ objs libs syslibs -L ${DESTDIR}/lib @@\ @@\ clean:: @@\ $(RM) program - #else /* _IBMR2 */ #define TestProgramTarget(program, objs, libs, syslibs) @@\ test:: program @@\ --- 372,409 ---- #endif /* (defined(AIX) || defined(hpux)) */ #ifdef _IBMR2 #define TestProgramTarget(program, objs, libs, syslibs) @@\ test:: program @@\ @@\ program: objs libs @@\ $(RM) $@ @@\ ! $(CC) $(CFLAGS) -o $@ objs libs syslibs @@\ @@\ clean:: @@\ $(RM) program #else /* _IBMR2 */ + #ifdef LIBDL_ENV + #define TestProgramTarget(program, objs, libs, syslibs) @@\ + test:: program @@\ + @@\ + program: objs libs @@\ + $(RM) $@ @@\ + $(CC) $(CFLAGS) -o $@ objs libs -ldl syslibs @@\ + @@\ + clean:: @@\ + $(RM) program + #else /* LIBDL_ENV */ + #ifdef hp9000s800 + #define TestProgramTarget(program, objs, libs, syslibs) @@\ + test:: program @@\ + @@\ + program: objs libs @@\ + $(RM) $@ @@\ + $(CC) $(CFLAGS) -o $@ objs libs $(DESTDIR)/lib/libossup.a syslibs @@\ + @@\ + clean:: @@\ + $(RM) program + #else /* hp9000s800 */ #define TestProgramTarget(program, objs, libs, syslibs) @@\ test:: program @@\ *************** *** 238,259 **** @@\ clean:: @@\ $(RM) program ! #endif /* _IBMR2 */ #ifdef _IBMR2 #define ProgramTarget(program, objs, libs, syslibs) @@\ all:: program @@\ @@\ program: objs libs @@\ $(RM) $@ @@\ ! $(CC) $(CFLAGS) -o $@ objs libs syslibs -L ${DESTDIR}/lib @@\ @@\ clean:: @@\ $(RM) program ! #else #define ProgramTarget(program, objs, libs, syslibs) @@\ all:: program @@\ --- 414,459 ---- @@\ clean:: @@\ $(RM) program ! #endif /* hp9000s800 */ ! #endif /* LIBDL_ENV */ #endif /* _IBMR2 */ #ifdef _IBMR2 + #define ProgramTarget(program, objs, libs, syslibs) @@\ + all:: program @@\ + @@\ + program: objs libs @@\ + $(RM) $@ @@\ + $(CC) $(CFLAGS) -o $@ objs libs syslibs @@\ + @@\ + clean:: @@\ + $(RM) program + #else + #ifdef LIBDL_ENV #define ProgramTarget(program, objs, libs, syslibs) @@\ all:: program @@\ @@\ program: objs libs @@\ $(RM) $@ @@\ ! $(CC) $(CFLAGS) -o $@ objs libs syslibs -ldl @@\ @@\ clean:: @@\ $(RM) program ! #else /* LIBDL_ENV */ ! ! #ifdef hp9000s800 ! #define ProgramTarget(program, objs, libs, syslibs) @@\ ! all:: program @@\ ! @@\ ! program: objs libs @@\ ! $(RM) $@ @@\ ! $(CC) $(CFLAGS) -o $@ objs libs $(DESTDIR)/lib/libossup.a syslibs @@\ ! @@\ ! clean:: @@\ ! $(RM) program ! #else /* hp9000s800 */ #define ProgramTarget(program, objs, libs, syslibs) @@\ all:: program @@\ *************** *** 265,270 **** --- 465,472 ---- clean:: @@\ $(RM) program + #endif /* hp9000s800 */ + #endif /* LIBDL_ENV */ #endif /* _IBMR2 */ #define CleanTarget(files) @@\ *************** *** 294,317 **** $(TAGS) -w *.[ch] @@\ $(TAGS) -xw *.[ch] > TAGS - #ifdef AFS_ENV - #define DependTarget(dependencies) @@\ - depend:: dependencies @@\ - $(DEPENDSCRIPT) $(XMAKEDEPEND) $(BASEDIR) $(DESTDIR) \ @@\ - $(XINCDIR) "$(CC)" $(CLASS) "-I. $(LOCALINCLUDES) \ @@\ - $(INCLUDES)" $(AFSBASEDIR) - #else /* AFS_ENV */ #define DependTarget(dependencies) @@\ depend:: dependencies @@\ ! $(DEPENDSCRIPT) $(XMAKEDEPEND) $(BASEDIR) $(DESTDIR) \ @@\ ! $(XINCDIR) "$(CC)" $(CLASS) "-I. $(LOCALINCLUDES) \ @@\ ! $(INCLUDES)" ! #endif /* AFS_ENV */ /* ***************************************************************** *\ * ATK compilation rules \* ***************************************************************** */ #define DynamicObject(dobj, libs, syslibs) @@\ all:: dobj.do @@\ @@\ --- 496,524 ---- $(TAGS) -w *.[ch] @@\ $(TAGS) -xw *.[ch] > TAGS #define DependTarget(dependencies) @@\ depend:: dependencies @@\ ! $(DEPENDSCRIPT) $(XMAKEDEPEND) $(CLASS) \ @@\ ! "-I. $(LOCALINCLUDES) $(INCLUDES)" "$(STD_DEFINES) $(DEFINES)" /* ***************************************************************** *\ * ATK compilation rules \* ***************************************************************** */ + #ifdef LIBDL_ENV + #define DynamicObject(dobj, libs, syslibs) @@\ + all:: dobj.do @@\ + @@\ + dobj.do: dobj.o libs @@\ + $(MAKEDO) $(MAKEDOFLAGS) -s -o dobj.do \ @@\ + dobj.o libs syslibs + + #define DynamicMultiObject(dobj, objs, libs, syslibs) @@\ + all:: dobj @@\ + @@\ + dobj: objs libs @@\ + $(MAKEDO) $(MAKEDOFLAGS) -s -o dobj objs libs syslibs + #else #define DynamicObject(dobj, libs, syslibs) @@\ all:: dobj.do @@\ @@\ *************** *** 324,329 **** --- 531,537 ---- @@\ dobj: objs libs @@\ $(MAKEDO) $(MAKEDOFLAGS) -o dobj objs libs syslibs + #endif #ifndef LINKINSTALL_ENV /* ***************************************************************** *\ *************** *** 337,342 **** --- 545,559 ---- #ifdef X11_ENV + #if defined(FONTS_TO_BDF_ENV) + #define DeclareFont(fontname) @@\ + all:: fontname.bdf @@\ + install.time:: fontname.bdf @@\ + $(INSTALL) $(INSTINCFLAGS) fontname.bdf $(DESTDIR)/X11fonts + + #define NSDeclareFont(fontname) @@\ + DeclareFont(fontname) + #else /* FONTS_TO_BDF_ENV */ #ifdef AIX #ifdef i386 /* for X11 PS/2 AIX sites. */ *************** *** 364,370 **** --- 581,605 ---- #else /* AIX */ #ifdef WM_ENV /* for X11 sites that also support WM */ + #ifdef OPENWINDOWS_ENV + #define DeclareFont(fontname) @@\ + all:: fontname.fb fontname.snf fontname.fwm @@\ + install.time:: fontname.fb @@\ + $(INSTALL) $(INSTINCFLAGS) fontname.fb $(DESTDIR)/xnwsfnts @@\ + install.time:: fontname.snf @@\ + $(INSTALL) $(INSTINCFLAGS) fontname.snf $(DESTDIR)/X11fonts @@\ + install.time:: fontname.fwm @@\ + $(INSTALL) $(INSTINCFLAGS) fontname.fwm $(DESTDIR)/fonts + #define NSDeclareFont(fontname) @@\ + all:: fontname.fb fontname.fwm @@\ + fontname.fwm: fontname.fdb @@\ + $(FDBWM) -g -F fontname.fdb @@\ + install.time:: fontname.fb @@\ + $(INSTALL) $(INSTINCFLAGS) fontname.fb $(DESTDIR)/xnwsfnts @@\ + install.time:: fontname.fwm @@\ + $(INSTALL) $(INSTINCFLAGS) fontname.fwm $(DESTDIR)/fonts + #else /* OPENWINDOWS_ENV */ #define DeclareFont(fontname) @@\ all:: fontname.snf fontname.fwm @@\ install.time:: fontname.snf @@\ *************** *** 380,389 **** $(INSTALL) $(INSTINCFLAGS) fontname.snf $(DESTDIR)/X11fonts @@\ install.time:: fontname.fwm @@\ $(INSTALL) $(INSTINCFLAGS) fontname.fwm $(DESTDIR)/fonts ! #else /* WM_ENV */ /* for X11 only sites */ #define DeclareFont(fontname) @@\ all:: fontname.snf @@\ install.time:: fontname.snf @@\ --- 615,635 ---- $(INSTALL) $(INSTINCFLAGS) fontname.snf $(DESTDIR)/X11fonts @@\ install.time:: fontname.fwm @@\ $(INSTALL) $(INSTINCFLAGS) fontname.fwm $(DESTDIR)/fonts ! #endif /* OPENWINDOWS_ENV */ #else /* WM_ENV */ /* for X11 only sites */ + #ifdef OPENWINDOWS_ENV + #define DeclareFont(fontname) @@\ + all:: fontname.fb fontname.snf @@\ + install.time:: fontname.snf @@\ + $(INSTALL) $(INSTINCFLAGS) fontname.snf $(DESTDIR)/X11fonts @@\ + install.time:: fontname.fb @@\ + $(INSTALL) $(INSTINCFLAGS) fontname.fb $(DESTDIR)/xnwsfnts + + #define NSDeclareFont(fontname) @@\ + DeclareFont(fontname) + #else /* OPENWINDOWS_ENV */ #define DeclareFont(fontname) @@\ all:: fontname.snf @@\ install.time:: fontname.snf @@\ *************** *** 392,399 **** --- 638,647 ---- #define NSDeclareFont(fontname) @@\ DeclareFont(fontname) + #endif /* OPENWINDOWS_ENV */ #endif /* WM_ENV */ #endif /* AIX */ + #endif /* FONTS_TO_BDF_ENV */ #else /* X11_ENV */ #ifdef WM_ENV /* for WM only sites */ *************** *** 425,430 **** --- 673,688 ---- #ifdef X11_ENV + #if defined(FONTS_TO_BDF_ENV) + #define DeclareFont(fontname) @@\ + all:: fontname.bdf @@\ + install.time:: fontname.bdf @@\ + $(RM) $(DESTDIR)/X11fonts/fontname.bdf @@\ + $(LN) `pwd`/fontname.bdf $(DESTDIR)/X11fonts/fontname.bdf + + #define NSDeclareFont(fontname) @@\ + DeclareFont(fontname) + #else /* FONTS_TO_BDF_ENV */ #ifdef AIX #ifdef i386 /* for X11 PS/2 AIX sites. */ *************** *** 455,461 **** --- 713,742 ---- #else /* AIX */ #ifdef WM_ENV /* for X11 sites that also support WM */ + #ifdef OPENWINDOWS_ENV + #define DeclareFont(fontname) @@\ + all:: fontname.fb fontname.snf fontname.fwm @@\ + install.time:: fontname.fb @@\ + $(RM) $(DESTDIR)/xnwsfnts/fontname.fb @@\ + $(LN) `pwd`/fontname.fb $(DESTDIR)/xnwsfnts/fontname.fb @@\ + install.time:: fontname.snf @@\ + $(RM) $(DESTDIR)/X11fonts/fontname.snf @@\ + $(LN) `pwd`/fontname.snf $(DESTDIR)/X11fonts/fontname.snf @@\ + install.time:: fontname.fwm @@\ + $(RM) $(DESTDIR)/fonts/fontname.fwm @@\ + $(LN) `pwd`/fontname.fwm $(DESTDIR)/fonts/fontname.fwm + #define NSDeclareFont(fontname) @@\ + all:: fontname.fb fontname.fwm @@\ + fontname.fwm: fontname.fdb @@\ + $(FDBWM) -g -F fontname.fdb @@\ + install.time:: fontname.fb @@\ + $(RM) $(DESTDIR)/xnwsfnts/fontname.fb @@\ + $(LN) `pwd`/fontname.fb $(DESTDIR)/xnwsfnts/fontname.fb @@\ + install.time:: fontname.fwm @@\ + $(RM) $(DESTDIR)/fonts/fontname.fwm @@\ + $(LN) `pwd`/fontname.fwm $(DESTDIR)/fonts/fontname.fwm + #else /* OPENWINDOWS_ENV */ #define DeclareFont(fontname) @@\ all:: fontname.snf fontname.fwm @@\ install.time:: fontname.snf @@\ *************** *** 475,484 **** install.time:: fontname.fwm @@\ $(RM) $(DESTDIR)/fonts/fontname.fwm @@\ $(LN) `pwd`/fontname.fwm $(DESTDIR)/fonts/fontname.fwm ! #else /* WM_ENV */ /* for X11 only sites */ #define DeclareFont(fontname) @@\ all:: fontname.snf @@\ install.time:: fontname.snf @@\ --- 756,778 ---- install.time:: fontname.fwm @@\ $(RM) $(DESTDIR)/fonts/fontname.fwm @@\ $(LN) `pwd`/fontname.fwm $(DESTDIR)/fonts/fontname.fwm ! #endif /* OPENWINDOWS_ENV */ #else /* WM_ENV */ /* for X11 only sites */ + #ifdef OPENWINDOWS_ENV + #define DeclareFont(fontname) @@\ + all:: fontname.fb fontname.snf @@\ + install.time:: fontname.fb @@\ + $(RM) $(DESTDIR)/xnwsfnts/fontname.fb @@\ + $(LN) `pwd`/fontname.fb $(DESTDIR)/xnwsfnts/fontname.fb @@\ + install.time:: fontname.snf @@\ + $(RM) $(DESTDIR)/X11fonts/fontname.snf @@\ + $(LN) `pwd`/fontname.snf $(DESTDIR)/X11fonts/fontname.snf + + #define NSDeclareFont(fontname) @@\ + DeclareFont(fontname) + #else /* OPENWINDOWS_ENV */ #define DeclareFont(fontname) @@\ all:: fontname.snf @@\ install.time:: fontname.snf @@\ *************** *** 488,495 **** --- 782,791 ---- #define NSDeclareFont(fontname) @@\ DeclareFont(fontname) + #endif /* OPENWINDOWS_ENV */ #endif /* WM_ENV */ #endif /* AIX */ + #endif /* FONTS_TO_BDF_ENV */ #else /* X11_ENV */ #ifdef WM_ENV /* for WM only sites */ *************** *** 515,525 **** --- 811,842 ---- #endif LINKINSTALL_ENV + #ifdef NO_FONTS_ENV + #define FontRule() + #else /* NO_FONTS_ENV */ #ifdef X11_ENV #ifdef AIX #ifdef i386 /* for X11 PS/2 AIX sites. */ + #ifndef FONTS_TO_BDF_ENV + #ifdef OPENWINDOWS_ENV + #define FontRule() @@\ + .fdb.fb: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >/tmp/$*.bdf @@\ + $(CONVERTFONT) -n `egrep '^FONT ' /tmp/$*.bdf | sed -e 's/FONT //'` -o $* -f 200 /tmp/$*.bdf @@\ + $(RM) /tmp/$*.tfdb /tmp/$*.bdf @@\ + .bdf.fb: @@\ + $(CONVERTFONT) -n `egrep '^FONT ' $*.bdf | sed -e 's/FONT //'` -o $* -f 200 $*.bdf @@\ + .fdb.snf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb > /tmp/$*.bdf @@\ + $(XFC) /tmp/$*.bdf >$*.snf @@\ + $(RM) /tmp/$*.tfdb /tmp/$*.bdf @@\ + .bdf.snf: @@\ + $(XFC)$*.bdf >$*.snf + #else /* OPENWINDOWS_ENV */ #define FontRule() @@\ .fdb.snf: @@\ $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ *************** *** 526,535 **** --- 843,861 ---- $(FDBBDF) /tmp/$*.tfdb >/tmp/$*.bdf @@\ $(XFC) /tmp/$*.bdf >$*.snf @@\ $(RM) /tmp/$*.bdf /tmp/$*.tfdb + #endif /* OPENWINDOWS_ENV */ + #else /* FONTS_TO_BDF_ENV */ + #define FontRule() @@\ + .fdb.bdf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >$*.bdf @@\ + $(RM) /tmp/$*.tfdb + #endif /* FONTS_TO_BDF_ENV */ #else /* i386 */ /* for X11 RT/PC AIX sites. */ + #ifndef FONTS_TO_BDF_ENV #define FontRule() @@\ .fdb.rtx: @@\ $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ *************** *** 537,542 **** --- 863,875 ---- $(XFC) /tmp/$*.bdf /tmp/$*.rtx @@\ $(MV) /tmp/$*.rtx $*.rtx @@\ $(RM) /tmp/$*.bdf /tmp/$*.tfdb + #else /* FONTS_TO_BDF_ENV */ + #define FontRule() @@\ + .fdb.bdf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >$*.bdf @@\ + $(RM) /tmp/$*.tfdb + #endif /* FONTS_TO_BDF_ENV */ #endif /* i386 */ #else /* AIX */ *************** *** 543,548 **** --- 876,899 ---- #ifdef WM_ENV /* for X11 sites that also support WM */ + #ifndef FONTS_TO_BDF_ENV + #ifdef OPENWINDOWS_ENV + #define FontRule() @@\ + .fdb.fb: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >/tmp/$*.bdf @@\ + $(CONVERTFONT) -n `egrep '^FONT ' /tmp/$*.bdf | sed -e 's/FONT //'` -o $* -f 200 /tmp/$*.bdf @@\ + $(RM) /tmp/$*.bdf /tmp/$*.tfdb @@\ + .bdf.fb: @@\ + $(CONVERTFONT) -n `egrep '^FONT ' $*.bdf | sed -e 's/FONT //'` -o $* -f 200 $*.bdf @@\ + .fdb.snf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >$*.bdf @@\ + $(XFC) $*.bdf >$*.snf @@\ + $(RM) /tmp/$*.tfdb @@\ + .bdf.snf: @@\ + $(XFC) $*.bdf >$*.snf + #else /* OPENWINDOWS_ENV */ #define FontRule() @@\ .fdb.snf: @@\ $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ *************** *** 551,560 **** --- 902,956 ---- $(RM) /tmp/$*.bdf /tmp/$*.tfdb @@\ @@\ .fdb.fwm: ; $(FDBWM) -O -F $*.fdb + #endif /* OPENWINDOWS_ENV */ + #else /* FONTS_TOBDF_ENV */ + #define FontRule() @@\ + .fdb.bdf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >$*.bdf @@\ + $(RM) /tmp/$*.tfdb @@\ + @@\ + .fdb.fwm: ; $(FDBWM) -O -F $*.fdb + #endif /* FONTS_TO_BDF_ENV */ #else /* WM_ENV */ /* for X11 only sites */ + #ifdef SCOunix + #ifndef FONTS_TO_BDF_ENV + #define FontRule() @@\ + .fdb.snf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >/tmp/$*.bdf @@\ + $(XFC) /tmp/$*.bdf @@\ + $(MV) /tmp/$*.snf $*.snf @@\ + $(RM) /tmp/$*.bdf /tmp/$*.tfdb + #else /* FONTS_TO_BDF_ENV */ + #define FontRule() @@\ + .fdb.bdf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >$*.bdf @@\ + $(RM) /tmp/$*.tfdb + #endif /* FONTS_TO_BDF_ENV */ + #else /* SCOunix */ + #ifndef FONTS_TO_BDF_ENV + #ifdef OPENWINDOWS_ENV + #define FontRule() @@\ + .fdb.fb: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >/tmp/$*.bdf @@\ + $(CONVERTFONT) -n `egrep '^FONT ' /tmp/$*.bdf | sed -e 's/FONT //'` -o $* -f 200 /tmp/$*.bdf @@\ + $(RM) /tmp/$*.bdf /tmp/$*.tfdb @@\ + .bdf.fb: @@\ + $(CONVERTFONT) -n `egrep '^FONT ' $*.bdf | sed -e 's/FONT //'` -o $* -f 200 $*.bdf @@\ + .fdb.snf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb > /tmp/$*.bdf @@\ + $(XFC) /tmp/$*.bdf >$*.snf @@\ + $(RM) /tmp/$*.tfdb /tmp/$*.bdf @@\ + .bdf.snf : @@\ + $(XFC) $*.bdf >$*.snf + #else /* OPENWINDOWS_ENV */ #define FontRule() @@\ .fdb.snf: @@\ $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ *************** *** 561,566 **** --- 957,971 ---- $(FDBBDF) /tmp/$*.tfdb >/tmp/$*.bdf @@\ $(XFC) /tmp/$*.bdf >$*.snf @@\ $(RM) /tmp/$*.bdf /tmp/$*.tfdb + #endif /* OPENWINDOWS_ENV */ + #else /* FONTS_TO_BDF_ENV */ + #define FontRule() @@\ + .fdb.bdf: @@\ + $(SED) -e 's/^$$spacing \(.*\),.*$$/$$spacing \1,0/' $*.fdb > /tmp/$*.tfdb @@\ + $(FDBBDF) /tmp/$*.tfdb >$*.bdf @@\ + $(RM) /tmp/$*.tfdb + #endif /* FONTS_TO_BDF_ENV */ + #endif /* SCOunix */ #endif /* WM_ENV */ #endif /* AIX */ *************** *** 570,579 **** #define FontRule() @@\ .fdb.fwm: ; $(FDBWM) -O -F $*.fdb - #endif /* WM_ENV */ #endif /*X11_ENV */ ! /* ***************************************************************** *\ --- 975,983 ---- #define FontRule() @@\ .fdb.fwm: ; $(FDBWM) -O -F $*.fdb #endif /* WM_ENV */ #endif /*X11_ENV */ ! #endif /* NO_FONTS_ENV */ /* ***************************************************************** *\ *************** *** 599,605 **** for i in $?; do \ @@\ (set -x; $(INSTALL) $(INSTDOFLAGS) $$i \ @@\ $(DESTDIR)/dlib/atk) done) @@\ ! $(BASEDIR)/bin/doindex -d$(DESTDIR)/dlib/atk dolist @@\ @@\ install.time:: ihlist @@\ @(case '$(MFLAGS)' in *[i]*) set +e;; esac; \ @@\ --- 1003,1009 ---- for i in $?; do \ @@\ (set -x; $(INSTALL) $(INSTDOFLAGS) $$i \ @@\ $(DESTDIR)/dlib/atk) done) @@\ ! $(BASEDIR)/bin/doindex -d $(DESTDIR)/dlib/atk dolist @@\ @@\ install.time:: ihlist @@\ @(case '$(MFLAGS)' in *[i]*) set +e;; esac; \ @@\ *************** *** 648,653 **** --- 1052,1084 ---- install.time:: file @@\ $(INSTALL) $(INSTPROGFLAGS) file dest + #ifdef SCOunix + #define InstallCshScript(file, dest) @@\ + install.time:: file @@\ + $(RM) /tmp/,file @@\ + /bin/echo \: "\n/bin/csh -f -s csh \$$* << '==EOF=='\nshift" > /tmp/,file @@\ + cat file >> /tmp/,file @@\ + /bin/echo "==EOF==" >> /tmp/,file @@\ + $(INSTALL) $(INSTAPROFGLAGS) /tmp/,file dest/file @@\ + $(RM) /tmp/,file + + #define InstallShScript(file, dest) @@\ + install.time:: file @@\ + $(RM) /tmp/file @@\ + /bin/echo \: > /tmp/,file @@\ + cat file >> /tmp/,file @@\ + $(INSTALL) $(INSTAPROFGLAGS) /tmp/,file dest @@\ + $(RM) /tmp/,file + #else /* SCOunix */ + #define InstallShScript(file, dest) @@\ + install.time:: file @@\ + $(INSTALL) $(INSTPROGFLAGS) file dest + + #define InstallCshScript(file, dest) @@\ + install.time:: file @@\ + $(INSTALL) $(INSTPROGFLAGS) file dest + #endif /* SCOunix */ + #define InstallProgramRW(file, dest) @@\ install.time:: file @@\ $(INSTALL) $(INSTPROGRWFLAGS) file dest *************** *** 694,699 **** --- 1125,1154 ---- #define InstallFileToFile(file, flags, destfile) @@\ LinkInstallFile(file, destfile) + #ifdef SCOunix + #define InstallCshScript(file, dest) @@\ + install.time:: file @@\ + $(RM) /tmp/,file @@\ + /bin/echo \: "\n/bin/csh -f -s csh \$$* << '==EOF=='\nshift" > /tmp/,file @@\ + cat file >> /tmp/,file @@\ + /bin/echo "==EOF==" >> /tmp/,file @@\ + $(INSTALL) $(INSTAPROFGLAGS) /tmp/,file dest @@\ + $(RM) /tmp/,file + + #define InstallShScript(file, dest) @@\ + install.time:: file @@\ + $(RM) /tmp/file @@\ + /bin/echo \: > /tmp/,file @@\ + cat file >> /tmp/,file @@\ + $(INSTALL) $(INSTAPROFGLAGS) /tmp/,file dest @@\ + $(RM) /tmp/,file + #else + #define InstallCshScript(file, dest) @@\ + LinkInstallFile(file, dest) + #define InstallShScript(file, dest) @@\ + LinkInstallFile(file, dest) + #endif /* SCOunix */ + #define InstallProgram(file, dest) @@\ LinkInstallFile(file, dest/file) *************** *** 715,721 **** PWD=`pwd`; for i in $?; do \ @@\ (set -x; $(RM) $(DESTDIR)/dlib/atk/$$i;\ @@\ $(LN) $$PWD/$$i $(DESTDIR)/dlib/atk) done) @@\ ! $(BASEDIR)/bin/doindex -d$(DESTDIR)/dlib/atk dolist @@\ @@\ install.time:: ihlist @@\ @case '$(MFLAGS)' in *[i]*) set +e;; esac; \ @@\ --- 1170,1176 ---- PWD=`pwd`; for i in $?; do \ @@\ (set -x; $(RM) $(DESTDIR)/dlib/atk/$$i;\ @@\ $(LN) $$PWD/$$i $(DESTDIR)/dlib/atk) done) @@\ ! $(BASEDIR)/bin/doindex -d $(DESTDIR)/dlib/atk dolist @@\ @@\ install.time:: ihlist @@\ @case '$(MFLAGS)' in *[i]*) set +e;; esac; \ @@\ *************** *** 785,791 **** $(RM) \#* ,* *~ *.CKP *.BAK *.bas errs core @@\ $(RM) *.ln *.o *.dog tags TAGS make.log @@\ clean:: @@\ ! $(RM) *.do *.eh *.ih *.a *.fwm *.snf *.rtx @@\ $(RM) install.time install.doc #define MakefileTarget() @@\ --- 1240,1246 ---- $(RM) \#* ,* *~ *.CKP *.BAK *.bas errs core @@\ $(RM) *.ln *.o *.dog tags TAGS make.log @@\ clean:: @@\ ! $(RM) *.do *.eh *.ih *.a *.fwm *.snf *.rtx *.fb @@\ $(RM) install.time install.doc #define MakefileTarget() @@\ *** config/depend.csh Wed Sep 26 16:00:37 1990 --- config/depend.csh.NEW Sun Apr 14 18:27:03 1991 *************** *** 3,71 **** set nonomatch ################################################ ################################################ ! if ( "$#argv" < 7) then ! echo 'usage: depends ${DEPEND} ${BASEDIR} ${DESTDIR} ${XINCDIR} ${CC} ${CLASS} ${INCLUDES} [${AFSBASEDIR}]' exit(1) endif ################################################ set DEPEND=$1 ! set BASEDIR=$2 ! set DESTDIR = $3 ! set XINCDIR=$4 ! set CC="$5" ! set CLASS=$6 ! set INCLUDES="$7" ! if ($#argv == 8) then ! set AFSBASEDIR=$8 else ! set AFSBASEDIR="/no/afs/includes/to/look/for" endif ################################################ ! set HFILES=`/bin/ls *.ch` set CFILES=`/bin/ls *.c` ! if ( "$#CFILES" == 0 && "$#HFILES" == 0 ) then echo "No Dependencies to Check...continuing...." exit(0) endif ################################################ ! set TMP_MKFILE=/tmp/.mkfile_$$ ! set H_DEPENDS=/tmp/Hdep_$$ ! set C_DEPENDS=/tmp/Cdep_$$ set DEPENDS=.depends ################################################ mv Makefile Makefile.BAK sed -n -e '1,/##### DEPENDENCY LINE - DO NOT DELETE #####/p' Makefile.BAK > Makefile ################################################ ! if ( "$#HFILES" != 0) then ! foreach i (${HFILES}) ! ${CLASS} -M ${INCLUDES} ${i} | egrep : | egrep -v ":.*:" >> $H_DEPENDS end ! cat Makefile ${H_DEPENDS} >> ${TMP_MKFILE} ! set IHFILES=`echo ${HFILES} | sed -e 's;\.ch;.ih;g'` make -f ${TMP_MKFILE} ${IHFILES} INCLUDES="${INCLUDES}" endif ################################################ echo >! ${C_DEPENDS} if ( "$#CFILES" != 0) then ! ${DEPEND} -s "##### DEPENDENCY LINE - DO NOT DELETE #####" ${INCLUDES} -f ${C_DEPENDS} -w 1 *.c endif - ################################################ - if (-e ${H_DEPENDS} && ! -z ${H_DEPENDS}) then - cat ${H_DEPENDS} >> ${C_DEPENDS} - endif ! cat ${C_DEPENDS} | sed \ ! -e s+${BASEDIR}+\$\{BASEDIR\}/+g \ ! -e s+${DESTDIR}+\$\{DESTDIR\}/+g \ ! -e s+${XINCDIR}+\$\{XINCDIR\}/+g \ ! -e s+${AFSBASEDIR}+\$\{AFSBASEDIR\}/+g \ ! -e s+//+/+g \ ! | egrep -v " /| /|#####" \ ! > ${DEPENDS} ! ################################################ ! if (! -z $DEPENDS) then ! cat $DEPENDS >> Makefile ! endif ! rm -f ${H_DEPENDS}.bak ${C_DEPENDS}.bak ${TMP_MKFILE}.bak ${DEPENDS}.bak $H_DEPENDS $C_DEPENDS $TMP_MKFILE --- 3,56 ---- set nonomatch ################################################ ################################################ ! if ( $#argv < 3 || $#argv > 4) then ! echo 'usage: depends ${DEPEND} ${CLASS} ${INCLUDES} [${DEFINES}]' exit(1) endif ################################################ set DEPEND=$1 ! set CLASS=$2 ! set INCLUDES="$3" ! if ($#argv == 4) then ! set DEFINES="$4" else ! set DEFINES=" " endif ################################################ ! set CHFILES=`/bin/ls *.ch` set CFILES=`/bin/ls *.c` ! if ( "$#CFILES" == 0 && "$#CHFILES" == 0 ) then echo "No Dependencies to Check...continuing...." exit(0) endif ################################################ ! set TMP_MKFILE=/tmp/Dep1_$$ ! set CH_DEPENDS=/tmp/Dep2_$$ ! set C_DEPENDS=/tmp/Dep3_$$ set DEPENDS=.depends ################################################ mv Makefile Makefile.BAK sed -n -e '1,/##### DEPENDENCY LINE - DO NOT DELETE #####/p' Makefile.BAK > Makefile ################################################ ! echo >! ${CH_DEPENDS} ! if ( "$#CHFILES" != 0) then ! foreach i (${CHFILES}) ! ${CLASS} -M ${INCLUDES} ${i} | egrep : | egrep -v ":.*:" >> $CH_DEPENDS end ! cat Makefile ${CH_DEPENDS} >> ${TMP_MKFILE} ! set IHFILES=`echo ${CHFILES} | sed -e 's;\.ch;.ih;g'` make -f ${TMP_MKFILE} ${IHFILES} INCLUDES="${INCLUDES}" endif ################################################ echo >! ${C_DEPENDS} if ( "$#CFILES" != 0) then ! ${DEPEND} -s "##### DEPENDENCY LINE - DO NOT DELETE #####" ${DEFINES} ${INCLUDES} -f ${C_DEPENDS} -w 1 *.c endif ! sed -e 's/##### DEPENDENCY LINE - DO NOT DELETE #####//g' ${CH_DEPENDS} ${C_DEPENDS} >> Makefile + foreach i ( ${C_DEPENDS} ${CH_DEPENDS} ${TMP_MKFILE} ) + rm -f $i $i.bak + end + rm -f ${DEPENDS}.bak *** config/imake.tmpl Wed Sep 26 16:00:38 1990 --- config/imake.tmpl.NEW Mon Jun 3 15:04:46 1991 *************** *** 29,36 **** #endif /* AIX */ #ifdef ibm032 ! #include ! #define MacroIncludeFile rt_r3/system.mcr #endif /* ibm032 */ #ifdef vax --- 29,36 ---- #endif /* AIX */ #ifdef ibm032 ! #include ! #define MacroIncludeFile rt_aos4/system.mcr #endif /* ibm032 */ #ifdef vax *************** *** 52,58 **** #if defined(mc68010) || defined(sun2) /* sun2 */ #include #define MacroIncludeFile sun2_35/system.mcr ! #endif mc68010 or sun2 /* sun2 */ #if defined(mc68020) || defined(sun3) /* sun3 */ #ifndef sunV3 --- 52,58 ---- #if defined(mc68010) || defined(sun2) /* sun2 */ #include #define MacroIncludeFile sun2_35/system.mcr ! #endif /* mc68010 or sun2 /* sun2 */ #if defined(mc68020) || defined(sun3) /* sun3 */ #ifndef sunV3 *************** *** 62,81 **** #include #define MacroIncludeFile sun3_35/system.mcr #else /* sunV3 */ #include #define MacroIncludeFile sun3_4/system.mcr #endif /* sunV3 */ #endif /* sun3 */ #if defined(sparc) || defined(sun4) /* sun4 */ #include #define MacroIncludeFile sun4_40/system.mcr ! #endif sparc or sun4 /* sun4 */ #endif /* sun */ #ifdef hpux #include #define MacroIncludeFile hp300/system.mcr #endif /* hpux */ #ifdef mac2 --- 62,112 ---- #include #define MacroIncludeFile sun3_35/system.mcr #else /* sunV3 */ + /* + * Sleazy hack to tell 4.0[.x] from 4.1[.x]. + * should be safe to include, as it only defines "alloca()" + * and, in 4.1[.x], "_alloca_h". Neither of those should affect "imake". + */ + #include + #ifdef _alloca_h + /* + * 4.1[.x]. + */ + #include + #define MacroIncludeFile sun3_41/system.mcr + #else /* sunV4_1 */ + /* + * 4.0[.x]. + */ #include #define MacroIncludeFile sun3_4/system.mcr + #endif /* _alloca_h */ #endif /* sunV3 */ #endif /* sun3 */ #if defined(sparc) || defined(sun4) /* sun4 */ + /* + * Same sleazy hack as for Sun-3s. + */ + #include + #ifdef _alloca_h + #include + #define MacroIncludeFile sun4_41/system.mcr + #else /* sunV4_1 */ #include #define MacroIncludeFile sun4_40/system.mcr ! #endif /* sunV4_1 */ ! #endif /* sparc or sun4 */ #endif /* sun */ #ifdef hpux + #ifdef hp9000s800 + #include + #define MacroIncludeFile hp800/system.mcr + #else /* hp9000s800 */ #include #define MacroIncludeFile hp300/system.mcr + #endif /* hp9000s800 */ #endif /* hpux */ #ifdef mac2 *************** *** 94,99 **** --- 125,135 ---- #define MacroIncludeFile apollo68k/system.mcr #endif + #ifdef SCOunix + #include + #define MacroIncludeFile sco_i386/system.mcr + #endif /* SCOunix */ + /**/# /**/# Back from the macro file /**/# *************** *** 100,106 **** MACROFILE = MacroIncludeFile ! .SUFFIXES: .PS .do .o .ih .eh .fwm .snf .rtx .c .s .spp .y .l .ch .mss .fdb .bdf #ifdef ConstructMFLAGS MFLAGS = -${MAKEFLAGS} --- 136,142 ---- MACROFILE = MacroIncludeFile ! .SUFFIXES: .PS .do .o .ih .eh .fwm .snf .rtx .c .s .spp .y .l .ch .mss .fdb .bdf .fb #ifdef ConstructMFLAGS MFLAGS = -${MAKEFLAGS} *************** *** 118,165 **** INSTDOFLAGS = -c -m 0444 INSTPROGRWFLAGS = -c -m 0755 #ifdef AFS_ENV - - UTILLIB = ${BASEDIR}/lib/libutil.a \ - ${AFSBASEDIR}/lib/afs/libauth.a \ - ${AFSBASEDIR}/lib/afs/libsys.a \ - ${AFSBASEDIR}/lib/librx.a \ - ${AFSBASEDIR}/lib/liblwp.a - #ifdef AFS30_ENV PRSLIB = $(AFSBASEDIR)/lib/afs/libprot.a \ $(AFSBASEDIR)/lib/libubik.a \ - $(AFSBASEDIR)/lib/librx.a \ - $(AFSBASEDIR)/lib/librxkad.a \ $(AFSBASEDIR)/lib/afs/libauth.a \ $(AFSBASEDIR)/lib/liblwp.a \ $(AFSBASEDIR)/lib/libscrypt.a \ ! $(AFSBASEDIR)/lib/afs/libcom_err.a #else /* #ifdef AFS30_ENV */ PRSLIB = #endif /* #ifdef AFS30_ENV */ ! ! #else /* AFS_ENV */ ! ! UTILLIB = ${BASEDIR}/lib/libutil.a PRSLIB = - #endif /* AFS_ENV */ #ifdef ANDREW_MALLOC_ENV - #ifdef DEBUG_MALLOC_ENV MALLOCLIB = ${BASEDIR}/lib/libplumber.a #else /* DEBUG_MALLOC_ENV */ MALLOCLIB = ${BASEDIR}/lib/libmalloc.a #endif /* DEBUG_MALLOC_ENV */ - #else /* ANDREW_MALLOC_ENV */ /* This should actually be the empty string but needs changes to code to enable it to work. */ - MALLOCLIB = #endif /* ANDREW_MALLOC_ENV */ --- 154,209 ---- INSTDOFLAGS = -c -m 0444 INSTPROGRWFLAGS = -c -m 0755 + AFSUTILS = ${BASEDIR}/lib/libafs.a #ifdef AFS_ENV #ifdef AFS30_ENV + #ifdef AFS31_ENV + DESLIB = $(AFSBASEDIR)/lib/libdes.a PRSLIB = $(AFSBASEDIR)/lib/afs/libprot.a \ $(AFSBASEDIR)/lib/libubik.a \ $(AFSBASEDIR)/lib/afs/libauth.a \ + $(AFSBASEDIR)/lib/librxkad.a \ + $(AFSBASEDIR)/lib/librx.a \ $(AFSBASEDIR)/lib/liblwp.a \ + $(AFSBASEDIR)/lib/afs/libcom_err.a \ + $(KRBLIB) $(DESLIB) ${AFSUTILS} + #else /* #ifdef AFS31_ENV */ + PRSLIB = $(AFSBASEDIR)/lib/afs/libprot.a \ + $(AFSBASEDIR)/lib/libubik.a \ + $(AFSBASEDIR)/lib/librx.a \ + $(AFSBASEDIR)/lib/afs/libauth.a \ + $(AFSBASEDIR)/lib/librxkad.a \ + $(AFSBASEDIR)/lib/liblwp.a \ $(AFSBASEDIR)/lib/libscrypt.a \ ! $(AFSBASEDIR)/lib/afs/libcom_err.a \ ! ${AFSUTILS} ! #endif /* #ifdef AFS31_ENV */ #else /* #ifdef AFS30_ENV */ PRSLIB = #endif /* #ifdef AFS30_ENV */ ! UTILLIB = ${BASEDIR}/lib/libutil.a \ ! ${AFSBASEDIR}/lib/afs/libauth.a \ ! ${AFSBASEDIR}/lib/afs/libsys.a \ ! ${AFSBASEDIR}/lib/librx.a \ ! $(AFSBASEDIR)/lib/librxkad.a \ ! ${AFSBASEDIR}/lib/liblwp.a \ ! ${DESLIB} ${AFSUTILS} ! #else /* #ifdef AFS_ENV */ ! UTILLIB = ${BASEDIR}/lib/libutil.a ${BASEDIR}/lib/libafs.a PRSLIB = #endif /* AFS_ENV */ #ifdef ANDREW_MALLOC_ENV #ifdef DEBUG_MALLOC_ENV MALLOCLIB = ${BASEDIR}/lib/libplumber.a #else /* DEBUG_MALLOC_ENV */ MALLOCLIB = ${BASEDIR}/lib/libmalloc.a #endif /* DEBUG_MALLOC_ENV */ #else /* ANDREW_MALLOC_ENV */ /* This should actually be the empty string but needs changes to code to enable it to work. */ MALLOCLIB = #endif /* ANDREW_MALLOC_ENV */ *** config/site.rls Fri Dec 21 14:50:46 1990 --- config/site.rls.NEW Wed Jan 30 16:21:46 1991 *************** *** 1,2 **** ! + /* Empty site.rls file. Use this file to hold all */ ! + /* your site's additions to andrew.rls. */ --- 1,2 ---- ! /* Empty site.rls file. Use this file to hold all */ ! /* your site's additions to andrew.rls. */ *** config/hp300/system.h Fri Dec 21 14:15:17 1990 --- config/hp300/system.h.NEW Wed Jan 30 16:22:03 1991 *************** *** 124,130 **** #define GETDOMAIN_ENV 1 #define BUILDANDREWINSTALL_ENV 1 ! #define PRE_X11R4 1 /* Now follow the site-specific customizations. */ #include --- 124,130 ---- #define GETDOMAIN_ENV 1 #define BUILDANDREWINSTALL_ENV 1 ! #define PRE_X11R4_ENV 1 /* Now follow the site-specific customizations. */ #include *** config/hp300/system.mcr Mon Aug 6 10:57:26 1990 --- config/hp300/system.mcr.NEW Tue May 7 12:28:42 1991 *************** *** 19,25 **** /* Now for the system-dependent information. */ CDEBUGFLAGS = +O1 ! STD_DEFINES = +Nd4000 +Ns3000 -W p,-H500000 -D_CLASSIC_TYPES /* Get site-specific inclusions */ --- 19,25 ---- /* Now for the system-dependent information. */ CDEBUGFLAGS = +O1 ! STD_DEFINES = +Nd4000 +Ns3000 -W p,-H500000 -W2,-x -D_CLASSIC_TYPES /* Get site-specific inclusions */ *** config/hp800/system.h Thu May 30 19:12:52 1991 --- config/hp800/system.h.NEW Tue Apr 23 15:51:38 1991 *************** *** 0 **** --- 1,136 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1989 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + #ifndef SYSTEM_H + #define SYSTEM_H + + /* Get common definitions */ + #include + + #define OPSYSNAME "HPUX_800" + #define sys_hpux_800 1 + #define SYS_NAME "hp800" + #define HP800_ENV + #define HP_OS 70 + + /* Here follow the overrides for this system. */ + #undef SY_U52 + #define SY_U52 1 /* HP800 is most like SysVR2. */ + + #ifndef In_Imake + + #ifndef SYSV + #define SYSV 1 + #endif SYSV + + /* Get major data types (esp. caddr_t) */ + #include + + #define SYSV_STRINGS + #include + #define index strchr + #define rindex strrchr + + /* Get open(2) constants */ + #include + #include + + /* Get struct timeval */ + #include + + /* More BSDisms */ + + #if HP_OS >= 70 + #include + #else + #define SIGCHLD SIGCLD + #endif + + /* getdtablesize() and an errno which does not seem to be defined for SYSV */ + #define EDOM 33 + #define getdtablesize() _NFILE + #define setpriority(which,who,prio) (nice((prio)-nice(0))) + + #define OSI_HAS_SYMLINKS 0 + /* If OSI_HAS_SYMLINKS is not defined, osi_readlink is present in libutil. */ + extern int osi_readlink(); + + #include + #define osi_ExclusiveLockNoBlock(fid) lockf((fid), F_TLOCK, 0) + #define osi_UnLock(fid) lockf((fid), F_ULOCK, 0) + #define osi_O_READLOCK O_RDWR + #define osi_F_READLOCK "r+" + + #define osi_vfork() vfork() + + #define osi_setjmp _setjmp + #define osi_longjmp _longjmp + + /* Make a time standard. */ + struct osi_Times {unsigned long int Secs; unsigned long int USecs;}; + /* Set one of the above with a call to osi_GetTimes(&foo) */ + #define osi_GetSecs() time((long int *) 0) + #define osi_SetZone() tzset() + #define osi_ZoneNames tzname + #define osi_SecondsWest timezone + #define osi_IsEverDaylight daylight + + /* More BSD-isms */ + #define setreuid(r,e) setuid(r) + #define setlinebuf(file) setvbuf(file, NULL, _IOLBF, BUFSIZ) + + /* + * Put system-specific definitions here + */ + + #undef setreuid + #define setreuid(r,e) setresuid(r,e,-1) + + #define sigvec sigvector + + #define random rand + #define srandom srand + #define initstate(a,b,c) srand(a) + #define bcopy(src, dst, length) memmove(dst, src, length) + #define bzero(b, length) memset(b, 0, length) + #define bcmp(region1, region2, length) memcmp(region1, region2, length) + #define killpg(pgid, signal) kill(-(pgid), signal) + + #include + #define getwd(pathname) getcwd(pathname, MAXPATHLEN) + + /* hpux has no sysexits.h file anywhere. */ + #ifndef EX__BASE + #define EX_OK 0 + #define EX__BASE 64 + #define EX_USAGE 64 + #define EX_DATAERR 65 + #define EX_NOINPUT 66 + #define EX_NOUSER 67 + #define EX_NOHOST 68 + #define EX_UNAVAILABLE 69 + #define EX_SOFTWARE 70 + #define EX_OSERR 71 + #define EX_OSFILE 72 + #define EX_CANTCREAT 73 + #define EX_IOERR 74 + #define EX_TEMPFAIL 75 + #define EX_PROTOCOL 76 + #define EX_NOPERM 77 + #endif /* #ifndef EX__BASE */ + + #endif /* !In_Imake */ + + #define GETDOMAIN_ENV 1 + #define BUILDANDREWINSTALL_ENV 1 + #define PRE_X11R4 1 + #ifndef ANDREW_MALLOC_ENV + #define ANDREW_MALLOC_ENV 1 + #endif + + /* Now follow the site-specific customizations. */ + #include + + + #endif /* SYSTEM_H */ *** config/hp800/system.mcr Thu May 30 19:13:07 1991 --- config/hp800/system.mcr.NEW Tue Apr 23 15:51:39 1991 *************** *** 0 **** --- 1,28 ---- + /* Copyright IBM Corporation 1988,1989 - All Rights Reserved */ + /* For full copyright information see:'andrew/config/COPYRITE' */ + + #define In_Imake 1 + /* The next two lines need to be kept in sync */ + #include + SYSTEM_H_FILE = hp800/system.h + #undef In_Imake + + /* These next three lines help configure the embedded machine-dependent + directories overhead/class/machdep, atk/console/stats, and + atk/console/stats/common. */ + SYS_IDENT = hp800 + SYS_OS_ARCH = hp_pa_risc + + /* Get parent inclusions */ + #include + + + /* Now for the system-dependent information. */ + MALLOCALIGNMENT = 8 + CDEBUGFLAGS = + /* In order to handle all the defines needed for im.c */ + STD_DEFINES = -W p,-H500000 + + + /* Get site-specific inclusions */ + #include *** config/pmax_3/system.mcr Fri Dec 21 14:50:51 1990 --- config/pmax_3/system.mcr.NEW Wed Mar 20 13:58:09 1991 *************** *** 28,35 **** * dynamically loaded routines are addressible within the 28 bit jump * offset limit of the MIPS architecture. */ ! CC = cc -Dvoid=int -G 0 "-Wl,-D,1000000" ! /* Get site-specific inclusions */ #include --- 28,35 ---- * dynamically loaded routines are addressible within the 28 bit jump * offset limit of the MIPS architecture. */ ! CC = cc -Dvoid=int ! STD_DEFINES = -G 0 "-Wl,-D,1000000" /* Get site-specific inclusions */ #include *** config/ps_aix11/system.h Fri Dec 21 14:50:52 1990 --- config/ps_aix11/system.h.NEW Tue Jan 22 14:22:04 1991 *************** *** 18,23 **** --- 18,25 ---- /* Here follow the overrides for this system. */ #undef SY_AIX11 #define SY_AIX11 1 /* This system is most like AIX 1.1 */ + #undef POSIX_ENV + #define POSIX_ENV 1 /* This is a Posix system. */ #ifndef In_Imake *** config/ps_aix11/system.mcr Mon Aug 6 10:57:38 1990 --- config/ps_aix11/system.mcr.NEW Wed Mar 20 13:58:26 1991 *************** *** 21,27 **** XSRCDIR = / INCLUDES = -I${BASEDIR}/include/atk -I${BASEDIR}/include -I${XBASEDIR}/usr/include ! CC = cc -DBSD_INCLUDES -DBSD_REMAP_SIGNAL_TO_SIGVEC #define ConstructMFLAGS 1 RANLIB = echo ranlib is not needed on this system --- 21,28 ---- XSRCDIR = / INCLUDES = -I${BASEDIR}/include/atk -I${BASEDIR}/include -I${XBASEDIR}/usr/include ! CC = cc ! STD_DEFINES = -D_BSD #define ConstructMFLAGS 1 RANLIB = echo ranlib is not needed on this system *** config/ps_aix12/system.h Fri Dec 21 14:50:53 1990 --- config/ps_aix12/system.h.NEW Tue Jan 22 14:22:07 1991 *************** *** 18,23 **** --- 18,25 ---- /* Here follow the overrides for this system. */ #undef SY_AIX12 #define SY_AIX12 1 /* This system is most like AIX 1.2 */ + #undef POSIX_ENV + #define POSIX_ENV 1 /* This is a Posix system. */ #ifndef In_Imake *************** *** 81,92 **** #endif /* !In_Imake */ #undef RESOLVER_ENV - #undef LEVEL_ENV - #define LEVEL_ENV 1 - - #undef MK_BLD_BLKS - #undef DITROFF_ENV - /* Now follow the site-specific customizations. */ #include --- 83,88 ---- *** config/ps_aix12/system.mcr Fri Dec 21 14:50:54 1990 --- config/ps_aix12/system.mcr.NEW Wed Mar 20 13:58:43 1991 *************** *** 21,27 **** XSRCDIR = / INCLUDES = -I${BASEDIR}/include/atk -I${BASEDIR}/include -I${XBASEDIR}/usr/include ! CC = cc -D_BSD #define ConstructMFLAGS 1 RANLIB = echo ranlib is not needed on this system --- 21,28 ---- XSRCDIR = / INCLUDES = -I${BASEDIR}/include/atk -I${BASEDIR}/include -I${XBASEDIR}/usr/include ! CC = cc ! STD_DEFINES = -D_BSD #define ConstructMFLAGS 1 RANLIB = echo ranlib is not needed on this system *** config/rs_aix31/system.h Wed Sep 26 16:00:45 1990 --- config/rs_aix31/system.h.NEW Fri Jun 7 13:00:15 1991 *************** *** 1,3 **** --- 1,7 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1989 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ #ifndef SYSTEM_H #define SYSTEM_H *************** *** 9,18 **** #define sys_rt_aix3 1 #define SYS_NAME "rs_aix31" - #ifndef IBM032_ENV - #define IBM032_ENV - #endif /* IBM032_ENV */ - #ifndef _IBMR2 #define _IBMR2 1 #endif /* _IBMR2 */ --- 13,18 ---- *************** *** 21,27 **** #undef SY_AIX31 #define SY_AIX31 1 /* define for AIX 3.1 */ ! #ifndef In_Imake #undef _ANSI_C_SOURCE --- 21,29 ---- #undef SY_AIX31 #define SY_AIX31 1 /* define for AIX 3.1 */ ! #undef POSIX_ENV ! #define POSIX_ENV 1 /* This is a Posix system. */ ! #ifndef In_Imake #undef _ANSI_C_SOURCE *************** *** 77,82 **** --- 79,85 ---- * Put system-specific definitions here */ #define HAS_SYSEXITS 1 + #define BIT_ZERO_ON_LEFT 1 #endif /* !In_Imake */ *************** *** 83,93 **** /* This system needs the customized ``install'' program. */ #define BUILDANDREWINSTALL_ENV 1 ! /* Things that aren't yet handled */ ! #undef RESOLVER_ENV ! #undef LEVEL_ENV /* Now follow the site-specific customizations. */ --- 86,101 ---- /* This system needs the customized ``install'' program. */ #define BUILDANDREWINSTALL_ENV 1 ! #define GETDOMAIN_ENV 1 /* Things that aren't yet handled */ ! #ifdef ANDREW_MALLOC_ENV ! #undef ANDREW_MALLOC_ENV ! #endif /* ANDREW_MALLOC_ENV */ ! ! #ifdef DEBUG_MALLOC_ENV ! #undef DEBUG_MALLOC_ENV ! #endif /* DEBUG_MALLOC_ENV */ /* Now follow the site-specific customizations. */ *** config/rs_aix31/system.mcr Mon Aug 6 10:57:47 1990 --- config/rs_aix31/system.mcr.NEW Wed May 15 15:55:03 1991 *************** *** 1,3 **** --- 1,4 ---- + /* $Id: system.mcr,v 1.4 1991/05/15 19:48:46 gk5g Exp $ */ SHELL=/bin/sh /* Copyright IBM Corporation 1988,1989 - All Rights Reserved */ *************** *** 18,25 **** #include /* Now for the system-dependent information. */ ! CC = cc -DAIX -D_AIX -D_IBMR2 -DAIX_31 -D_BSD -U__STR__ -D_NO_PROTO -D_H_NLCTYPE ! STD_DEFINES = -qflag=i:i RANLIB = echo ranlib is not needed this system XFC = /usr/lpp/X11/bin/bdftosnf --- 19,27 ---- #include /* Now for the system-dependent information. */ ! CC = cc ! STD_DEFINES = -DAIX -D_AIX -D_IBMR2 -DAIX_31 \ ! -D_BSD -D_NO_PROTO -D_H_NLCTYPE -qflag=i:i RANLIB = echo ranlib is not needed this system XFC = /usr/lpp/X11/bin/bdftosnf *** config/rt_aos4/system.h Thu May 30 19:14:25 1991 --- config/rt_aos4/system.h.NEW Tue May 21 12:07:42 1991 *************** *** 0 **** --- 1,78 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1989 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + #ifndef SYSTEM_H + #define SYSTEM_H + + /* Get common definitions */ + #include + + #define OPSYSNAME "ibm032_4.3bsd" + #define sys_rt_aos4 1 + #define SYS_NAME "rt_aos4" + #ifndef IBM032_ENV + #define IBM032_ENV + #endif /* IBM032_ENV */ + + /* Here follow the overrides for this system. */ + #undef SY_B43 + #define SY_B43 1 /* This system is most like bsd 4.3 */ + + #define NDBM_ENV 1 + + #ifndef In_Imake + + /* Get major data types (esp. caddr_t) */ + #include + + /* Get open(2) constants */ + #include + + #include + + /* Get struct timeval */ + #include + + /* include path for syslog.h */ + #include + + /* VMUNIX vs. SY_B4x */ + #ifndef VMUNIX + #define VMUNIX 1 + #endif VMUNIX + + #define OSI_HAS_SYMLINKS 1 + #define osi_readlink(PATH,BUF,SIZE) readlink((PATH),(BUF),(SIZE)) + + #define osi_ExclusiveLockNoBlock(fid) flock((fid), LOCK_EX | LOCK_NB) + #define osi_UnLock(fid) flock((fid), LOCK_UN) + #define osi_O_READLOCK O_RDONLY + #define osi_F_READLOCK "r" + + #define osi_vfork() vfork() + + #define osi_setjmp _setjmp + #define osi_longjmp _longjmp + + /* Make a time standard. */ + struct osi_Times {unsigned long int Secs; unsigned long int USecs;}; + /* Set one of the above with a call to osi_GetTimes(&foo) */ + #define osi_GetSecs() time((long int *) 0) + extern void osi_SetZone(); + extern char *osi_ZoneNames[]; + extern long int osi_SecondsWest; + extern int osi_IsEverDaylight; + + #endif /* In_Imake */ + + /* + * Put system-specific definitions here + */ + + #define HAS_SYSEXITS 1 + + /* Now follow the site-specific customizations. */ + #include + + #endif /* SYSTEM_H */ *** config/rt_aos4/system.mcr Thu May 30 19:14:39 1991 --- config/rt_aos4/system.mcr.NEW Tue May 21 12:07:43 1991 *************** *** 0 **** --- 1,25 ---- + /* Copyright IBM Corporation 1988,1989 - All Rights Reserved */ + /* For full copyright information see:'andrew/config/COPYRITE' */ + + #define In_Imake 1 + /* The next two lines need to be kept in sync */ + #include + SYSTEM_H_FILE = rt_aos4/system.h + #undef In_Imake + + /* These next two lines help configure the embedded machine-dependent + directories overhead/class/machdep, atk/console/stats, and + atk/console/stats/common. */ + SYS_IDENT = rt_aos4 + SYS_OS_ARCH = aos_rt + + /* Get parent inclusions */ + #include + + + /* Now for the system-dependent information. */ + CC = hc + + + /* Get site-specific inclusions */ + #include *** config/sco_i386/system.h Thu May 30 19:14:53 1991 --- config/sco_i386/system.h.NEW Thu Apr 4 17:39:14 1991 *************** *** 0 **** --- 1,190 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1989 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + #ifndef SYSTEM_H + #define SYSTEM_H + + /* Get common definitions */ + #include + + #define OPSYSNAME "sco_i386" + #define sys_sco_i386 1 + #define SYS_NAME "sco_i386" + #define i386_ENV + + /* Here follow the overrides for this system. */ + #undef SY_U53 + #define SY_U53 1 /* This system is most like SVR3 */ + #undef SY_U5x + #define SY_U5x 1 + + #ifndef In_Imake + + #ifndef SYSV + #define SYSV 1 + #endif /* SYSV */ + + #define select Xselect + #include + + /* Get major data types (esp. caddr_t) */ + #include + + #define SYSV_STRINGS + #include + #define index strchr + #define rindex strrchr + + /* Get open(2) constants */ + #include + #include + + /* Get struct timeval */ + #include + + /* More BSDisms */ + + #define SIGCHLD SIGCLD + + /* getdtablesize() and an errno which does not seem to be defined for SYSV */ + #define getdtablesize() _NFILE + #define setpriority(which,who,prio) (nice((prio)-nice(0))) + + #define OSI_HAS_SYMLINKS 0 + /* If OSI_HAS_SYMLINKS is not defined, osi_readlink is present in libutil. */ + extern int osi_readlink(); + + #include + #define osi_ExclusiveLockNoBlock(fid) lockf((fid), F_TLOCK, 0) + #define osi_UnLock(fid) lockf((fid), F_ULOCK, 0) + #define osi_O_READLOCK O_RDWR + #define osi_F_READLOCK "r+" + + #define osi_vfork() fork() + + #define osi_setjmp _setjmp + #define osi_longjmp _longjmp + + /* Make a time standard. */ + struct osi_Times {unsigned long int Secs; unsigned long int USecs;}; + /* Set one of the above with a call to osi_GetTimes(&foo) */ + #define osi_GetSecs() time((long int *) 0) + #define osi_SetZone() tzset() + #define osi_ZoneNames tzname + #define osi_SecondsWest timezone + #define osi_IsEverDaylight daylight + + /* More BSD-isms */ + #define setreuid(r,e) setuid(r) + #define setlinebuf(file) setvbuf(file, NULL, _IOLBF, BUFSIZ) + + /* + * Put system-specific definitions here + */ + + + #define sigvec sigaction + #define sv_handler sa_handler + #define sv_mask sa_mask + #define sv_flags sa_flags + #define sv_onstack sa_flags + + #define random rand + #define srandom srand + #define initstate(a,b,c) srand(a) + /* bcopy defined below */ + #define bzero(b, length) memset(b, 0, length) + #define bcmp(region1, region2, length) memcmp(region1, region2, length) + #define killpg(pgid, signal) kill(-(pgid), signal) + + #include + #define MAXPATHLEN 512 + #define getwd(pathname) getcwd(pathname, MAXPATHLEN) + + #include + + /* + * Structure of the information in the first word returned by both + * wait and wait3. If w_stopval==WSTOPPED, then the second structure + * describes the information returned, else the first. See WUNTRACED below. + */ + union wait { + int w_status; /* used in syscall */ + /* + * Terminated process status. + */ + struct { + unsigned short w_pad; /* pad to low order 16 bits */ + unsigned short w_Retcode:8; /* exit code if w_termsig==0 */ + unsigned short w_Coredump:1; /* core dump indicator */ + unsigned short w_Termsig:7; /* termination signal */ + } w_T; + /* + * Stopped process status. Returned + * only for traced children unless requested + * with the WUNTRACED option bit. + */ + struct { + unsigned short w_pad; /* pad to low order 16 bits */ + unsigned short w_Stopsig:8; /* signal that stopped us */ + unsigned short w_Stopval:8; /* == W_STOPPED if stopped */ + } w_S; + }; + # define w_termsig w_T.w_Termsig + # define w_coredump w_T.w_Coredump + # define w_retcode w_T.w_Retcode + # define w_stopval w_S.w_Stopval + # define w_stopsig w_S.w_Stopsig + + # define WSTOPPED 0177 /* value of s.stopval if process is stopped */ + + #define wait3(stat_loc,options,pid) waitpid(-1,(stat_loc),(options)) + + #define L_SET SEEK_SET + #define L_INCR SEEK_CUR + #define L_XTND SEEK_END + + #define MAX(a,b) ((a)>(b)?(a):(b)) + #define MIN(a,b) ((a)<(b)?(a):(b)) + + #define lstat(a,b) stat((a),(b)) + + /* to work around a bug in gethostname */ + #define gethostname(a,b) (((b)<127)?(gethostname((a),(b))):(gethostname((a),127))) + + /* These are valid for 3.2v0 through 3.2v2 + */ + #define USESHORTFILENAMES 1 + #define NO_ITIMER_ENV 1 + + #endif /* !In_Imake */ + + #undef RESOLVER_ENV + #define PRE_X11R4_ENV 1 + #define USE_MMDF_ENV 1 + + /* Now follow the site-specific customizations. */ + #include + + #ifndef In_Imake + #ifndef MEMMOVE_IS_BROKEN + #define bcopy(src, dst, length) memmove(dst, src, length) + #endif + #ifdef RENAME_IS_BROKEN + #define rename sco_rename + #endif + #ifdef NO_ITIMER_ENV + struct itimerval { + struct timeval it_interval; /* timer interval */ + struct timeval it_value; /* current value */ + }; + #define ITIMER_REAL 0 /* real time intervals */ + #define ITIMER_VIRTUAL 1 /* virtual time intervals */ + #define ITIMER_PROF 2 /* user and system virtual time */ + #else + #include + #endif /* NO_ITIMER_ENV */ + #endif /* !In_Imake */ + + #endif /* SYSTEM_H */ *** config/sco_i386/system.mcr Thu May 30 19:15:11 1991 --- config/sco_i386/system.mcr.NEW Thu Apr 4 17:39:14 1991 *************** *** 0 **** --- 1,33 ---- + /* Copyright IBM Corporation 1988,1989 - All Rights Reserved */ + /* For full copyright information see:'andrew/config/COPYRITE' */ + + #define In_Imake 1 + /* The next two lines need to be kept in sync */ + #include + SYSTEM_H_FILE = sco_i386/system.h + #undef In_Imake + + /* These next three lines help configure the embedded machine-dependent + directories overhead/class/machdep, atk/console/stats, and + atk/console/stats/common. */ + SYS_IDENT = sco_i386 + SYS_OS_ARCH = sco_i386 + + /* Get parent inclusions */ + #include + + + /* Now for the system-dependent information. */ + CDEBUGFLAGS = -O + STD_DEFINES = -DM_UNIX + ConstructMFLAGS = + XUTILDIR = /usr/bin/X11 + LN = ln + DEPENDSCRIPT = $(CSHELL) $(TOP)/config/depend.csh + RANLIB = echo ranlib is not required on this system + NETLIBS = -lsocket + MMDFLIBS = -lmmdf + AUTHLIBS = -lcrypt -lprot + + /* Get site-specific inclusions */ + #include *** config/sun2_35/system.mcr Fri Dec 21 14:50:55 1990 --- config/sun2_35/system.mcr.NEW Tue May 7 15:22:55 1991 *************** *** 16,21 **** --- 16,25 ---- /* Get parent inclusions */ #include + #ifdef OPENWINDOWS_ENV + CONVERTFONT = /usr/openwin/bin/convertfont + BLDFAMILY = /usr/openwin/bin/bldfamily + #endif /*OPENWINDOWS_ENV */ /* Now for the system-dependent information. */ /* (currently none) */ *** config/sun3_35/system.mcr Mon Aug 6 10:57:57 1990 --- config/sun3_35/system.mcr.NEW Tue May 7 15:23:01 1991 *************** *** 16,21 **** --- 16,25 ---- /* Get parent inclusions */ #include + #ifdef OPENWINDOWS_ENV + CONVERTFONT = /usr/openwin/bin/convertfont + BLDFAMILY = /usr/openwin/bin/bldfamily + #endif /*OPENWINDOWS_ENV */ /* Now for the system-dependent information. */ /* (currently none) */ *** config/sun3_4/system.mcr Mon Aug 6 10:57:59 1990 --- config/sun3_4/system.mcr.NEW Tue May 7 15:23:05 1991 *************** *** 16,21 **** --- 16,25 ---- /* Get parent inclusions */ #include + #ifdef OPENWINDOWS_ENV + CONVERTFONT = /usr/openwin/bin/convertfont + BLDFAMILY = /usr/openwin/bin/bldfamily + #endif /*OPENWINDOWS_ENV */ /* Now for the system-dependent information. */ /* (nothing at present) */ *** config/sun3_41/system.h Thu May 30 19:16:04 1991 --- config/sun3_41/system.h.NEW Tue Apr 30 16:42:48 1991 *************** *** 0 **** --- 1,87 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1989 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + #ifndef SYSTEM_H + #define SYSTEM_H + + /* Get common definitions */ + #include + + #define OPSYSNAME "SUN3_4.3bsd" + #define sys_sun3_41 1 + #define SYS_NAME "sun3_41" + #define SUN_ENV + + /* SunOS 4.1 has the "-ldl" library. */ + #ifndef LIBDL_ENV + #define LIBDL_ENV 1 + #endif /* LIBDL_ENV */ + + /* Here follow the overrides for this system. */ + #undef SY_B43 + #define SY_B43 1 /* This system is most like bsd 4.3 */ + + #ifndef In_Imake + + /* Get major data types (esp. caddr_t) */ + #include + + #include + + /* Get open(2) constants */ + #include + + /* Get struct timeval */ + #include + + /* include path for syslog.h */ + #include + + #ifdef POSIX_ENV + #undef POSIX_ENV + #endif /* POSIX_ENV */ + #define POSIX_ENV 1 + + #ifndef VMUNIX + #define VMUNIX 1 + #endif VMUNIX + + #define OSI_HAS_SYMLINKS 1 + + #define osi_readlink(PATH,BUF,SIZE) readlink((PATH),(BUF),(SIZE)) + + #define osi_ExclusiveLockNoBlock(fid) flock((fid), LOCK_EX | LOCK_NB) + #define osi_UnLock(fid) flock((fid), LOCK_UN) + #define osi_O_READLOCK O_RDONLY + #define osi_F_READLOCK "r" + + #define osi_vfork() vfork() + + #define osi_setjmp _setjmp + #define osi_longjmp _longjmp + + /* Make a time standard. */ + struct osi_Times {unsigned long int Secs; unsigned long int USecs;}; + /* Set one of the above with a call to osi_GetTimes(&foo) */ + #define osi_GetSecs() time((long int *) 0) + extern void osi_SetZone(); + extern char *osi_ZoneNames[]; + extern long int osi_SecondsWest; + extern int osi_IsEverDaylight; + + /* + * Put system-specific definitions here + */ + + #define HAS_SYSEXITS 1 + + #endif /* !In_Imake */ + + #define NDBM_ENV 1 + #define GETDOMAIN_ENV 1 + + /* Now follow the site-specific customizations. */ + #include + + #endif /* SYSTEM_H */ *** config/sun3_41/system.mcr Thu May 30 19:16:15 1991 --- config/sun3_41/system.mcr.NEW Tue May 7 15:23:11 1991 *************** *** 0 **** --- 1,35 ---- + /* Copyright IBM Corporation 1988,1989 - All Rights Reserved */ + /* For full copyright information see:'andrew/config/COPYRITE' */ + + #define In_Imake 1 + /* The next two lines need to be kept in sync */ + #include + SYSTEM_H_FILE = sun3_41/system.h + #undef In_Imake + + /* These next two lines help configure the embedded machine-dependent + directories overhead/class/machdep, atk/console/stats, and + atk/console/stats/common. */ + SYS_IDENT = sun3_41 + SYS_OS_ARCH = sun_68k_41 + + /* Get parent inclusions */ + #include + + #ifdef OPENWINDOWS_ENV + CONVERTFONT = /usr/openwin/bin/convertfont + BLDFAMILY = /usr/openwin/bin/bldfamily + #endif /*OPENWINDOWS_ENV */ + + /* Now for the system-dependent information. */ + + /* Flag to compile position-independent code. */ + + PICFLAG = -pic + + /* Flags to make a shared library. */ + + SHLIBLDFLAGS = -assert pure-text + + /* Get site-specific inclusions */ + #include *** config/sun4_40/system.mcr Fri Dec 21 14:50:56 1990 --- config/sun4_40/system.mcr.NEW Tue May 7 15:23:19 1991 *************** *** 16,21 **** --- 16,25 ---- /* Get parent inclusions */ #include + #ifdef OPENWINDOWS_ENV + CONVERTFONT = /usr/openwin/bin/convertfont + BLDFAMILY = /usr/openwin/bin/bldfamily + #endif /*OPENWINDOWS_ENV */ /* Now for the system-dependent information. */ *** config/sun4_41/system.h Thu May 30 19:16:37 1991 --- config/sun4_41/system.h.NEW Thu Apr 25 16:11:07 1991 *************** *** 0 **** --- 1,87 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1989 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + #ifndef SYSTEM_H + #define SYSTEM_H + + /* Get common definitions */ + #include + + #define OPSYSNAME "SUN4_4.3bsd" + #define sys_sun4_41 1 + #define SYS_NAME "sun4_41" + #define SUN_ENV + + /* SunOS 4.1 has the "-ldl" library. */ + #ifndef LIBDL_ENV + #define LIBDL_ENV 1 + #endif /* LIBDL_ENV */ + + /* Here follow the overrides for this system. */ + #undef SY_B43 + #define SY_B43 1 /* This system is most like bsd 4.3 */ + + #ifndef In_Imake + + /* Get major data types (esp. caddr_t) */ + #include + + #include + + /* Get open(2) constants */ + #include + + /* Get struct timeval */ + #include + + /* include path for syslog.h */ + #include + + #ifdef POSIX_ENV + #undef POSIX_ENV + #endif /* POSIX_ENV */ + #define POSIX_ENV 1 + + #ifndef VMUNIX + #define VMUNIX 1 + #endif /* VMUNIX */ + + #define OSI_HAS_SYMLINKS 1 + + #define osi_readlink(PATH,BUF,SIZE) readlink((PATH),(BUF),(SIZE)) + + #define osi_ExclusiveLockNoBlock(fid) flock((fid), LOCK_EX | LOCK_NB) + #define osi_UnLock(fid) flock((fid), LOCK_UN) + #define osi_O_READLOCK O_RDONLY + #define osi_F_READLOCK "r" + + #define osi_vfork() vfork() + + #define osi_setjmp _setjmp + #define osi_longjmp _longjmp + + /* Make a time standard. */ + struct osi_Times {unsigned long int Secs; unsigned long int USecs;}; + /* Set one of the above with a call to osi_GetTimes(&foo) */ + #define osi_GetSecs() time((long int *) 0) + extern void osi_SetZone(); + extern char *osi_ZoneNames[]; + extern long int osi_SecondsWest; + extern int osi_IsEverDaylight; + + /* + * Put system-specific definitions here + */ + + #define HAS_SYSEXITS 1 + + #endif /* !In_Imake */ + + #define NDBM_ENV 1 + #define GETDOMAIN_ENV 1 + + /* Now follow the site-specific customizations. */ + #include + + #endif /* SYSTEM_H */ *** config/sun4_41/system.mcr Thu May 30 19:16:53 1991 --- config/sun4_41/system.mcr.NEW Tue May 7 15:23:23 1991 *************** *** 0 **** --- 1,37 ---- + /* Copyright IBM Corporation 1988,1989 - All Rights Reserved */ + /* For full copyright information see:'andrew/config/COPYRITE' */ + + #define In_Imake 1 + /* The next two lines need to be kept in sync */ + #include + SYSTEM_H_FILE = sun4_41/system.h + #undef In_Imake + + /* These next two lines help configure the embedded machine-dependent + directories overhead/class/machdep, atk/console/stats, and + atk/console/stats/common. */ + SYS_IDENT = sun4_41 + SYS_OS_ARCH = sun_sparc_41 + + /* Get parent inclusions */ + #include + + #ifdef OPENWINDOWS_ENV + CONVERTFONT = /usr/openwin/bin/convertfont + BLDFAMILY = /usr/openwin/bin/bldfamily + #endif /*OPENWINDOWS_ENV */ + + /* Now for the system-dependent information. */ + + MALLOCALIGNMENT = 8 + + /* Flag to compile position-independent code. */ + + PICFLAG = -pic + + /* Flags to make a shared library. */ + + SHLIBLDFLAGS = -assert pure-text + + /* Get site-specific inclusions */ + #include *** xmkfontd/Imakefile Fri Dec 21 14:50:59 1990 --- xmkfontd/Imakefile.NEW Tue May 7 15:10:57 1991 *************** *** 2,7 **** --- 2,8 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ + #ifndef NO_FONTS_ENV #if SY_AIX221 install:: ${RM} ${DESTDIR}/X11fonts/fonts.alias *************** *** 14,24 **** ${RM} ${DESTDIR}/X11fonts/fonts.alias ${XMKFONTDIR} $(DESTDIR)/X11fonts #ifdef ISO80_FONTS_ENV ! InstallFileToFile(non-andrew.fonts.alias, ${INSTLIBFLAGS}, ${DESTDIR}/X11fonts/fonts.alias) #else /* ISO80_FONTS_ENV */ ./mkfntdir.csh ${DESTDIR}/X11fonts .snf #endif /* ISO80_FONTS_ENV */ #endif /* RELEASE2_ENV */ #endif /* SY_AIX221 */ ! ! --- 15,36 ---- ${RM} ${DESTDIR}/X11fonts/fonts.alias ${XMKFONTDIR} $(DESTDIR)/X11fonts #ifdef ISO80_FONTS_ENV ! $(INSTALL) ${INSTLIBFLAGS} non-andrew.fonts.alias ${DESTDIR}/X11fonts/fonts.alias #else /* ISO80_FONTS_ENV */ + #ifdef SCOunix + ${CSHELL} ./mkfntdir.csh ${DESTDIR}/X11fonts .snf + awk -e '{ print $$2 " " $$1 }' < ${DESTDIR}/X11fonts/fonts.alias > /tmp/fonts.alias + mv /tmp/fonts.alias ${DESTDIR}/X11fonts/fonts.alias + #else /* SCOunix */ ./mkfntdir.csh ${DESTDIR}/X11fonts .snf + #endif /* SCOunix */ #endif /* ISO80_FONTS_ENV */ + #if defined(OPENWINDOWS_ENV) + install:: + ${RM} ${DESTDIR}/xnwsfnts/Synonyms.list + ${RM} ${DESTDIR}/xnwsfnts/Families.list + ./openwin.csh ${DESTDIR}/xnwsfnts ${BLDFAMILY} + #endif /* OPENWINDOWS_ENV */ #endif /* RELEASE2_ENV */ #endif /* SY_AIX221 */ ! #endif /* NO_FONTS_ENV */ *** xmkfontd/openwin.csh Thu May 30 19:17:54 1991 --- xmkfontd/openwin.csh.NEW Tue May 7 15:10:59 1991 *************** *** 0 **** --- 1,26 ---- + #!/bin/csh + # Usage: openwin.csh dirname + # + echo "converting fonts in $1 to OpenWindows format" + cd $1 + if ($#argv == 2) then + set builder = $2 + else + if ( $?OPENWINHOME ) then + set builder = $(OPENWINHOME)/bin/bldfamily + else + if ( -e /usr/openwin/bin ) then + set builder = /usr/openwin/bin/bldfamily + else + set builder = bldfamily + endif + endif + endif + + if ( -e ../X11fonts/fonts.alias ) then + awk '{printf("/%s /%s _FontDirectorySYN\n",$1,$2)}' <../X11fonts/fonts.alias >Synonyms.list + endif + + ${builder} -f 200 + echo "Done converting to OpenWindows font format." + exit(0) *** ams/flames/Imakefile Wed Nov 22 11:30:18 1989 --- ams/flames/Imakefile.NEW Wed Apr 3 21:11:47 1991 *************** *** 13,19 **** InstallFileToFile(flib.flm, ${INSTINCFLAGS}, ${DESTDIR}/${f_DIR}/flib.flames) InstallFileToFile(bbd.flm, ${INSTINCFLAGS}, ${DESTDIR}/${f_DIR}/bbd.flames) ! InstallFileToFile(mailsvcs.flm, ${INSTINCFLAGS}, ${DESTDIR}/${f_DIR}/mailservices.flames) #ifdef AFS_ENV InstallFileToFile(afs.flm, ${INSTINCFLAGS}, ${DESTDIR}/${f_DIR}/afs.flames) #endif /* AFS_ENV */ --- 13,19 ---- InstallFileToFile(flib.flm, ${INSTINCFLAGS}, ${DESTDIR}/${f_DIR}/flib.flames) InstallFileToFile(bbd.flm, ${INSTINCFLAGS}, ${DESTDIR}/${f_DIR}/bbd.flames) ! InstallFileToFile(mailsvcs.flm, ${INSTINCFLAGS}, ${DESTDIR}/${f_DIR}/msvc.flames) #ifdef AFS_ENV InstallFileToFile(afs.flm, ${INSTINCFLAGS}, ${DESTDIR}/${f_DIR}/afs.flames) #endif /* AFS_ENV */ *** ams/flames/flib.flm Fri Dec 21 14:51:00 1990 --- ams/flames/flib.flm.NEW Wed Apr 3 21:11:49 1991 *************** *** 73,80 **** (cond ((null hlist) ans) ((any-pat-in-any-str (map-strlist-to-lowercase klist) ! (map-strlist-to-lowercase (only-strings (mapcar '(lambda (x) (car (getheadercontents msg x))) ! hlist)))) (append ans flist)) (T ans))) --- 73,84 ---- (cond ((null hlist) ans) ((any-pat-in-any-str (map-strlist-to-lowercase klist) ! (map-strlist-to-lowercase ! (only-strings ! (apply 'append ! (mapcar '(lambda (x) ! (getheadercontents msg x)) ! hlist))))) (append ans flist)) (T ans))) *** ams/libs/cui/andmchs.c Mon Aug 6 10:58:15 1990 --- ams/libs/cui/andmchs.c.NEW Wed Apr 3 21:11:56 1991 *************** *** 3,10 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/cui/RCS/andmchs.c,v 2.21 90/06/04 16:26:24 gk5g Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/cui/RCS/andmchs.c,v $ */ /* Machine dependent module -- Andrew Version */ #include --- 3,10 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/cui/RCS/andmchs.c,v 2.23 91/04/02 16:41:12 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/cui/RCS/andmchs.c,v $ */ /* Machine dependent module -- Andrew Version */ #include *************** *** 31,37 **** --- 31,39 ---- #ifdef AFS_ENV #include + #ifndef AFS31_ENV #include + #endif /* AFS31_ENV */ #include #include #else /* AFS_ENV */ *************** *** 57,62 **** --- 59,65 ---- CUI_OnSameHost = FALSE; static char HostNameBuf[256]; + static char ReconnNameBuf[256]; static char UserNameBuf[200]; char EditorBuf[200] = ""; *************** *** 77,82 **** --- 80,86 ---- int *len, *type, IsRecon; { char ErrorText[600], *s; + struct passwd *pw; if (fpacheck()) { ReportError("This machine has a bad floating point board. If desperate, try 'rem'.", ERR_FATAL, FALSE); *************** *** 128,133 **** --- 132,143 ---- strcpy(*ThisUser, ca->UserName); return(0); } + + pw = getpwuid(geteuid()); + if (pw && pw->pw_name) { + strcpy(UserNameBuf, pw->pw_name); + *ThisUser = UserNameBuf; + } HostNameBuf[0] = '\0'; s = getprofile("AMS_RemoteLogin"); if (s && *s) { *************** *** 143,154 **** HostNameBuf[1] = '\0'; } } if (HostNameBuf[0] != '\0') { /* *always* on non-vice, due to above check */ if (HostNameBuf[0] == '?') { if (!IsRecon) { ! GetStringFromUser("Name of host to run message server for you", HostNameBuf, sizeof HostNameBuf); sprintf(ErrorText, "User id on host %s", HostNameBuf); ! GetStringFromUser(ErrorText, UserNameBuf, sizeof UserNameBuf); } *ThisUser = UserNameBuf; } --- 153,167 ---- HostNameBuf[1] = '\0'; } } + if (IsRecon) + strcpy(HostNameBuf,ReconnNameBuf); + if (HostNameBuf[0] != '\0') { /* *always* on non-vice, due to above check */ if (HostNameBuf[0] == '?') { if (!IsRecon) { ! GetStringFromUser("Name of host to run message server for you", HostNameBuf, sizeof HostNameBuf, FALSE); sprintf(ErrorText, "User id on host %s", HostNameBuf); ! GetStringFromUser(ErrorText, UserNameBuf, sizeof UserNameBuf, FALSE); } *ThisUser = UserNameBuf; } *************** *** 185,190 **** --- 198,204 ---- #endif /* AFS_ENV */ } ReduceWhiteSpace(HostNameBuf); + strcpy(ReconnNameBuf,HostNameBuf); *ThisHost = HostNameBuf; if (!*ThisUser) { struct CellAuth *ca; *** ams/libs/cui/cuilib.c Wed Sep 26 16:00:53 1990 --- ams/libs/cui/cuilib.c.NEW Wed Apr 3 21:12:04 1991 *************** *** 3,19 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/cui/RCS/cuilib.c,v 2.45 90/08/14 10:29:24 gk5g Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/cui/RCS/cuilib.c,v $ */ ! #include #include #include #include #include - #include /* sys/time.h sys/file.h */ #include ! #include #include #include #include --- 3,18 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/cui/RCS/cuilib.c,v 2.46 91/04/02 16:41:21 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/cui/RCS/cuilib.c,v $ */ ! #include /* sys/time.h sys/file.h */ #include #include #include #include #include ! /*#include */ #include #include #include *************** *** 1499,1504 **** --- 1498,1504 ---- foundlastpass = *numfound - foundlastpass; } GetViceFileToNewString(FileName, newtext, TRUE); + MS_UnlinkFile(FileName); return(BadCount); } *************** *** 2206,2214 **** CUI_BuildNickName(old, SaveOldName); mserrcode = MS_RenameDir(OldName, new, NewName); if (mserrcode) { if (AMS_ERRNO == ELOOP) { ReportSuccess("You cannot make a folder a subfolder of itself!"); ! } else if (!strcmp(OldName, NewName)) { ReportSuccess("It is meaningless to rename a folder to itself!"); } else if (AMS_ERRNO == EINVAL && AMS_ERRCAUSE == EIN_PARAMCHECK && AMS_ERRVIA == EVIA_RENAMEDIR) { char Buf[100+MAXPATHLEN]; --- 2206,2217 ---- CUI_BuildNickName(old, SaveOldName); mserrcode = MS_RenameDir(OldName, new, NewName); if (mserrcode) { + #ifdef ELOOP if (AMS_ERRNO == ELOOP) { ReportSuccess("You cannot make a folder a subfolder of itself!"); ! } else ! #endif ! if (!strcmp(OldName, NewName)) { ReportSuccess("It is meaningless to rename a folder to itself!"); } else if (AMS_ERRNO == EINVAL && AMS_ERRCAUSE == EIN_PARAMCHECK && AMS_ERRVIA == EVIA_RENAMEDIR) { char Buf[100+MAXPATHLEN]; *** ams/libs/hdrs/ams.h Wed Nov 22 11:31:36 1989 --- ams/libs/hdrs/ams.h.NEW Wed Apr 3 21:12:13 1991 *************** *** 3,10 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/hdrs/RCS/ams.h,v 2.12 89/08/31 14:58:46 mcinerny Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/hdrs/RCS/ams.h,v $ */ /* ams.h -- Include file for Andrew message server/CUI clients. --- 3,10 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/hdrs/RCS/ams.h,v 2.13 91/04/02 16:42:00 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/hdrs/RCS/ams.h,v $ */ /* ams.h -- Include file for Andrew message server/CUI clients. *************** *** 99,105 **** /* The following defines the subscription file, which lists the subscription information for the current user */ ! #ifdef hpux #define AMS_SUBSCRIPTIONMAPFILE ".SubsMap" #else /* hpux */ #define AMS_SUBSCRIPTIONMAPFILE ".SubscriptionMap" --- 99,105 ---- /* The following defines the subscription file, which lists the subscription information for the current user */ ! #if defined(hpux) || defined(M_UNIX) #define AMS_SUBSCRIPTIONMAPFILE ".SubsMap" #else /* hpux */ #define AMS_SUBSCRIPTIONMAPFILE ".SubscriptionMap" *************** *** 133,144 **** #define AMS_REPLY_FORWARD_FMT 8 /* Forward with formatting */ /*VARARGS*/ extern int dbgprintf(); /*VARARGS*/ extern int printf(); /*VARARGS*/ - extern int safefprintf(); - /*VARARGS*/ extern int fprintf(); /*VARARGS*/ extern int errprintf(); /*VARARGS*/ --- 133,146 ---- #define AMS_REPLY_FORWARD_FMT 8 /* Forward with formatting */ /*VARARGS*/ extern int dbgprintf(); + #ifndef __STDC__ /*VARARGS*/ extern int printf(); /*VARARGS*/ extern int fprintf(); + #endif /* __STDC__ */ + /*VARARGS*/ + extern int safefprintf(); /*VARARGS*/ extern int errprintf(); /*VARARGS*/ *** ams/libs/ms/reply.c Fri Dec 21 14:51:28 1990 --- ams/libs/ms/reply.c.NEW Fri May 3 14:49:41 1991 *************** *** 3,21 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/reply.c,v 2.9 90/09/07 11:52:10 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/reply.c,v $ */ #include #include #include - #include /* sys/file.h */ extern FILE *fopen(); #ifndef _IBMR2 extern char *malloc(); #endif /* _IBMR2 */ ! extern char *RewriteSubject(), *index(), *rindex(), *StripWhiteEnds(); extern char MeInFull[]; static char *ForwardString = "---------- Forwarded message begins here ----------\n\n"; --- 3,24 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/reply.c,v 2.12 1991/05/03 18:48:13 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/reply.c,v $ */ + #include /* sys/file.h */ #include + #include #include #include + #define ToLower(c) (isupper(c) ? tolower(c) : (c)) + extern FILE *fopen(); #ifndef _IBMR2 extern char *malloc(); #endif /* _IBMR2 */ ! extern char *RewriteSubject(), *getprofile(), *StripWhiteEnds(); extern char MeInFull[]; static char *ForwardString = "---------- Forwarded message begins here ----------\n\n"; *************** *** 305,311 **** PrintSpecialStuff(fp, PR_STARTSHRINK, BE2Format); PrintSpecialStuff(fp, PR_STARTSHRINK, BE2Format); } ! PrintQuotingFormatting(fp, Msg->RawBits, BE2Format, Msg->HeadSize); if (BE2Format[0]) { PrintSpecialStuff(fp, PR_ENDSHRINK, BE2Format); PrintSpecialStuff(fp, PR_ENDSHRINK, BE2Format); --- 308,314 ---- PrintSpecialStuff(fp, PR_STARTSHRINK, BE2Format); PrintSpecialStuff(fp, PR_STARTSHRINK, BE2Format); } ! PrintFwdHeaders(fp, Msg->RawBits, BE2Format, Msg->HeadSize); if (BE2Format[0]) { PrintSpecialStuff(fp, PR_ENDSHRINK, BE2Format); PrintSpecialStuff(fp, PR_ENDSHRINK, BE2Format); *************** *** 379,383 **** --- 382,477 ---- fputs(head, fp); fwriteallchars(Msg->ParsedStuff->HeadBody[which], len, fp); fputc('\n', fp); + } + } + + PrintFwdHeaders(fp, headers, BE2Format, hdrlen) + int fp; + char *headers; + char *BE2Format; + int hdrlen; + { + char *hdr, *s, *t, *h, *wh; + int numhdrs, len, match; + char *weedhdrs; + char **fwdhdr; + static int first_time = TRUE; /* Used to init fwdhdrs */ + static char **fwdhdrs = NULL; /* Null terminated list of headers prefixes to copy when forwarding mail. */ + + if (first_time) { + /* Get fwdheaders preference. */ + if ((hdr = getprofile("fwdheaders")) != NULL) { + /* Want to show only headers with given prefixes. */ + numhdrs=0; + for (t=hdr; t=index(t, ':'); ++t, ++numhdrs) { + ; + } + fwdhdrs = (char **)malloc((2+numhdrs) * sizeof(char *)); + t = malloc(1+strlen(hdr)); + strcpy(t, hdr); /* permanent copy */ + fwdhdrs[0] = t; + numhdrs = 1; + for (s=t; s=index(s, ':'); ++s, ++numhdrs) { + *s++ = '\0'; + if (*s) { + fwdhdrs[numhdrs] = s; + } else { + --numhdrs; + } + } + fwdhdrs[numhdrs] = NULL; + } + first_time = FALSE; + } + + if (fwdhdrs == NULL) { + /* Forward all headers--this is the default. */ + PrintQuotingFormatting(fp, headers, BE2Format, hdrlen); + } else { + /* Copy headers, weeding out those we don't want. */ + weedhdrs = (char *)malloc(hdrlen+1); /* weedhdrs will be the new header text */ + h = headers; + wh = weedhdrs; + len = 0; /* length of 'headers' scanned so far */ + while (len < hdrlen) { + /* Do a case insensitive compare against each fwdhdr */ + match = FALSE; + for (fwdhdr = fwdhdrs; *fwdhdr != NULL; fwdhdr++) { + match = TRUE; + for (s = (*fwdhdr), t=h; s && *s != '\0'; s++, t++) { + if (ToLower(*s) != ToLower(*t)) { + match = FALSE; + break; + } + } + if (match) + break; + } + if (match) { + while (1) { + while (len < hdrlen && *h != '\n') { + *wh++ = *h++; + len++; + } + *wh++ = '\n'; + h++; len++; + /* Check for continuation lines. */ + if (len >= hdrlen || (*h != ' ' && *h != '\t')) + break; + } + } else { + while (len < hdrlen && *h != '\n') { + h++; + len++; + } + h++; len++; + } + } + if (!BE2Format[0]) + *wh++ = '\n'; + *wh = '\0'; + + PrintQuotingFormatting(fp, weedhdrs, BE2Format, strlen(weedhdrs)); + free(weedhdrs); } } *** ams/libs/ms/mtchfold.c Wed Apr 11 14:17:11 1990 --- ams/libs/ms/mtchfold.c.NEW Wed Apr 3 21:12:36 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mtchfold.c,v 1.8 90/03/28 13:42:41 gk5g Exp $ */ /* $ACIS: $ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mtchfold.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mtchfold.c,v 1.8 90/03/28 13:42:41 gk5g Exp $ "; #endif /* lint */ #include --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mtchfold.c,v 1.9 91/04/02 16:44:05 susan Exp $ */ /* $ACIS: $ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mtchfold.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mtchfold.c,v 1.9 91/04/02 16:44:05 susan Exp $ "; #endif /* lint */ #include *************** *** 14,20 **** --- 14,25 ---- #include #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif extern char *index(), *rindex(); extern FILE *fopen(); *** ams/libs/ms/apndfile.c Wed Jan 17 16:35:27 1990 --- ams/libs/ms/apndfile.c.NEW Tue Feb 12 11:52:11 1991 *************** *** 3,10 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/andrew/ams/libs/ms/RCS/apndfile.c,v 2.7 89/12/22 15:09:00 cfe Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/andrew/ams/libs/ms/RCS/apndfile.c,v $ */ #include #include --- 3,10 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/apndfile.c,v 2.8 91/02/11 11:57:18 gk5g Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/apndfile.c,v $ */ #include #include *************** *** 23,34 **** int DoDelete; { int errsave = 0; ! struct MS_Directory *Dir; CloseDirsThatNeedIt(); if (ReadOrFindMSDir(FolderName, &Dir, MD_APPEND)) { errsave = mserrcode; ! CloseMSDir(Dir, MD_APPEND); return (errsave); } errsave = AppendFileToMSDir(FileName, Dir, DoDelete); --- 23,34 ---- int DoDelete; { int errsave = 0; ! struct MS_Directory *Dir = NULL; CloseDirsThatNeedIt(); if (ReadOrFindMSDir(FolderName, &Dir, MD_APPEND)) { errsave = mserrcode; ! if(Dir) CloseMSDir(Dir, MD_APPEND); return (errsave); } errsave = AppendFileToMSDir(FileName, Dir, DoDelete); *** ams/libs/ms/bldcapt.c Fri Dec 21 14:51:03 1990 --- ams/libs/ms/bldcapt.c.NEW Tue Dec 4 08:48:49 1990 *************** *** 3,11 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/bldcapt.c,v 2.18 90/11/19 14:38:32 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/bldcapt.c,v $ */ #include #include #include --- 3,12 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/bldcapt.c,v 2.19 90/11/28 14:18:49 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/bldcapt.c,v $ */ + #include /* sys/time.h */ #include #include #include *************** *** 15,21 **** #ifdef WHITEPAGES_ENV #include #endif /* WHITEPAGES_ENV */ - #include /* sys/time.h */ #ifdef AFS_ENV #include #include --- 16,21 ---- *** ams/libs/ms/blddate.c Wed Nov 22 11:32:07 1989 --- ams/libs/ms/blddate.c.NEW Wed May 8 15:37:14 1991 *************** *** 3,10 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/blddate.c,v 2.7 89/05/15 12:15:01 cfe Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/blddate.c,v $ */ #include #include --- 3,10 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/blddate.c,v 2.8 1991/05/08 19:34:19 gk5g Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/blddate.c,v $ */ #include #include *************** *** 22,29 **** switch(datetype) { case DATETYPE_FROMHEADER: if (Msg->ParsedStuff->HeadBody[HP_DATE]) { ! strncpy(DateBuf, Msg->ParsedStuff->HeadBody[HP_DATE], Msg->ParsedStuff->HeadBodyLen[HP_DATE]); ! DateBuf[Msg->ParsedStuff->HeadBodyLen[HP_DATE]] = '\0'; if (!parsedateheader(DateBuf, &TmBuf, 1, 1, 1, 0 /* &when */)) { when = (unsigned long) gtime(&TmBuf); if (when <= ((unsigned long) time(0) + 7*24*60*60) && when <= (unsigned long) 0xc0000000) break; --- 22,31 ---- switch(datetype) { case DATETYPE_FROMHEADER: if (Msg->ParsedStuff->HeadBody[HP_DATE]) { ! when = Msg->ParsedStuff->HeadBodyLen[HP_DATE]; ! if (when > (sizeof(DateBuf)-1)) when = (sizeof(DateBuf)-1); ! strncpy(DateBuf, Msg->ParsedStuff->HeadBody[HP_DATE], when); ! DateBuf[when] = '\0'; if (!parsedateheader(DateBuf, &TmBuf, 1, 1, 1, 0 /* &when */)) { when = (unsigned long) gtime(&TmBuf); if (when <= ((unsigned long) time(0) + 7*24*60*60) && when <= (unsigned long) 0xc0000000) break; *** ams/libs/ms/bldpvmap.c Wed Apr 11 14:17:13 1990 --- ams/libs/ms/bldpvmap.c.NEW Wed Apr 3 21:12:38 1991 *************** *** 3,11 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/bldpvmap.c,v 2.7 90/03/07 11:16:36 bobg Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/bldpvmap.c,v $ */ #include #include --- 3,12 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/bldpvmap.c,v 2.8 91/04/02 16:43:14 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/bldpvmap.c,v $ */ + #include #include #include *** ams/libs/ms/ckmail.c Wed Nov 22 11:32:11 1989 --- ams/libs/ms/ckmail.c.NEW Thu May 23 12:14:11 1991 *************** *** 3,13 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/ckmail.c,v 2.4 89/02/08 15:31:55 ghoti Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/ckmail.c,v $ */ #include #include extern char home[], *GetPersonalMailbox(); --- 3,18 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/ckmail.c,v 2.5 91/04/02 16:43:22 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/ckmail.c,v $ */ #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif extern char home[], *GetPersonalMailbox(); *** ams/libs/ms/convmail.c Wed Nov 22 11:32:36 1989 --- ams/libs/ms/convmail.c.NEW Wed Apr 3 21:12:41 1991 *************** *** 3,13 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/convmail.c,v 2.4 89/02/08 15:32:28 ghoti Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/convmail.c,v $ */ #include #include extern char home[]; --- 3,19 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/convmail.c,v 2.5 91/04/02 16:43:32 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/convmail.c,v $ */ + #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif extern char home[]; *** ams/libs/ms/cvtold.c Wed Sep 26 16:00:59 1990 --- ams/libs/ms/cvtold.c.NEW Wed Apr 3 21:12:44 1991 *************** *** 2,19 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/cvtold.c,v 2.16 90/08/09 14:26:35 gk5g Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/cvtold.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/cvtold.c,v 2.16 90/08/09 14:26:35 gk5g Exp $ "; #endif /* lint */ #include #include - #include #include /* sys/types.h sys/file.h sys/time.h */ #include #include #include --- 2,19 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/cvtold.c,v 2.17 91/04/02 16:43:27 susan Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/cvtold.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/cvtold.c,v 2.17 91/04/02 16:43:27 susan Exp $ "; #endif /* lint */ #include #include #include /* sys/types.h sys/file.h sys/time.h */ + #include #include #include #include *************** *** 251,266 **** if ((buffer[0] == AMS_SeparatingCharacter) && (AnyWrittenToThisOne != 0)) { ReadyToStartAgain = 1; } else { ! blen = strlen(buffer); ! if(writeall(wfd, buffer,blen) != blen){ ! errsave = errno; ! fclose(fp); ! close(wfd); ! if (AMS_StrictStandaloneLocking) rmlock(CurLock, LockFD); ! AMS_RETURN_ERRCODE(errsave, EIN_WRITE, EVIA_CONVERTINCOMING); } - AnyWrittenToThisOne = 1; - ReadyToStartAgain = 0; } } else if (!AnyWrittenToThisOne && strncmp(buffer, "From ", 5) == 0) { /* UNIX From lines make sendmail barf on re-send, so we pre-empt by rewriting them here with a patch from Lennart Lovstrand. The format of a "From " line is: "From [remote from ]" There is a chance sender will contain spaces (enclosed in quotes or escaped by backslash), so we can't just index on a space. */ --- 251,269 ---- if ((buffer[0] == AMS_SeparatingCharacter) && (AnyWrittenToThisOne != 0)) { ReadyToStartAgain = 1; } else { ! /* maybe delete all lines starting with separating char */ ! if (!AMS_DeleteLinesWithSeparator || buffer[0] != AMS_SeparatingCharacter) { ! blen = strlen(buffer); ! if(writeall(wfd, buffer,blen) != blen){ ! errsave = errno; ! fclose(fp); ! close(wfd); ! if (AMS_StrictStandaloneLocking) rmlock(CurLock, LockFD); ! AMS_RETURN_ERRCODE(errsave, EIN_WRITE, EVIA_CONVERTINCOMING); ! } ! AnyWrittenToThisOne = 1; ! ReadyToStartAgain = 0; } } } else if (!AnyWrittenToThisOne && strncmp(buffer, "From ", 5) == 0) { /* UNIX From lines make sendmail barf on re-send, so we pre-empt by rewriting them here with a patch from Lennart Lovstrand. The format of a "From " line is: "From [remote from ]" There is a chance sender will contain spaces (enclosed in quotes or escaped by backslash), so we can't just index on a space. */ *** ams/libs/ms/epoch.c Fri Dec 21 14:51:05 1990 --- ams/libs/ms/epoch.c.NEW Wed Apr 3 21:12:45 1991 *************** *** 3,13 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/epoch.c,v 2.30 90/11/15 13:06:58 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/epoch.c,v $ */ #include #include #include #include #include --- 3,18 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/epoch.c,v 2.31 91/04/02 16:43:37 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/epoch.c,v $ */ #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include #include #include *** ams/libs/ms/flushdir.c Mon Aug 6 10:58:47 1990 --- ams/libs/ms/flushdir.c.NEW Wed Apr 3 21:12:47 1991 *************** *** 3,11 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/flushdir.c,v 2.5 90/06/05 14:35:06 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/flushdir.c,v $ */ #include #ifndef _IBMR2 --- 3,12 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/flushdir.c,v 2.6 91/04/02 16:43:43 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/flushdir.c,v $ */ + #include #include #ifndef _IBMR2 *** ams/libs/ms/getbody.c Wed Nov 22 11:33:05 1989 --- ams/libs/ms/getbody.c.NEW Wed Apr 3 21:12:48 1991 *************** *** 3,11 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/getbody.c,v 2.4 89/04/16 11:30:08 nsb Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/getbody.c,v $ */ #include MS_GetPartialBody(DirName, id, Buf, BufLim, offset, remaining, ct) --- 3,12 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/getbody.c,v 2.5 91/04/02 16:43:47 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/getbody.c,v $ */ + #include #include MS_GetPartialBody(DirName, id, Buf, BufLim, offset, remaining, ct) *** ams/libs/ms/getfile.c Wed Nov 22 11:33:10 1989 --- ams/libs/ms/getfile.c.NEW Wed Apr 3 21:12:49 1991 *************** *** 3,14 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/getfile.c,v 2.4 89/02/10 09:13:06 ghoti Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/getfile.c,v $ */ #include #include - #include /* sys/file.h */ MS_GetPartialFile(FileName, Buf, BufLim, offset, remaining, ct) char *FileName, *Buf; --- 3,15 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/getfile.c,v 2.5 91/04/02 16:43:54 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/getfile.c,v $ */ + + #include /* sys/file.h */ #include #include MS_GetPartialFile(FileName, Buf, BufLim, offset, remaining, ct) char *FileName, *Buf; *** ams/libs/ms/getnmct.c Wed Nov 22 11:33:06 1989 --- ams/libs/ms/getnmct.c.NEW Wed Apr 3 21:12:50 1991 *************** *** 3,12 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/getnmct.c,v 2.4 89/02/08 15:33:33 ghoti Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/getnmct.c,v $ */ #include #include MS_GetNewMessageCount(FullDirName, numnew, numtotal, LastOldDate, InsistOnFetch) --- 3,13 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/getnmct.c,v 2.5 91/04/02 16:43:51 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/getnmct.c,v $ */ #include + #include #include MS_GetNewMessageCount(FullDirName, numnew, numtotal, LastOldDate, InsistOnFetch) *** ams/libs/ms/headers.c Wed Nov 22 11:33:43 1989 --- ams/libs/ms/headers.c.NEW Wed Apr 3 21:12:53 1991 *************** *** 3,14 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/headers.c,v 2.5 89/02/10 09:13:22 ghoti Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/headers.c,v $ */ - #include - #include #include /* sys/file.h */ extern char *fixDate(); --- 3,14 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/headers.c,v 2.6 91/04/02 16:44:18 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/headers.c,v $ */ #include /* sys/file.h */ + #include + #include extern char *fixDate(); *** ams/libs/ms/init.c Fri Dec 21 14:51:12 1990 --- ams/libs/ms/init.c.NEW Wed Apr 3 21:12:54 1991 *************** *** 3,13 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/init.c,v 2.40 90/10/23 15:20:31 gk5g Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/init.c,v $ */ - #include #include #include #include #include --- 3,13 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/init.c,v 2.42 91/04/02 16:43:57 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/init.c,v $ */ #include + #include #include #include #include *************** *** 384,389 **** --- 384,394 ---- debug(1, ("Environment param %d: %s\n", i, environ[i])); } } + + #ifdef USE_MMDF_ENV + mmdf_init("messageserver"); + mm_init(); + #endif *MaxBufSize = BIGGESTBUFFER; sprintf(MS_VersionString, "MS %d.%d (AMS %d.%d, SNAP %s)", *** ams/libs/ms/logging.c Wed Nov 22 11:33:49 1989 --- ams/libs/ms/logging.c.NEW Wed Apr 3 21:12:56 1991 *************** *** 3,15 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/logging.c,v 2.5 89/02/10 09:13:32 ghoti Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/logging.c,v $ */ #include #include #include ! #include extern FILE *fopen(); extern int IsLoggingMailStats; --- 3,16 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/logging.c,v 2.6 91/04/02 16:44:23 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/logging.c,v $ */ + #include #include #include #include ! extern FILE *fopen(); extern int IsLoggingMailStats; *************** *** 27,33 **** --- 28,38 ---- if (!IsLoggingMailStats) return; logfp = fopen(MAILLOGSTATFILE, "a"); if (!logfp) return; + #ifdef M_UNIX + chmod(MAILLOGSTATFILE, 0600); + #else fchmod(fileno(logfp), 0600); + #endif fp = fopen(FileName, "r"); if (!fp) { *** ams/libs/ms/merge.c Wed Jan 17 16:35:47 1990 --- ams/libs/ms/merge.c.NEW Wed Apr 3 21:12:58 1991 *************** *** 3,15 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/andrew/ams/libs/ms/RCS/merge.c,v 2.7 89/12/22 15:10:01 cfe Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/andrew/ams/libs/ms/RCS/merge.c,v $ */ #include #include #include /* sys/file.h */ #include #include extern FILE *fopen(); --- 3,20 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/merge.c,v 2.8 91/04/02 16:44:26 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/merge.c,v $ */ #include #include #include /* sys/file.h */ + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include extern FILE *fopen(); *** ams/libs/ms/msdir.c Mon Aug 6 10:59:02 1990 --- ams/libs/ms/msdir.c.NEW Wed Apr 3 21:13:03 1991 *************** *** 3,9 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msdir.c,v 2.32 90/06/22 19:58:40 bobg Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msdir.c,v $ */ /* --- 3,9 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msdir.c,v 2.34 91/04/02 16:44:31 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msdir.c,v $ */ /* *************** *** 10,22 **** msdir.c -- Routines for manipulating message directory structures */ ! char ams_msdir_rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msdir.c,v 2.32 90/06/22 19:58:40 bobg Exp $"; #include #include #include #include - #include /* sys/file.h sys/types.h */ #include /* for htonl, etc. */ #include --- 10,22 ---- msdir.c -- Routines for manipulating message directory structures */ ! char ams_msdir_rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msdir.c,v 2.34 91/04/02 16:44:31 susan Exp $"; + #include /* sys/file.h sys/types.h */ #include #include #include #include #include /* for htonl, etc. */ #include *************** *** 1034,1039 **** --- 1034,1040 ---- long midhash, refint; struct MS_Message *MsgToCheck; + SBuf[0] = '\0'; GetRightMid(Msg, &mid); if (!mid) return (0); *************** *** 1068,1073 **** --- 1069,1076 ---- } bzero(MsgToCheck, sizeof(struct MS_Message)); MsgToCheck->OpenFD = -1; + if (SBuf[0] == '\0') /* To avoid duplicate msgs */ + GetSnapshotByNumber(Dir, i, SBuf); GetBodyFileName(Dir->UNIXDir, AMS_ID(SBuf), SourceFileName); if (ReadRawFile(SourceFileName, MsgToCheck, FALSE) || ParseMessageFromRawBody(MsgToCheck)) { *** ams/libs/ms/msparse.c Wed Nov 22 11:34:04 1989 --- ams/libs/ms/msparse.c.NEW Tue May 21 15:17:37 1991 *************** *** 3,10 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/msparse.c,v 2.4 89/02/10 09:13:49 ghoti Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/msparse.c,v $ */ #include #include /* sys/time.h */ --- 3,10 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msparse.c,v 2.5 1991/01/28 13:01:25 gk5g Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msparse.c,v $ */ #include #include /* sys/time.h */ *************** *** 51,57 **** FinalBuf[0] = '\0'; strstart = str; strend = str + strlen(str); ! while (code822 != is822End) { code822 = Next822Word(&strstart, strend, TokenBuf, sizeof(TokenBuf)); if (((code822 == is822Atom) || (code822 == is822QuotedString)) && ((prevcode == is822Atom) || (prevcode == is822QuotedString))) { strcat(FinalBuf, " "); --- 51,57 ---- FinalBuf[0] = '\0'; strstart = str; strend = str + strlen(str); ! while ((code822 != is822End) && code822) { code822 = Next822Word(&strstart, strend, TokenBuf, sizeof(TokenBuf)); if (((code822 == is822Atom) || (code822 == is822QuotedString)) && ((prevcode == is822Atom) || (prevcode == is822QuotedString))) { strcat(FinalBuf, " "); *** ams/libs/ms/msprint.c Mon Aug 6 10:59:04 1990 --- ams/libs/ms/msprint.c.NEW Wed Apr 3 21:13:05 1991 *************** *** 3,9 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msprint.c,v 2.23 90/06/05 14:35:35 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msprint.c,v $ */ #include --- 3,9 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msprint.c,v 2.24 91/04/02 16:44:10 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/msprint.c,v $ */ #include *************** *** 12,18 **** --- 12,23 ---- #include #include /* sys/file.h */ #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include *** ams/libs/ms/mswp.c Fri Dec 21 14:51:24 1990 --- ams/libs/ms/mswp.c.NEW Fri Jun 7 13:50:56 1991 *************** *** 2,21 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mswp.c,v 2.47 90/10/23 15:22:08 gk5g Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mswp.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mswp.c,v 2.47 90/10/23 15:22:08 gk5g Exp $ "; #endif /* lint */ ! #include #include #include #include #include - #include /* sys/file.h */ #include #include #include --- 2,20 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mswp.c,v 2.50 1991/06/07 16:45:00 gk5g Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mswp.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mswp.c,v 2.50 1991/06/07 16:45:00 gk5g Exp $ "; #endif /* lint */ ! #include /* sys/file.h */ #include #include #include #include #include #include #include #include *************** *** 1310,1315 **** --- 1309,1317 ---- int MaxNameMatches, AllowHeuristics, UnderAMSDelivery, NameSep, *IsVacuous; { int Answered = 0, curr = 1, nextcurr = 0, LocalDBVal, PwdVal, WPVal; + #ifdef USE_MMDF_ENV + int MMDFVal; + #endif Boolean isnext; if (UnderAMSDelivery > 0) { /* Override how one does name validation */ *************** *** 1320,1325 **** --- 1322,1330 ---- LocalDBVal = AMS_LocalDatabaseValidation; PwdVal = AMS_PasswdValidation; WPVal = AMS_WPValidation; + #ifdef USE_MMDF_ENV + MMDFVal = AMS_MMDFValidation; + #endif } else { nextcurr = CheckAMSValidationMask(Domain); if (nextcurr != vld_WPValid) { /* don't know how to do lookups other than WP-only */ *************** *** 1359,1364 **** --- 1364,1387 ---- isnext = TRUE; } } + #ifdef USE_MMDF_ENV + if (curr == MMDFVal) { + int OutCode; + + mserrcode = LookupInMMDFDatabase(Addr, laType, IDpart, PostID, Domain, UnderAMSDelivery, NameSep, MaxNameMatches, &Answered, &OutCode); + if (mserrcode) + return(mserrcode); + if (Answered) { + *WpCode = OutCode; + return(0); + } + } else if ((curr < MMDFVal)) { + if (!isnext || (nextcurr > MMDFVal)) { + nextcurr = MMDFVal; + isnext = TRUE; + } + } + #endif if (curr == PwdVal) { mserrcode = LookupInPasswdFile(Addr, laType, IDpart, PostID, WpCode, MaxNameMatches, AllowHeuristics, Domain, UnderAMSDelivery, NameSep, &Answered); if (mserrcode || Answered) return(mserrcode); *************** *** 1415,1420 **** --- 1438,1446 ---- int la_errcode, outType, SawTempFail = 0, IsCertain=1, WasGoodGlobalAlias; struct passwd *pass; char *IDpart, *PostID, *AddressAsPost, *PostCell; + #ifdef AFS_ENV + char *NewFilename; + #endif /* AFS_ENV */ char InBuf[1000], *t, FileBuf[1+MAXPATHLEN]; int WpCode, DisambRes, OutLen, HadHost, AMSDel, AMSNameSep, IsVacuous; *************** *** 1477,1482 **** --- 1503,1520 ---- case latype_DistList: case latype_DirInsert: /* Should check for file existence */ + #ifdef AFS_ENV + if (IDpart && IDpart[0] == '~' && ULstrcmp(Domain, MyMailDomain) != 0) { + /* Resolve it here (in ``Domain'') when there's another cell involved. */ + strncpy(FileBuf, IDpart, sizeof(FileBuf)); + mserrcode = ResolveTildes(FileBuf, &NewFilename, Domain); + if (IDpart) free(IDpart); + if (mserrcode) { + return (mserrcode); + } + IDpart = NewFilename; + } + #endif /* AFS_ENV */ DisambRes = MS_DisambiguateFile(IDpart, FileBuf, (outType == latype_DirInsert ? AMS_DISAMB_ISADIR : *************** *** 2310,2316 **** #endif /* YELLOWPAGES_ENV */ if (Found == 0) { errno = 0; ! fp = fopen("/usr/lib/aliases", "r"); if (!fp) { if (errno == 0) errno = ENOMEM; if (errno == ENOENT) return(0); /* Not our problem if there ain't no alias file */ --- 2348,2354 ---- #endif /* YELLOWPAGES_ENV */ if (Found == 0) { errno = 0; ! fp = fopen(AMS_AliasFileName, "r"); if (!fp) { if (errno == 0) errno = ENOMEM; if (errno == ENOENT) return(0); /* Not our problem if there ain't no alias file */ *** ams/libs/ms/site.c Mon Aug 6 10:59:12 1990 --- ams/libs/ms/site.c.NEW Wed Apr 3 21:13:11 1991 *************** *** 3,9 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/site.c,v 1.2 90/06/05 14:35:47 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/site.c,v $ */ #include --- 3,9 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/site.c,v 1.3 91/04/02 16:45:54 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/site.c,v $ */ #include *************** *** 58,63 **** --- 58,107 ---- return(0); } + #ifdef USE_MMDF_ENV + #include + + int LookupInMMDFDatabase(Addr, laType, IDpart, PostID, Domain, UnderAMSDelivery, NameSep, MaxNameMatches, Answered, MswpCodeP) + PARSED_ADDRESS *Addr; + int laType; + char *IDpart; + char *PostID; + char *Domain; + int UnderAMSDelivery; + int NameSep; + int MaxNameMatches; + int *Answered; + int *MswpCodeP; + { + + struct rp_bufstruct reply; + int len; + + mm_sbinit(); + if (rp_isbad(mm_winit(NULL, "mv", "postmaster")) || + rp_isbad(mm_rrply(&reply, &len)) || + rp_isbad(reply.rp_val)) { + *MswpCodeP = MSWP_CRAP; + return(0); + } + if (rp_isbad(mm_wadr(NULL,Addr->LocalPart)) || + rp_isbad(mm_rrply(&reply, &len))) { + *MswpCodeP = MSWP_CRAP; + } + else switch(rp_gval(reply.rp_val)) { + case RP_AOK: + case RP_DOK: + *MswpCodeP = (CheckAMSFmtOK(Domain) <= 0 ? MSWP_GOODNETMAIL : MSWP_GOODUSER); + break; + default: + *MswpCodeP = MSWP_CRAP; + } + mm_end(-1); + *Answered = 1; + return(0); + } + + #endif /* USE_MMDF_ENV */ int GetNameFromGecos(GecosField, LoginID, Domain, PersonalNameP) /* Find the User name in a gecos field, if posible, returning the malloced result */ char *GecosField; /* IN The gecos field from the password file for userid */ *** ams/libs/ms/mungenew.c Fri Dec 21 14:51:27 1990 --- ams/libs/ms/mungenew.c.NEW Wed Apr 3 21:13:13 1991 *************** *** 3,16 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mungenew.c,v 2.24 90/09/14 13:51:50 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mungenew.c,v $ */ ! #include #include #include #include ! #include /* sys/file.h */ #include #ifdef AFS_ENV #include --- 3,20 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mungenew.c,v 2.26 91/04/03 16:56:17 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/mungenew.c,v $ */ ! #include /* sys/file.h */ #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include ! #endif #include #ifdef AFS_ENV #include *** ams/libs/ms/rawdb.c Mon Aug 6 10:59:28 1990 --- ams/libs/ms/rawdb.c.NEW Wed Apr 3 21:13:18 1991 *************** *** 3,9 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rawdb.c,v 2.53 90/06/22 20:04:43 bobg Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rawdb.c,v $ */ /* --- 3,9 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rawdb.c,v 2.55 91/04/03 17:14:32 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rawdb.c,v $ */ /* *************** *** 10,16 **** rawdb.c -- Routines for accessing MS database files in the raw. */ ! char ams_rawdb_rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rawdb.c,v 2.53 90/06/22 20:04:43 bobg Exp $"; #include /* sys/file.h */ #include --- 10,16 ---- rawdb.c -- Routines for accessing MS database files in the raw. */ ! char ams_rawdb_rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rawdb.c,v 2.55 91/04/03 17:14:32 susan Exp $"; #include /* sys/file.h */ #include *************** *** 18,24 **** --- 18,29 ---- #include #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include #include #include *************** *** 456,462 **** } } #endif /* AFS_ENV */ ! AMS_RETURN_ERRCODE(errno, EIN_OPEN, EVIA_WRITEPUREFILE); } if (!Msg->ParsedStuff->HeadBody[HP_AUTHENTICATED_AS]) { char MyAuthHead[800], *authfield; --- 461,469 ---- } } #endif /* AFS_ENV */ ! myerrno = errno; ! (void) unlink(File); ! AMS_RETURN_ERRCODE(myerrno, EIN_OPEN, EVIA_WRITEPUREFILE); } if (!Msg->ParsedStuff->HeadBody[HP_AUTHENTICATED_AS]) { char MyAuthHead[800], *authfield; *************** *** 463,468 **** --- 470,476 ---- authfield = GenAuthField(Msg); if (!authfield) { + (void) unlink(File); close(fd); AMS_RETURN_ERRCODE(ENOMEM, EIN_MALLOC, EVIA_WRITEPUREFILE); } *************** *** 479,489 **** --- 487,499 ---- } if (writeall(fd, Msg->RawBits, Msg->HeadSize) != Msg->HeadSize) { myerrno = errno; + (void) unlink(File); vclose(fd); AMS_RETURN_ERRCODE(myerrno, EIN_WRITE, EVIA_WRITEPUREFILE); } if (lseek(Msg->OpenFD, Msg->BodyOffsetInFD, L_SET) < 0) { myerrno = errno; + (void) unlink(File); vclose(fd); AMS_RETURN_ERRCODE(myerrno, EIN_LSEEK, EVIA_WRITEPUREFILE); } *************** *** 492,502 **** --- 502,514 ---- bytestoread = (bytesleft > (sizeof(BigBuf) - 1)) ? (sizeof(BigBuf) - 1) : bytesleft; if (read(Msg->OpenFD, BigBuf, bytestoread) != bytestoread) { myerrno = errno; + (void) unlink(File); vclose(fd); AMS_RETURN_ERRCODE(myerrno, EIN_READ, EVIA_WRITEPUREFILE); } if (writeall(fd, BigBuf, bytestoread) != bytestoread) { myerrno = errno; + (void) unlink(File); vclose(fd); AMS_RETURN_ERRCODE(myerrno, EIN_FWRITE, EVIA_WRITEPUREFILE); } *************** *** 513,519 **** } } #endif /* AFS_ENV */ ! AMS_RETURN_ERRCODE(errno, EIN_VCLOSE, EVIA_WRITEPUREFILE); } return (0); } --- 525,533 ---- } } #endif /* AFS_ENV */ ! myerrno = errno; ! (void) unlink(File); ! AMS_RETURN_ERRCODE(myerrno, EIN_VCLOSE, EVIA_WRITEPUREFILE); } return (0); } *************** *** 1568,1574 **** sprintf(ErrorText, "Checking for hidden messages in folder %s.", ap_Shorten(Dir->UNIXDir)); NonfatalBizarreError(ErrorText); } ! if (IsDirAlien(Dir, &alien)) { return (mserrcode); } FilesToCheck.ToCheck = 0; --- 1582,1588 ---- sprintf(ErrorText, "Checking for hidden messages in folder %s.", ap_Shorten(Dir->UNIXDir)); NonfatalBizarreError(ErrorText); } ! if (IsDirAlien(Dir->UNIXDir, &alien)) { return (mserrcode); } FilesToCheck.ToCheck = 0; *************** *** 1783,1789 **** } IsDirAlien(Dir, alien) ! struct MS_Directory *Dir; int *alien; { static int *pathcodes = NULL; --- 1797,1803 ---- } IsDirAlien(Dir, alien) ! char *Dir; int *alien; { static int *pathcodes = NULL; *************** *** 1799,1805 **** pathcodes[i] = -1; } } ! FindTreeRoot(Dir->UNIXDir, Root, FALSE); whichpath = WhichPath(Root); if (whichpath < 0) { *alien = 0; --- 1813,1819 ---- pathcodes[i] = -1; } } ! FindTreeRoot(Dir, Root, FALSE); whichpath = WhichPath(Root); if (whichpath < 0) { *alien = 0; *** ams/libs/ms/rebldmuf.c Wed Nov 22 11:34:50 1989 --- ams/libs/ms/rebldmuf.c.NEW Wed Apr 3 21:13:20 1991 *************** *** 3,15 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/rebldmuf.c,v 2.13 89/07/13 11:14:09 cfe Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/rebldmuf.c,v $ */ #include #include #include - #include /* sys/file.h */ #include extern FILE *fopen(); --- 3,16 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rebldmuf.c,v 2.14 91/04/02 16:45:25 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rebldmuf.c,v $ */ + + #include /* sys/file.h */ #include #include #include #include extern FILE *fopen(); *** ams/libs/ms/recon.c Wed Sep 26 16:01:15 1990 --- ams/libs/ms/recon.c.NEW Wed Apr 3 21:13:24 1991 *************** *** 4,16 **** \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/recon.c,v 2.20 90/08/13 12:55:55 gk5g Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/recon.c,v $ */ #include #include #include #include #include #include --- 4,21 ---- \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/recon.c,v 2.21 91/04/02 16:45:32 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/recon.c,v $ */ #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include #include #include *************** *** 37,43 **** #define MS_DB_VERSION 4 ! static char ams_reconstruct_rcsid[] = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/recon.c,v 2.20 90/08/13 12:55:55 gk5g Exp $"; struct hashlist { unsigned long *hashes; --- 42,48 ---- #define MS_DB_VERSION 4 ! static char ams_reconstruct_rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/recon.c,v 2.21 91/04/02 16:45:32 susan Exp $"; struct hashlist { unsigned long *hashes; *************** *** 101,115 **** && (ContainsOnlyBase64Chars(name + 1))); } ! static int GetOldIDSomehow(Msg, FileName, Dir) struct MS_Message *Msg; char *FileName; ! struct MS_Directory *Dir; { char *result; int alien = FALSE; ! if (Dir && IsDirAlien(Dir, &alien)) { return (mserrcode); } if (alien) { --- 106,120 ---- && (ContainsOnlyBase64Chars(name + 1))); } ! static int GetOldIDSomehow(Msg, FileName, DirName) struct MS_Message *Msg; char *FileName; ! char *DirName; { char *result; int alien = FALSE; ! if (DirName && IsDirAlien(DirName, &alien)) { return (mserrcode); } if (alien) { *************** *** 731,737 **** char *filename; long time; { ! #ifdef hpux return (utime(filename, 0)); #else /* hpux */ struct timeval tvp[2]; --- 736,742 ---- char *filename; long time; { ! #if defined(hpux) return (utime(filename, 0)); #else /* hpux */ struct timeval tvp[2]; *************** *** 846,858 **** /* Defer writing of new header until we know newMaxChainVal (and LastMsgDate) */ if (oldDirReadable) { ! if (IsDirAlien(oldMSDir, &alienDir)) { return (mserrcode); } } else alienDir = FALSE; /* Enumerate all the messages: */ --- 851,870 ---- /* Defer writing of new header until we know newMaxChainVal (and LastMsgDate) */ + /* CCG - why does this insist on an old dir for aliens? */ + /* oh.. because IsDirAlien wants a MSDir!! */ + #if 0 if (oldDirReadable) { ! if (IsDirAlien(oldMSDir->UNIXDir, &alienDir)) { return (mserrcode); } } else alienDir = FALSE; + #endif + if (IsDirAlien(DirName, &alienDir)) { + return (mserrcode); + } /* Enumerate all the messages: */ *************** *** 987,994 **** GetOldIDSomehow(Msg, currentFile, oldDirReadable ? ! oldMSDir : ! (struct MS_Directory *) 0)) && InventID(Msg)) || BuildReplyField(Msg) || CheckAuthUid(Msg) --- 999,1006 ---- GetOldIDSomehow(Msg, currentFile, oldDirReadable ? ! oldMSDir->UNIXDir : ! DirName)) && InventID(Msg)) || BuildReplyField(Msg) || CheckAuthUid(Msg) *************** *** 1160,1166 **** /* Modify the headbuf to reflect the new LastMsgDate (if necessary) */ ! if (calcLastMsgDate) { bcopy(AMS_DATE(MsgList_GetSnapshot(&newMsgList, (MsgList_Size(&newMsgList) - 1))), headBuf + sizeof(AMS_DIRECTORY_PREFIX_STRING) --- 1172,1178 ---- /* Modify the headbuf to reflect the new LastMsgDate (if necessary) */ ! if (oldDirReadable && calcLastMsgDate) { bcopy(AMS_DATE(MsgList_GetSnapshot(&newMsgList, (MsgList_Size(&newMsgList) - 1))), headBuf + sizeof(AMS_DIRECTORY_PREFIX_STRING) *** ams/libs/ms/rmvdir.c Wed Nov 22 11:34:54 1989 --- ams/libs/ms/rmvdir.c.NEW Wed Apr 3 21:13:26 1991 *************** *** 4,15 **** \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/rmvdir.c,v 2.7 89/07/13 12:04:18 bobg Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/rmvdir.c,v $ */ #include #include #include #include extern char *getprofile(), *StripWhiteEnds(), *index(); --- 4,20 ---- \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rmvdir.c,v 2.8 91/04/02 16:45:46 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/rmvdir.c,v $ */ #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include extern char *getprofile(), *StripWhiteEnds(), *index(); *** ams/libs/ms/scavenge.c Mon Aug 6 10:59:38 1990 --- ams/libs/ms/scavenge.c.NEW Wed Apr 3 21:13:27 1991 *************** *** 3,12 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ #include #include #include - #include #include #ifndef EVIA_SCAVENGE --- 3,18 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ + + #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include #include #ifndef EVIA_SCAVENGE *** ams/libs/ms/setsubs.c Wed Nov 22 11:35:15 1989 --- ams/libs/ms/setsubs.c.NEW Wed Apr 3 21:13:28 1991 *************** *** 3,11 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/setsubs.c,v 2.3 89/02/08 15:45:43 ghoti Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/ms/RCS/setsubs.c,v $ */ #include extern char home[]; --- 3,12 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/setsubs.c,v 2.4 91/04/02 16:45:51 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/setsubs.c,v $ */ + #include #include extern char home[]; *** ams/libs/ms/strpself.c Fri Dec 21 14:51:30 1990 --- ams/libs/ms/strpself.c.NEW Tue Dec 4 08:49:08 1990 *************** *** 3,15 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/strpself.c,v 2.11 90/10/23 14:52:34 gk5g Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/strpself.c,v $ */ #include #include #include - #include /* */ #ifndef _IBMR2 extern char *malloc(); --- 3,15 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/strpself.c,v 2.12 90/11/28 14:19:59 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/strpself.c,v $ */ + #include /* */ #include #include #include #ifndef _IBMR2 extern char *malloc(); *** ams/libs/ms/submsg.c Mon Aug 6 10:59:47 1990 --- ams/libs/ms/submsg.c.NEW Thu Apr 18 17:21:49 1991 *************** *** 3,11 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/submsg.c,v 2.13 90/06/05 14:37:12 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/submsg.c,v $ */ #include #include #include --- 3,12 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/submsg.c,v 2.15 1991/04/18 13:55:46 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/submsg.c,v $ */ + #include /* sys/file.h */ #include #include #include *************** *** 14,21 **** #include #include #include - #include - #include /* sys/file.h */ #include extern FILE *fopen(); --- 15,20 ---- *************** *** 403,409 **** --- 402,412 ---- FreeSubmitVector(SubmitVector, which); AMS_RETURN_ERRCODE(errno, EIN_FOPEN, EVIA_SUBMITMESSAGE); } + #ifdef M_UNIX + chmod(dropfile, 0600); + #else fchmod(fileno(fp), 0600); + #endif if (lseek(Msg->OpenFD, Msg->BodyOffsetInFD, L_SET) < 0) { unlink(dropfile); *************** *** 451,457 **** --- 454,464 ---- fp = fopen(MAILLOGSTATFILE, "a"); if (fp) { + #ifdef M_UNIX + chmod(dropfile,0600); + #else fchmod(fileno(fp), 0600); + #endif fputc('\n', fp); fwriteallchars(Msg->RawBits, Msg->HeadSize - 1, fp); fprintf(fp, "X-StatTrace: %s SENT %d bytes ; %s", Me, Msg->FullSize - Msg->HeadSize, arpadate()); *** ams/libs/ms/subs.c Fri Dec 21 14:51:33 1990 --- ams/libs/ms/subs.c.NEW Fri Jan 11 13:22:00 1991 *************** *** 3,17 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/subs.c,v 2.30 90/10/15 16:02:34 gk5g Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/subs.c,v $ */ #include #include #include #include #include - #include /* sys/file.h */ #include #include --- 3,17 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/subs.c,v 2.32 91/01/08 18:27:09 gk5g Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/subs.c,v $ */ + #include /* sys/file.h */ #include #include #include #include #include #include #include *************** *** 284,290 **** struct stat statbuf; struct SubscriptionProfile *sub; Boolean GoodParse; ! static Boolean HasCheckedPathChanges = FALSE; debug(1, ("ReadSubs\n")); --- 284,290 ---- struct stat statbuf; struct SubscriptionProfile *sub; Boolean GoodParse; ! Boolean HasCheckedPathChanges = FALSE; debug(1, ("ReadSubs\n")); *************** *** 500,525 **** if (!oldexternal) oldexternal = OLDEXTERNALSEARCHPATHTEMPLATE; if (!oldofficial) oldofficial = OLDOFFICIALSEARCHPATHTEMPLATE; if (oldmail) { ! char MP[1+MAXPATHLEN]; ! sprintf(MP, "%s/%s", home, MS_TREEROOT); ! if (MS_RebuildOneSubscriptionMap(MP)) { ! sprintf(MP, "Could not rebuild subscription map %s/%s/%s (%d, %d, %d)", ap_Shorten(home), MS_TREEROOT, AMS_SUBSCRIPTIONMAPFILE, AMS_ERRNO, AMS_ERRCAUSE, AMS_ERRVIA); ! NonfatalBizarreError(MP); ! } ! MailPathChanged = TRUE; ! } ! if (strcmp(oldlocal, LOCALSEARCHPATHTEMPLATE)) LocalPathChanged = TRUE; ! if (strcmp(oldexternal, EXTERNALSEARCHPATHTEMPLATE)) ExtPathChanged = TRUE; ! if (strcmp(oldofficial, OFFICIALSEARCHPATHTEMPLATE)) OffPathChanged = TRUE; if (MailPathChanged || LocalPathChanged || ExtPathChanged || OffPathChanged) { ! PathsHaveChanged = TRUE; } oldmaillen = oldmail ? strlen(oldmail) : 0; oldlocallen = strlen(oldlocal); oldofflen = strlen(oldofficial); oldextlen = strlen(oldexternal); - return(0); } HandlePathChange(sub) --- 500,526 ---- if (!oldexternal) oldexternal = OLDEXTERNALSEARCHPATHTEMPLATE; if (!oldofficial) oldofficial = OLDOFFICIALSEARCHPATHTEMPLATE; if (oldmail) { ! char MP[1+MAXPATHLEN]; ! sprintf(MP, "%s/%s", home, MS_TREEROOT); ! if (MS_RebuildOneSubscriptionMap(MP)) { ! sprintf(MP, "Could not rebuild subscription map %s/%s/%s (%d, %d, %d)", ap_Shorten(home), MS_TREEROOT, AMS_SUBSCRIPTIONMAPFILE, AMS_ERRNO, AMS_ERRCAUSE, AMS_ERRVIA); ! NonfatalBizarreError(MP); ! } ! MailPathChanged = TRUE; ! } else { ! MailPathChanged = FALSE; ! } ! LocalPathChanged = strcmp(oldlocal, LOCALSEARCHPATHTEMPLATE); ! ExtPathChanged = strcmp(oldexternal, EXTERNALSEARCHPATHTEMPLATE); ! OffPathChanged = strcmp(oldofficial, OFFICIALSEARCHPATHTEMPLATE); if (MailPathChanged || LocalPathChanged || ExtPathChanged || OffPathChanged) { ! PathsHaveChanged = TRUE; } oldmaillen = oldmail ? strlen(oldmail) : 0; oldlocallen = strlen(oldlocal); oldofflen = strlen(oldofficial); oldextlen = strlen(oldexternal); } HandlePathChange(sub) *** ams/libs/ms/subswalk.c Mon Aug 6 10:59:53 1990 --- ams/libs/ms/subswalk.c.NEW Wed Apr 3 21:13:32 1991 *************** *** 3,14 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/subswalk.c,v 2.9 90/06/05 14:37:33 gk5g Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/subswalk.c,v $ */ #include #include #include #include #ifndef _IBMR2 --- 3,20 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/subswalk.c,v 2.10 91/04/02 16:46:08 susan Exp $ $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/ms/RCS/subswalk.c,v $ */ #include #include + #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include #ifndef _IBMR2 *** ams/libs/nosnap/nosnap.c Wed Nov 22 11:36:14 1989 --- ams/libs/nosnap/nosnap.c.NEW Fri May 24 15:06:05 1991 *************** *** 3,11 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/nosnap/RCS/nosnap.c,v 2.4 89/07/20 14:12:43 cfe Exp $ ! $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/libs/nosnap/RCS/nosnap.c,v $ */ #include #include #define TRUE 1 --- 3,12 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/nosnap/RCS/nosnap.c,v 2.7 1991/05/24 19:04:52 gk5g Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/nosnap/RCS/nosnap.c,v $ */ + #include #include #include #define TRUE 1 *************** *** 37,65 **** int len, type, bufsize; { char *ThisError = "Messageserver initialization failed. Program can not run."; int dummy, level = ERR_FATAL; int Decode = TRUE; if(mserrcode = MS_Initialize(&dummy, FALSE)) { if (AMS_ERRCAUSE == EIN_MSPATHCHECK) { ! switch(AMS_ERRNO) { ! case ENOENT: ! ThisError = "An element of your mspath does not exist. Please check and fix your mspath preference."; ! Decode = FALSE; ! break; ! case EACCES: ! case EMSUNAUTH: ! ThisError = "Unreadable mspath element. If you're authenticated, please check & fix your mspath preference."; ! Decode = FALSE; ! break; ! case EMSNOSUCHVAR: ! ThisError = "Your mspath preference refers to an unknown variable. Please check & fix it."; ! Decode = FALSE; ! break; ! } ! level = ERR_CRITICAL; } ReportError(ThisError, level, Decode); return(mserrcode); /* Not reached if level is ERR_FATAL */ } return(0); --- 38,95 ---- int len, type, bufsize; { char *ThisError = "Messageserver initialization failed. Program can not run."; + char *errorMsg = NULL; int dummy, level = ERR_FATAL; int Decode = TRUE; if(mserrcode = MS_Initialize(&dummy, FALSE)) { if (AMS_ERRCAUSE == EIN_MSPATHCHECK) { ! switch(AMS_ERRNO) { ! case ENOENT: ! ThisError = "An element of your mspath does not exist. Please check and fix your mspath preference."; ! errorMsg = (char*) malloc(strlen(ThisError) + 1); ! strcpy(errorMsg, ThisError); ! ThisError = errorMsg; ! Decode = FALSE; ! break; ! case EACCES: ! case EMSUNAUTH: ! ThisError = "Unreadable mspath element. If you're authenticated, please check & fix your mspath preference."; ! errorMsg = (char*) malloc(strlen(ThisError) + 1); ! strcpy(errorMsg, ThisError); ! ThisError = errorMsg; ! Decode = FALSE; ! break; ! case EMSNOSUCHVAR: ! ThisError = "Your mspath preference refers to an unknown variable. Please check & fix it."; ! errorMsg = (char*) malloc(strlen(ThisError) + 1); ! strcpy(errorMsg, ThisError); ! ThisError = errorMsg; ! Decode = FALSE; ! break; ! } ! level = ERR_CRITICAL; } + else if(AMS_ERRCAUSE == EIN_OPENDIR) { + switch(AMS_ERRVIA) { + case EVIA_DOIHAVEMAIL: + { + extern char *GetPersonalMailbox(); + char *mailbox; + + mailbox = GetPersonalMailbox(); + ThisError = "Could not open your personal mailbox"; + errorMsg = (char*) malloc(strlen(ThisError) + strlen(mailbox) + 5); + sprintf(errorMsg, "%s [%s].", ThisError, mailbox); + ThisError = errorMsg; + Decode = FALSE; + level = ERR_CRITICAL; + break; + } + } + } ReportError(ThisError, level, Decode); + if(errorMsg) free(errorMsg); return(mserrcode); /* Not reached if level is ERR_FATAL */ } return(0); *** ams/libs/snap/cuisnap.c Fri Dec 21 14:51:38 1990 --- ams/libs/snap/cuisnap.c.NEW Tue Dec 4 08:49:28 1990 *************** *** 3,10 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/snap/RCS/cuisnap.c,v 2.19 90/10/19 11:08:17 gk5g Exp $ ! $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/libs/snap/RCS/cuisnap.c,v $ */ /* --- 3,10 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ /* ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/snap/RCS/cuisnap.c,v 2.20 90/11/28 14:20:53 susan Exp $ ! $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/libs/snap/RCS/cuisnap.c,v $ */ /* *************** *** 18,26 **** #define PROCNAME static char * #include #include - #include /* sys/types.h */ #include #include #include --- 18,26 ---- #define PROCNAME static char * + #include /* sys/types.h */ #include #include #include #include #include *** ams/ms/Imakefile Fri Dec 21 14:51:40 1990 --- ams/ms/Imakefile.NEW Mon Jun 17 13:32:29 1991 *************** *** 20,25 **** --- 20,31 ---- OBJS = errmsgs.o ms.o + #if defined(ANDREW_MALLOC_ENV) && defined(MALLOC_DEBUG_ENV) + PLUMBER_LIB = ${BASEDIR}/lib/libplumber.a + #else + PLUMBER_LIB = + #endif + LIBS_PART_A= \ ${BASEDIR}/lib/libmssrv.a \ ${BASEDIR}/lib/libmsshr.a \ *************** *** 30,36 **** ${BASEDIR}/lib/libmail.a \ ${BASEDIR}/lib/liberrors.a \ ${UTILLIB} ${PRSLIB} \ ! ${BASEDIR}/lib/libplumber.a \ ${BASEDIR}/lib/libgasp.a \ ${RESOLVER_LIB} --- 36,42 ---- ${BASEDIR}/lib/libmail.a \ ${BASEDIR}/lib/liberrors.a \ ${UTILLIB} ${PRSLIB} \ ! ${PLUMBER_LIB} \ ${BASEDIR}/lib/libgasp.a \ ${RESOLVER_LIB} *************** *** 47,59 **** NormalObjectRule() ! ProgramTarget(messageserver, ${OBJS}, ${NSNAP_LIBS} , ) install.time:: $(INSTALL) $(INSTPROGRWFLAGS) messageserver ${DESTDIR}/etc/snap/services/`awk -f imkfile.awk ${BASEDIR}/include/ams/amsvers.h` ! ProgramTarget(messageservert, ${OBJS}, ${TSNAP_LIBS}, ) install.time:: $(INSTALL) $(INSTPROGRWFLAGS) messageservert ${DESTDIR}/etc/snap/servicest/`awk -f imkfile.awk ${BASEDIR}/include/ams/amsvers.h` --- 53,73 ---- NormalObjectRule() ! #ifdef USE_MMDF_ENV ! ProgramTarget(messageserver, ${OBJS}, ${NSNAP_LIBS} , ${SUPLIBS} ${NETLIBS} ${MMDFLIBS}) ! #else ! ProgramTarget(messageserver, ${OBJS}, ${NSNAP_LIBS} , ${SUPLIBS} ${NETLIBS}) ! #endif install.time:: $(INSTALL) $(INSTPROGRWFLAGS) messageserver ${DESTDIR}/etc/snap/services/`awk -f imkfile.awk ${BASEDIR}/include/ams/amsvers.h` ! #ifdef USE_MMDF_ENV ! ProgramTarget(messageservert, ${OBJS}, ${TSNAP_LIBS}, ${SUPLIBS} ${NETLIBS} ${MMDFLIBS}) ! #else ! ProgramTarget(messageservert, ${OBJS}, ${TSNAP_LIBS}, ${SUPLIBS} ${NETLIBS}) ! #endif install.time:: $(INSTALL) $(INSTPROGRWFLAGS) messageservert ${DESTDIR}/etc/snap/servicest/`awk -f imkfile.awk ${BASEDIR}/include/ams/amsvers.h` *** ams/ms/ms.c Fri Dec 21 14:51:44 1990 --- ams/ms/ms.c.NEW Thu Apr 25 16:12:09 1991 *************** *** 2,12 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/ms/RCS/ms.c,v 2.23 90/10/15 15:28:17 gk5g Exp $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/ms/RCS/ms.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/ms/RCS/ms.c,v 2.23 90/10/15 15:28:17 gk5g Exp $ "; #endif /* lint */ /* --- 2,12 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/ms/RCS/ms.c,v 2.24 1990/11/28 14:21:46 susan Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/ms/RCS/ms.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/ms/RCS/ms.c,v 2.24 1990/11/28 14:21:46 susan Exp $ "; #endif /* lint */ /* *************** *** 13,22 **** Message server process. */ #include #include #include - #include /* sys/file.h sys/time.h */ #include #include --- 13,22 ---- Message server process. */ + #include /* sys/file.h sys/time.h */ #include #include #include #include #include *** ams/msclients/cui/Imakefile Fri Dec 21 14:51:47 1990 --- ams/msclients/cui/Imakefile.NEW Wed Apr 3 21:13:52 1991 *************** *** 42,54 **** NormalObjectRule() #ifdef SNAP_ENV ! ProgramTarget(cuis, ${OBJS}, parameterized_snap_libs(libsnap), ) ! ProgramTarget(cuit, ${OBJS}, parameterized_snap_libs(libsnapt), ) #endif /* SNAP_ENV */ ! ProgramTarget(cuin, ${OBJS}, ${NOSNAPLIBS}, ) InstallMultiple(${PRODUCTS}, $(INSTPROGFLAGS), ${DESTDIR}/bin) ! InstallHardLink($(BASEDIR)/bin/cuin, $(DESTDIR)/bin/cui) DependTarget() NormalHelpRule() --- 42,63 ---- NormalObjectRule() #ifdef SNAP_ENV ! #ifdef USE_MMDF_ENV ! ProgramTarget(cuis, ${OBJS}, parameterized_snap_libs(libsnap), ${NETLIBS} ${SUPLIBS} ${MMDFLIBS}) ! ProgramTarget(cuit, ${OBJS}, parameterized_snap_libs(libsnapt), ${NETLIBS} ${SUPLIBS} ${MMDFLIBS}) ! #else ! ProgramTarget(cuis, ${OBJS}, parameterized_snap_libs(libsnap), ${NETLIBS} ${SUPLIBS}) ! ProgramTarget(cuit, ${OBJS}, parameterized_snap_libs(libsnapt), ${NETLIBS} ${SUPLIBS}) ! #endif #endif /* SNAP_ENV */ ! #ifdef USE_MMDF_ENV ! ProgramTarget(cuin, ${OBJS}, ${NOSNAPLIBS}, ${NETLIBS} ${SUPLIBS} ${MMDFLIBS}) ! #else ! ProgramTarget(cuin, ${OBJS}, ${NOSNAPLIBS}, ${NETLIBS} ${SUPLIBS}) ! #endif InstallMultiple(${PRODUCTS}, $(INSTPROGFLAGS), ${DESTDIR}/bin) ! InstallLink($(BASEDIR)/bin/cuin, $(DESTDIR)/bin/cui) DependTarget() NormalHelpRule() *** ams/msclients/cui/cui.c Fri Dec 21 14:51:54 1990 --- ams/msclients/cui/cui.c.NEW Tue Dec 4 08:49:52 1990 *************** *** 2,21 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cui.c,v 2.32 90/10/25 18:04:52 gk5g Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cui.c,v $ */ #define CUIP_MAJ_VER 2 #define CUIP_MIN_VER 0 #ifndef NO_DUPLICATE_STATIC_CHARS ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cui.c,v 2.32 90/10/25 18:04:52 gk5g Exp $ "; #endif /* NO_DUPLICATE_STATIC_CHARS */ - - #include #include #include #include #include --- 2,20 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cui.c,v 2.33 90/11/28 14:23:22 susan Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cui.c,v $ */ #define CUIP_MAJ_VER 2 #define CUIP_MIN_VER 0 #ifndef NO_DUPLICATE_STATIC_CHARS ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cui.c,v 2.33 90/11/28 14:23:22 susan Exp $ "; #endif /* NO_DUPLICATE_STATIC_CHARS */ #include + #include #include #include #include *** ams/msclients/cui/cuifns.c Fri Dec 21 14:52:04 1990 --- ams/msclients/cui/cuifns.c.NEW Wed Apr 3 21:13:55 1991 *************** *** 2,16 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cuifns.c,v 2.11 90/10/25 18:06:24 gk5g Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cuifns.c,v $ */ #ifndef NO_DUPLICATE_STATIC_CHARS ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cuifns.c,v 2.11 90/10/25 18:06:24 gk5g Exp $ "; #endif /* NO_DUPLICATE_STATIC_CHARS */ ! #include #include #include --- 2,16 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cuifns.c,v 2.13 91/04/02 16:48:02 susan Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cuifns.c,v $ */ #ifndef NO_DUPLICATE_STATIC_CHARS ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/cui/RCS/cuifns.c,v 2.13 91/04/02 16:48:02 susan Exp $ "; #endif /* NO_DUPLICATE_STATIC_CHARS */ ! #include /* sys/file.h sys/time.h */ #include #include #include *************** *** 17,23 **** #include #include #include - #include /* sys/file.h sys/time.h */ #define CUI_SOURCE_CUIFNS_C #include --- 17,22 ---- *************** *** 1133,1135 **** --- 1132,1171 ---- return(0); } + #ifdef M_UNIX + + /* get a longer passwd - + * doesn't handle signals well + */ + #include + + char * + getpass(prompt) + char *prompt; + { + struct termio tty; + int flags; + int got = 1; + FILE *f = stdin; + int fd, c; + static char buf[256]; + int len = sizeof(buf); + char *ptr = buf; + + fd = fileno(f); + ioctl(fd, TCGETA, &tty); + flags = tty.c_lflag; + tty.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL); + ioctl(fd, TCSETAF, &tty); + fputs(prompt, stderr); + while ((c = getc(f)) != '\n' && c != '\r' && c != EOF) { + if (got++ < len) + *ptr++ = c; + } + *ptr = '\0'; + tty.c_lflag = flags; + ioctl(fd, TCSETAF, &tty); + putc('\n',stderr); + return(buf); + } + #endif *** ams/msclients/nns/Imakefile Fri Dec 21 14:52:06 1990 --- ams/msclients/nns/Imakefile.NEW Wed Apr 3 21:14:02 1991 *************** *** 26,32 **** NormalObjectRule() ! ProgramTarget(nns, $(OBJS), $(LIBS),) InstallProgram(nns, $(DESTDIR)/etc) --- 26,36 ---- NormalObjectRule() ! #ifdef USE_MMDF_ENV ! ProgramTarget(nns, $(OBJS), $(LIBS), ${NETLIBS} ${SUPLIBS} ${MMDFLIBS}) ! #else ! ProgramTarget(nns, $(OBJS), $(LIBS), ${NETLIBS} ${SUPLIBS} ) ! #endif InstallProgram(nns, $(DESTDIR)/etc) *** ams/msclients/nns/big.h Wed Nov 22 11:37:49 1989 --- ams/msclients/nns/big.h.NEW Wed Apr 3 21:14:03 1991 *************** *** 3,14 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ #include #include #include #include #include ! #include #define CANT_OPEN_DIR (-1) #define DEFAULTMAILBOX ("./") --- 3,20 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ + #include #include #include #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include ! #endif ! /*#include */ #define CANT_OPEN_DIR (-1) #define DEFAULTMAILBOX ("./") *** ams/msclients/nns/gl.c Wed Nov 22 11:37:51 1989 --- ams/msclients/nns/gl.c.NEW Wed Apr 3 21:14:05 1991 *************** *** 6,12 **** /* Methods for the GroupList data type for the Netnews Snarfer */ - #include #include static void GLDeleteRecentEntries(); --- 6,11 ---- *** ams/msclients/vui/Imakefile Fri Dec 21 14:52:07 1990 --- ams/msclients/vui/Imakefile.NEW Wed Apr 3 21:14:13 1991 *************** *** 53,65 **** #endif /* AIX */ #ifdef SNAP_ENV ! ProgramTarget(vuis, ${OBJS}, parameterized_snap_libs(libsnap), ${CURSESLIBS}) ! ProgramTarget(vuit, ${OBJS}, parameterized_snap_libs(libsnapt), ${CURSESLIBS}) #endif /* SNAP_ENV */ ! ProgramTarget(vuin, ${OBJS}, ${NOSNAPLIBS}, ${CURSESLIBS}) InstallMultiple(${PRODUCTS}, ${INSTPROGFLAGS}, ${DESTDIR}/bin/) ! InstallHardLink(${DESTDIR}/bin/vuin, ${DESTDIR}/bin/vui) DependTarget() NormalHelpRule() --- 53,69 ---- #endif /* AIX */ #ifdef SNAP_ENV ! ProgramTarget(vuis, ${OBJS}, parameterized_snap_libs(libsnap), ${CURSESLIBS} ${NETLIBS} ${SUPLIBS}) ! ProgramTarget(vuit, ${OBJS}, parameterized_snap_libs(libsnapt), ${CURSESLIBS} ${NETLIBS} ${SUPLIBS}) #endif /* SNAP_ENV */ ! #ifdef USE_MMDF_ENV ! ProgramTarget(vuin, ${OBJS}, ${NOSNAPLIBS}, ${CURSESLIBS} ${NETLIBS} ${SUPLIBS} ${MMDFLIBS}) ! #else ! ProgramTarget(vuin, ${OBJS}, ${NOSNAPLIBS}, ${CURSESLIBS} ${NETLIBS} ${SUPLIBS}) ! #endif InstallMultiple(${PRODUCTS}, ${INSTPROGFLAGS}, ${DESTDIR}/bin/) ! InstallLink(${DESTDIR}/bin/vuin, ${DESTDIR}/bin/vui) DependTarget() NormalHelpRule() *** ams/msclients/vui/andmach.c Wed Nov 22 11:38:09 1989 --- ams/msclients/vui/andmach.c.NEW Wed Apr 3 21:14:14 1991 *************** *** 4,11 **** \* ********************************************************************** */ /* machine dependant vui routines for andrew ! $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/msclients/vui/RCS/andmach.c,v 2.4 89/05/09 14:13:45 kf0s Exp $ */ #include #include #include --- 4,12 ---- \* ********************************************************************** */ /* machine dependant vui routines for andrew ! $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/andmach.c,v 2.5 91/04/02 16:49:36 susan Exp $ */ + #include #include #include #include *** ams/msclients/vui/andmpc.c Fri Dec 21 14:52:09 1990 --- ams/msclients/vui/andmpc.c.NEW Tue Dec 4 08:50:13 1990 *************** *** 2,12 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/andmpc.c,v 2.9 90/10/25 17:54:37 gk5g Exp $ */ /* $ACIS: $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/andmpc.c,v 2.9 90/10/25 17:54:37 gk5g Exp $ "; #endif /* lint */ /* --- 2,12 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/andmpc.c,v 2.10 90/11/28 14:25:46 susan Exp $ */ /* $ACIS: $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/andmpc.c,v 2.10 90/11/28 14:25:46 susan Exp $ "; #endif /* lint */ /* *************** *** 17,24 **** * */ - #include #include #include ULsubstr(s1, s2) char *s1, *s2; --- 17,24 ---- * */ #include + #include #include ULsubstr(s1, s2) char *s1, *s2; *** ams/msclients/vui/lmenus.c Wed Sep 26 16:01:29 1990 --- ams/msclients/vui/lmenus.c.NEW Wed Apr 3 21:14:15 1991 *************** *** 7,14 **** * Extracted from code by Mark Chance */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/lmenus.c,v 2.6 90/08/14 15:37:45 gk5g Exp $ */ #include #include #include --- 7,15 ---- * Extracted from code by Mark Chance */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/lmenus.c,v 2.7 91/04/02 16:49:41 susan Exp $ */ + #include #include #include #include *** ams/msclients/vui/panelp.c Wed Sep 26 16:01:31 1990 --- ams/msclients/vui/panelp.c.NEW Wed Apr 3 21:14:17 1991 *************** *** 21,28 **** * */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/panelp.c,v 1.17 90/08/14 15:36:12 gk5g Exp $ */ #include #include #include --- 21,29 ---- * */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/panelp.c,v 1.18 91/04/02 16:49:52 susan Exp $ */ + #include #include #include #include *** ams/msclients/vui/vui.c Wed Sep 26 16:01:34 1990 --- ams/msclients/vui/vui.c.NEW Wed Apr 3 21:14:24 1991 *************** *** 2,8 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vui.c,v 2.31 90/08/14 10:48:26 gk5g Exp $ */ /* * This module contains the mainline VUI code for access --- 2,8 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vui.c,v 2.32 91/04/02 16:50:05 susan Exp $ */ /* * This module contains the mainline VUI code for access *************** *** 20,26 **** #include #include ! #define DEFAULT_HEADERS "cc:date:from:subj:to" extern char *index(), *getenv(), CUI_VersionString[], *GetSUser(); --- 20,27 ---- #include #include ! static char default_headers[] = "cc:date:from:subj:to"; ! #define DEFAULT_HEADERS strcpy(malloc(strlen(default_headers)+1),default_headers) extern char *index(), *getenv(), CUI_VersionString[], *GetSUser(); *************** *** 216,223 **** char **argv; { char *editor, heads[1024]; ! sprintf(intro[1].pdata,"Version %d.%d",VUI_MAJORVERSION, VUI_MINORVERSION); sprintf(ProgramVersion,"((prog %s%sVUI %d %d))",ProgramPrefix, *ProgramPrefix? "-":"",VUI_MAJORVERSION, VUI_MINORVERSION); printf("%s%sVUI Version %d.%d\n", ProgramPrefix, *ProgramPrefix? "-":"", --- 217,226 ---- char **argv; { char *editor, heads[1024]; + static char vui_version[80], vui_date[256]; ! sprintf(vui_version,"Version %d.%d",VUI_MAJORVERSION, VUI_MINORVERSION); ! intro[1].pdata = vui_version; sprintf(ProgramVersion,"((prog %s%sVUI %d %d))",ProgramPrefix, *ProgramPrefix? "-":"",VUI_MAJORVERSION, VUI_MINORVERSION); printf("%s%sVUI Version %d.%d\n", ProgramPrefix, *ProgramPrefix? "-":"", *************** *** 253,259 **** else if (sendyn && *sendyn=='1') *opt_p = (int)OPT_G_SEND; else if (foldyn && *foldyn=='1') *opt_p = (int)OPT_G_MAILF; else *opt_p = MENU_DO_OVER; ! RealWhenIs("today", intro[0].pdata); editor=index(intro[0].pdata,' '); if (editor!=NIL) *editor='\0'; /* Only take the date part of the date/time */ sprintf(CUI_VersionString,"VUI.%s.%d.%d",VUI_HOST, VUI_MAJORVERSION, VUI_MINORVERSION); --- 256,264 ---- else if (sendyn && *sendyn=='1') *opt_p = (int)OPT_G_SEND; else if (foldyn && *foldyn=='1') *opt_p = (int)OPT_G_MAILF; else *opt_p = MENU_DO_OVER; ! strcpy(vui_date, intro[0].pdata); ! RealWhenIs("today", vui_date); ! intro[0].pdata = vui_date; editor=index(intro[0].pdata,' '); if (editor!=NIL) *editor='\0'; /* Only take the date part of the date/time */ sprintf(CUI_VersionString,"VUI.%s.%d.%d",VUI_HOST, VUI_MAJORVERSION, VUI_MINORVERSION); *** ams/msclients/vui/vuibase.c Fri Dec 21 14:52:11 1990 --- ams/msclients/vui/vuibase.c.NEW Tue Dec 4 08:50:16 1990 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vuibase.c,v 1.30 90/06/05 14:27:13 gk5g Exp $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vuibase.c,v 1.30 90/06/05 14:27:13 gk5g Exp $ "; #endif /* lint */ #include #include #define VUI_SOURCE_VUIBASE_C --- 2,14 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vuibase.c,v 1.31 90/11/28 14:25:56 susan Exp $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vuibase.c,v 1.31 90/11/28 14:25:56 susan Exp $ "; #endif /* lint */ + #include #include #include #define VUI_SOURCE_VUIBASE_C *************** *** 16,22 **** #include #include #include - #include #include #include --- 17,22 ---- *** ams/msclients/vui/vuimenus.c Wed Nov 22 11:39:02 1989 --- ams/msclients/vui/vuimenus.c.NEW Wed Apr 3 21:14:26 1991 *************** *** 2,9 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/msclients/vui/RCS/vuimenus.c,v 1.5 89/05/08 17:22:27 kf0s Exp $ */ #include #include #include --- 2,10 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vuimenus.c,v 1.6 91/04/02 16:50:43 susan Exp $ */ + #include #include #include #include *** ams/msclients/vui/vuipnl.c Fri Dec 21 14:52:16 1990 --- ams/msclients/vui/vuipnl.c.NEW Wed Apr 3 21:14:31 1991 *************** *** 2,8 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vuipnl.c,v 1.28 90/06/05 14:31:29 gk5g Exp $ */ /* * This module defines, and responds to input from, the --- 2,8 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vuipnl.c,v 1.30 91/04/02 16:50:17 susan Exp $ */ /* * This module defines, and responds to input from, the *************** *** 9,14 **** --- 9,15 ---- * main VUI panel. */ + #include #include #include #define VUI_SOURCE_VUIPNL_C *************** *** 16,22 **** #include #include #include - #include #include #include #include --- 17,22 ---- *************** *** 935,940 **** --- 935,942 ---- int maxlen, line_count, row; Boolean NewFlag = FALSE; long msgno; + static char line_str[80]; + line_count= -1; PageBufPtr = MSG_PageBuf; *************** *** 1034,1040 **** } } debug((2,"So %d lines are visible and the rest null\n",*n_shown_p)); ! sprintf(mess_bp[1].pdata, "%ld of %ld.", msg_msgno[0]+1L, MSG_Total); return(0); } --- 1036,1043 ---- } } debug((2,"So %d lines are visible and the rest null\n",*n_shown_p)); ! sprintf(line_str, "%ld of %ld.", msg_msgno[0]+1L, MSG_Total); ! mess_bp[1].pdata = line_str; return(0); } *** ams/msclients/vui/vuiscrns.c Wed Nov 22 11:38:36 1989 --- ams/msclients/vui/vuiscrns.c.NEW Wed Apr 3 21:14:33 1991 *************** *** 2,9 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/ams/msclients/vui/RCS/vuiscrns.c,v 2.7 89/05/09 14:15:04 kf0s Exp $ */ #include #include --- 2,10 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/msclients/vui/RCS/vuiscrns.c,v 2.8 91/04/02 16:49:48 susan Exp $ */ + #include #include #include *** ams/utils/dlistc/dlc.c Fri Dec 21 14:52:20 1990 --- ams/utils/dlistc/dlc.c.NEW Tue Dec 4 08:50:52 1990 *************** *** 12,19 **** */ - #include #include #include /* this may cause portability problems */ #include #include --- 12,19 ---- */ #include + #include #include /* this may cause portability problems */ #include #include *** ams/delivery/trymail/strong.c Fri Dec 21 14:52:32 1990 --- ams/delivery/trymail/strong.c.NEW Tue Apr 9 19:06:39 1991 *************** *** 10,22 **** is permitted to return mail to its sender. \* ************************************************************ */ ! static char rcsid[] = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/delivery/trymail/RCS/strong.c,v 1.41 90/10/26 13:05:56 gk5g Exp $"; ! #include #include #include #include - #include /* sys/types.h sys/file.h strings.h sys/time.h */ #include #include #include --- 10,21 ---- is permitted to return mail to its sender. \* ************************************************************ */ ! static char rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/delivery/trymail/RCS/strong.c,v 1.45 91/04/09 18:12:37 gk5g Exp $"; ! #include /* sys/types.h sys/file.h strings.h sys/time.h */ #include #include #include #include #include #include #include *************** *** 36,42 **** --- 35,43 ---- extern int errno; + #ifndef _IBMR2 extern char *malloc(), *realloc(); + #endif /* _IBMR2 */ #include #include *************** *** 277,287 **** } } } ! ctCode = -3; /* There was such a header */ ValPtr = Next822LPart(ValPtr, BES->ctLineEnd, CopyHdr, CopyHdrSize); /* OK, is there a token that we recognize here? */ if (ValPtr != NULL && (ULstrcmp(CopyHdr, "X-BE2") == 0 || ULstrcmp(CopyHdr, "BE2") == 0)) { ValPtr = Next822LPart(ValPtr, BES->ctLineEnd, CopyHdr, CopyHdrSize); if (ValPtr != NULL && strcmp(CopyHdr, ";") == 0) { ValPtr = Next822LPart(ValPtr, BES->ctLineEnd, CopyHdr, CopyHdrSize); --- 278,290 ---- } } } ! /* Allow messages with totally-unrecognized Content-type: headers to pass through without alteration; pretend here that they don't have the Content-type: header at all. Do checking on the sub-type of ``X-BE2'' or ``BE2'' content types, though. */ ValPtr = Next822LPart(ValPtr, BES->ctLineEnd, CopyHdr, CopyHdrSize); /* OK, is there a token that we recognize here? */ if (ValPtr != NULL && (ULstrcmp(CopyHdr, "X-BE2") == 0 || ULstrcmp(CopyHdr, "BE2") == 0)) { + ctCode = -3; /* There was a Content-Type: header of type BE2 */ + /* Complain if we don't understand (and can't translate) the sub-type */ ValPtr = Next822LPart(ValPtr, BES->ctLineEnd, CopyHdr, CopyHdrSize); if (ValPtr != NULL && strcmp(CopyHdr, ";") == 0) { ValPtr = Next822LPart(ValPtr, BES->ctLineEnd, CopyHdr, CopyHdrSize); *************** *** 300,306 **** } } } ! if (Fmt == NeverOK && ituCode == itu_send) ituCode = itu_alter; /* Look for the X-Andrew-Message-Size header in case we delete it as we unscribe */ if (BracketField(BES->Header, xamsFieldName, --- 303,310 ---- } } } ! /* Don't let folks send ATK-formatted text to netnews */ ! if (Fmt == NeverOK && ituCode == itu_send && BES->DoUnScribe) ituCode = itu_alter; /* Look for the X-Andrew-Message-Size header in case we delete it as we unscribe */ if (BracketField(BES->Header, xamsFieldName, *************** *** 307,313 **** &xasfVal, &BES->xamsLineEnd, &BES->xamsLineBegin) == 0) { BES->xamsLineEnd = BES->xamsLineBegin = NULL; } ! /* Now look for the X-Andrew-ScribeFormat: header. */ if (Fmt == AlwaysOK || BracketField(BES->Header, xasfFieldName, &xasfVal, &BES->xasfLineEnd, &BES->xasfLineBegin) == 0) { xasfVal = BES->xasfLineEnd = BES->xasfLineBegin = NULL; --- 311,317 ---- &xasfVal, &BES->xamsLineEnd, &BES->xamsLineBegin) == 0) { BES->xamsLineEnd = BES->xamsLineBegin = NULL; } ! /* Now look for the (old) X-Andrew-ScribeFormat: header. */ if (Fmt == AlwaysOK || BracketField(BES->Header, xasfFieldName, &xasfVal, &BES->xasfLineEnd, &BES->xasfLineBegin) == 0) { xasfVal = BES->xasfLineEnd = BES->xasfLineBegin = NULL; *************** *** 2108,2114 **** PrevHost = ThisHost; /* Save for inner loop and next iteration */ PGrp = CheckAMSDelivery(PrevHost); if (PGrp == 0) { ! if (IsSomeExpired) { /* time it out early */ PGrp = -1; } else { FCode1 = 14; --- 2112,2118 ---- PrevHost = ThisHost; /* Save for inner loop and next iteration */ PGrp = CheckAMSDelivery(PrevHost); if (PGrp == 0) { ! if (IsCrossCellExpired) { /* time it out early */ PGrp = -1; } else { FCode1 = 14; *** ams/delivery/trymail/trymail.c Mon Aug 6 11:00:57 1990 --- ams/delivery/trymail/trymail.c.NEW Tue Apr 9 19:06:45 1991 *************** *** 8,14 **** to client workstations for possible short-circuit evaluation. \* ************************************************************ */ ! static char rcsid[] = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/delivery/trymail/RCS/trymail.c,v 1.41 90/05/01 10:31:18 bobg Exp $"; #include /*VARARGS1*/ --- 8,14 ---- to client workstations for possible short-circuit evaluation. \* ************************************************************ */ ! static char rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/delivery/trymail/RCS/trymail.c,v 1.45 91/04/09 18:22:17 gk5g Exp $"; #include /*VARARGS1*/ *************** *** 45,51 **** --- 45,53 ---- extern int errno; + #ifndef _IBMR2 extern char *malloc(), *realloc(); + #endif /* _IBMR2 */ #include #include *************** *** 53,59 **** extern char *UnparseAddress(); int TMDebug, DoTiming; ! int ReallyDeliver, IsExpired, IsExtraExpired, IsALittleExpired, IsSomeExpired; int MinimumFileSize, EnqueueDate, GlobalOptions; char *GlobalForString, *GlobalDom; static int ExitStatus = tmexit_OK; --- 55,61 ---- extern char *UnparseAddress(); int TMDebug, DoTiming; ! int ReallyDeliver, IsExpired, IsExtraExpired, IsALittleExpired, IsSomeExpired, IsCrossCellExpired; int MinimumFileSize, EnqueueDate, GlobalOptions; char *GlobalForString, *GlobalDom; static int ExitStatus = tmexit_OK; *************** *** 2650,2656 **** wp_ErrorCode ErrCode, Err2; int MinMatch, OutMatch, ReturnResult, NewLen, NameSep; extern ADDRESS_HOST *MakeHost(); ! int laErr, laType, fwdErr, fwdType; char *laPrime, *laSecond; FILE *Adv; --- 2652,2658 ---- wp_ErrorCode ErrCode, Err2; int MinMatch, OutMatch, ReturnResult, NewLen, NameSep; extern ADDRESS_HOST *MakeHost(); ! int laErr, laType, fwdErr, fwdType, badLocalMatch; char *laPrime, *laSecond; FILE *Adv; *************** *** 3001,3015 **** (void) wp_DeAllocate(STok); return; } ! /* Got just one result name. Was the match too fuzzy? */ ! if (OutMatch > MatchNoHeuristics) { Adv = OpenPMAdvisory( ! (OutMatch > MatchExPA ? "Undeliverable heuristic" : "Deliverable heuristic"), 0, Addr, DefaultDomain); if (Adv != NULL) { auto char BF[1000]; sprintf(BF, "White pages match was %d: ", OutMatch); ! if (OutMatch > MatchExPA) { strcat(BF, "too fuzzy for delivery"); } else { strcat(BF, "delivered anyway"); --- 3003,3019 ---- (void) wp_DeAllocate(STok); return; } ! /* Can be ID match, or exact surname match with any amount of fuzziness in given name */ ! /* This used to be the equivalent of: badLocalMatch = (OutMatch > MatchExPA); */ ! badLocalMatch = (OutMatch > MatchExPA || OutMatch == MatchAbPh || OutMatch == MatchAbOv || (OutMatch > MatchFirstNameAbbrev && OutMatch <= MatchNoHeuristics)); ! if (OutMatch > MatchNoHeuristics || badLocalMatch) { Adv = OpenPMAdvisory( ! (badLocalMatch ? "Undeliverable heuristic" : "Deliverable heuristic"), 0, Addr, DefaultDomain); if (Adv != NULL) { auto char BF[1000]; sprintf(BF, "White pages match was %d: ", OutMatch); ! if (badLocalMatch) { strcat(BF, "too fuzzy for delivery"); } else { strcat(BF, "delivered anyway"); *************** *** 3033,3039 **** ClosePMAdvisory(); } } ! if (OutMatch > MatchExPA) { if (ULstrcmp(DefaultDomain, WorkstationCell) == 0) { ReturnResult = ReturnFuzzy(Addr, wpCD, STok, KVal, 0, MinMatch, OutMatch, DefaultDomain); free(KVal); --- 3037,3043 ---- ClosePMAdvisory(); } } ! if (badLocalMatch) { if (ULstrcmp(DefaultDomain, WorkstationCell) == 0) { ReturnResult = ReturnFuzzy(Addr, wpCD, STok, KVal, 0, MinMatch, OutMatch, DefaultDomain); free(KVal); *************** *** 3521,3527 **** long age; u_long RidiculousAge; u_long DayMax; ! IsExpired = IsExtraExpired = IsALittleExpired = IsSomeExpired = FALSE; if (EnqueueDate == 0) return; /* Sanity checks on the time value. EnqueueDate values only appear too old if they're between AMS_ViceQueueLifetime and RidiculousAge before now. Otherwise we assume a clock change (a time warp). RidiculousAge is set to be the greater of AMS_ViceQueueLifetimeCap and twice the sum of AMS_ViceQueueLifetime and AMS_ExtraViceQueueLifetime. */ --- 3525,3531 ---- long age; u_long RidiculousAge; u_long DayMax; ! IsExpired = IsExtraExpired = IsALittleExpired = IsSomeExpired = IsCrossCellExpired = FALSE; if (EnqueueDate == 0) return; /* Sanity checks on the time value. EnqueueDate values only appear too old if they're between AMS_ViceQueueLifetime and RidiculousAge before now. Otherwise we assume a clock change (a time warp). RidiculousAge is set to be the greater of AMS_ViceQueueLifetimeCap and twice the sum of AMS_ViceQueueLifetime and AMS_ExtraViceQueueLifetime. */ *************** *** 3533,3538 **** --- 3537,3543 ---- if (age > 0 && age < RidiculousAge) { if (age > AMS_ViceQueueLifetime) IsExpired = TRUE; if (age > (AMS_ViceQueueLifetime + AMS_ExtraViceQueueLifetime)) IsExtraExpired = TRUE; + if (age > AMS_CrossCellQueueLifetime) IsCrossCellExpired = TRUE; DayMax = 24*60*60; /* one day, in seconds, but ensure in bounds. */ if (DayMax > AMS_ViceQueueLifetime) DayMax = AMS_ViceQueueLifetime; if (age > DayMax) IsALittleExpired = TRUE; *************** *** 3539,3548 **** if (age > ((DayMax + AMS_ViceQueueLifetime) / 2)) IsSomeExpired = TRUE; } if (TMDebug) fprintf(stderr, ! "Age: %d (%d,%d,%d): IsExpired=%d, IsExtraExpired=%d, IsALittleExpired=%d, IsSomeExpired=%d.\n", age, AMS_ViceQueueLifetime, AMS_ExtraViceQueueLifetime + AMS_ViceQueueLifetime, ! RidiculousAge, IsExpired, IsExtraExpired, IsALittleExpired, IsSomeExpired); } } --- 3544,3553 ---- if (age > ((DayMax + AMS_ViceQueueLifetime) / 2)) IsSomeExpired = TRUE; } if (TMDebug) fprintf(stderr, ! "Age: %d (%d,%d,%d): IsExpired=%d, IsExtraExpired=%d, IsALittleExpired=%d, IsSomeExpired=%d, IsCrossCellExpired=%d.\n", age, AMS_ViceQueueLifetime, AMS_ExtraViceQueueLifetime + AMS_ViceQueueLifetime, ! RidiculousAge, IsExpired, IsExtraExpired, IsALittleExpired, IsSomeExpired, IsCrossCellExpired); } } *** ams/delivery/trymail/weak.c Mon Aug 6 11:01:01 1990 --- ams/delivery/trymail/weak.c.NEW Fri Dec 14 16:41:20 1990 *************** *** 11,17 **** determinations for ``switchmail'' running on the postoffice machines. \* ************************************************************ */ ! static char rcsid[] = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/ams/delivery/trymail/RCS/weak.c,v 1.9 90/05/01 10:31:54 bobg Exp $"; #include #include --- 11,17 ---- determinations for ``switchmail'' running on the postoffice machines. \* ************************************************************ */ ! static char rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/ams/delivery/trymail/RCS/weak.c,v 1.10 90/12/07 17:52:39 gk5g Exp $"; #include #include *************** *** 27,33 **** --- 27,35 ---- extern int errno; + #ifndef _IBMR2 extern char *malloc(), *realloc(); + #endif /* _IBMR2 */ #include #include *** ams/delivery/trymail/wkstr.h Mon Aug 6 11:01:02 1990 --- ams/delivery/trymail/wkstr.h.NEW Tue Apr 9 19:06:50 1991 *************** *** 35,41 **** extern wp_ErrorCode IDtoName(); extern int CheckAMSDelivery(); extern int TMDebug; ! extern int DoTiming, ReallyDeliver, IsExpired, IsExtraExpired, IsALittleExpired, IsSomeExpired; extern int MinimumFileSize, EnqueueDate, GlobalOptions; #define TMGlobalMinimumSize 2 extern char *AuthString, *GlobalForString, --- 35,41 ---- extern wp_ErrorCode IDtoName(); extern int CheckAMSDelivery(); extern int TMDebug; ! extern int DoTiming, ReallyDeliver, IsExpired, IsExtraExpired, IsALittleExpired, IsSomeExpired, IsCrossCellExpired; extern int MinimumFileSize, EnqueueDate, GlobalOptions; #define TMGlobalMinimumSize 2 extern char *AuthString, *GlobalForString, *** ams/delivery/queuem/queuem.c Fri Dec 21 14:52:47 1990 --- ams/delivery/queuem/queuem.c.NEW Tue Apr 9 17:38:38 1991 *************** *** 95,101 **** */ ! #include #include #include #include --- 95,101 ---- */ ! #include /* sys/file.h sys/time.h strings.h sys/types.h */ #include #include #include *************** *** 104,110 **** #include #include #include - #include /* sys/file.h sys/time.h strings.h sys/types.h */ #include #include #ifdef HAS_SYSEXITS --- 104,109 ---- *************** *** 118,124 **** #ifdef AFS_ENV #include #include - #include #include #include #include --- 117,122 ---- *************** *** 1082,1089 **** char *tokens; int toklen; {/* Set the current AMS home cell from what we found in the packet. Return 0 if OK, non-0 if failure. */ #ifdef AFS_ENV - auto ClearToken ctoken; - auto SecretToken stoken; struct CellAuth *ca; char *Read; auto char StrCellName[MAXCELLCHARS+1]; --- 1080,1085 ---- *************** *** 1091,1097 **** Read = tokens; Remaining = toklen; ! while (GenTokens(&Read, &Remaining, &ctoken, &stoken, &Expd, &VID, StrCellName, &IsPrimary, &IsLocal, 0) > 0) { if (IsPrimary) { ca = NULL; RC = FindCell(StrCellName, &ca); --- 1087,1093 ---- Read = tokens; Remaining = toklen; ! while (GenTokens(&Read, &Remaining, &Expd, &VID, StrCellName, &IsPrimary, &IsLocal, 0) > 0) { if (IsPrimary) { ca = NULL; RC = FindCell(StrCellName, &ca); *** ams/demo/gendemo Wed Nov 22 11:43:32 1989 --- ams/demo/gendemo.NEW Wed Apr 3 21:15:30 1991 *************** *** 56,62 **** --- 56,70 ---- echo $targetdir is not a directory--aborting. exit 1 endif + set Me=`whoami` + if (! $(Me)) then + set Me = `who am i` + if(! $(Me)) then + set Me = $USER + endif + endif + @ i = 1 while (1) if (! -e d$i.heads) break *** atk/Imakefile Thu Jan 10 14:57:40 1991 --- atk/Imakefile.NEW Thu Apr 4 22:34:49 1991 *************** *** 50,55 **** --- 50,56 ---- typescript \ apps \ textobjects \ + hyplink \ raster /* ============================================================ */ #ifdef MK_BLD_BLKS *************** *** 157,162 **** --- 158,165 ---- EQ = eq FAD = fad TABLE = table + LSET = lset + VALUE = value LAYOUT = layout #else /* MK_BASIC_INSETS */ *************** *** 175,180 **** --- 178,197 ---- #ifdef MK_LAYOUT LAYOUT = layout + #ifndef MK_LSET + #define MK_LSET + #endif + #endif + + #ifdef MK_VALUE + VALUE = value + #endif + + #ifdef MK_LSET + LSET = lset + #ifndef MK_VALUE + #define MK_VALUE + #endif #endif #endif /* MK_BASIC_INSETS */ *************** *** 223,230 **** /* ============================================================ */ #ifdef MK_AUTHORING - VALUE = value LSET = lset CONTROLLERS = controllers MUSIC = music NESS = ness --- 240,247 ---- /* ============================================================ */ #ifdef MK_AUTHORING LSET = lset + LAYOUT = layout CONTROLLERS = controllers MUSIC = music NESS = ness *************** *** 256,261 **** --- 273,287 ---- #endif #endif + #ifdef MK_LAYOUT + #ifndef MK_LSET + #define MK_LSET + #endif + #ifndef MK_VALUE + #define MK_VALUE + #endif + #endif + #ifdef MK_VALUE VALUE = value #endif *************** *** 337,344 **** $(HELP) \ $(CTEXT) \ $(LOOKZ) \ ! $(VALUE) \ ! $(LSET) \ $(LAYOUT) \ $(CONTROLLERS) \ $(MUSIC) \ --- 363,370 ---- $(HELP) \ $(CTEXT) \ $(LOOKZ) \ ! $(VALUE) \ ! $(LSET) \ $(LAYOUT) \ $(CONTROLLERS) \ $(MUSIC) \ *** atk/ajpchg.16.0 Thu May 30 19:30:34 1991 --- atk/ajpchg.16.0.NEW Thu Apr 25 16:12:56 1991 *************** *** 0 **** --- 1,588 ---- + \begindata{text,268885644} + \textdsversion{12} + \template{default} + \define{section + menu:[Title~3,Section~21] + attr:[Justification LeftJustified Point 0] + attr:[Flags Underline Int Set] + attr:[Flags KeepPriorNL Int Set] + attr:[Flags KeepNextNL Int Set] + attr:[FontFace Bold Int Set] + attr:[FontSize PreviousFontSize Point 2]} + \majorheading{Changes by Andrew Palay + + for + + Version 16.0 ofATK + + }\center{(to be released in Patch 9)} + + + \section{Overview} + + + - Tabs (from MIT with some modification) + + - VI support (from Bell Labs) + + - Color Text (from Tpn) + + - Raw mode reading of files + + - Interline/Interparagraph spacing in text + + - ^U handling in im + + - Lookz in a separate window + + - better support for handling ~ in file names + + + \section{basics/common} + + + \subsection{Imakefile} + + Added building of path.ih, path.o and path.do (see below) + + + \subsection{dataobj.c} + + Simple type casts to handle prototyped class files + + + \subsection{filetype.ch/filetype.c} + + Added a way to set attributes that are to be used with an object that already + exists. This was put in to make it possible to edit template files. In this + case the user can force the writing of datastream files by placing the + following line in their init file: + + \example{addfiletype .template text "datastream=yes" "datastream=yes"} + + A new class procedure, AddExistingAttributes, was added to make this possible. + + + Use new path code for the CanonicalizeFileName procedure. In afs this will + now handle ~foo@cellname. + + + \subsection{im.ch/im.c} + + Moved Ctrl U processing out of textview and into im where it belongs. It has + been done in a way that you will be able to bind commands to sequences that + begin with ^U. When this is done ^U will be treated as a prefix if it does + not match one of those commands.. For those people who have bound ^U to + textview-set-argument the new way to get this behavior is to place the + following: + + \example{addkey "" ^U textview} + + into their .atkinit file. This will remove the default ^U bindings in + typescript and frameview. Unfortunately in order to get ^U to work it is hard + coded in im and can not be rebound via a keymap. + + + Added another preference, \bold{ctrlUcmds}, that if set to no will force ^U to + always be treated as a prefix caharacter. This probably should be removed + since with the new binding mechanism encourages the binding of ^U as a + command to handle the case where you want to do something slightly different + than the command will. + + + Forced the resetting of the keystates when the user clicks the mouse in a + window. Currently the key sequence is continued. + + + Added two new methods BumpArg and DisplayArg. BumpArg multiplies the current + argument by 10 and adds anther digit. DisplayArg will force the display of + the current argument. Given that ^U processing is now in im, it is much less + likely that others should be modifying the current argument. (in fact there + are cases where I'm not quite sure it will work). + + + \subsection{init.c} + + Added code to allow the specification of attribuites to be used when a file + with a particular extension already exists. Those attributes are listed + following the default attributes for a new file. + + + Fixed a bug in the modifying of keymap and menus that caused the init + keymaps/menulists to be added multiple times. + + + Fixed ordering of included init keymaps to make sure that subclass keymaps + take precedence over super class keymaps. In the current code the behavior is + close to random. + + + \subsection{observe.c} + + Fixed two bugs during the finalize phase. First one is an almost always + benign off by one error. The other caused problems when an observer removed + itself from another objects observer list when the latter object was being + destroyed. Doing the removal is actually unnecessary but should not cause + incorrect behavior, which it was. + + + \subsection{path.ch/path.c (NEW)} + + A new class that provides a number of methods and class procedures for the + processing of path specifications. This needs to be documented (David should + be able to help with that, since he wrote it). The two most interesting class + procedures are \bold{TruncatePath}, which takes a path and tries to convert + it to ~name/, and \bold{UnfoldFileName}, which takes a file and converts + it to its full fomplete form. Both of these procedure, when running under + AFS, understand or use ~foo@cellname. + + + \section{basics/lib} + + + \subsection{Imakefile} + + Added ../common/path.o to the buidling of libbasics.a + + + \section{support} + + + \subsection{buffer.ch/buffer.c/bufferlist.ch/bufferlist.c} + + Added code for allowing users to edit files in raw mode. Work still has to be + done to allow users to have two buffers, one interpreted and one raw, open on + the same file. It will be difficult to do that in a way that users can edit + either one and it will change in the other, so its not clear that that + functionality should be added. + + + Added a new class procedure in buffer and new method in bufferlist, + \bold{GetUniqueBufferName}, which returns a new buffer name, given a proposed + buffer name. + + + \subsection{style.ch/style.c} + + Added code, with some modifications (from MIT) to handle tab specification in + styles + + + Added code for handling interline and interparagraph spacing. + + + \subsection{stylesht.c} + + Minor modification to file. + + + \section{supportviews} + + + \subsection{matte.c} + + Added code from Bell Labs. It adds in two preferences: + + \leftindent{\bold{ResizeInset} - if TRUE then it allows the user to resize the + inset + + \bold{DrawInsetBorder} - if TRUE then draws a border around the inset + + } + Forces matte to add in a keystate and menulist when its child has the input + focus to allow users to bind commands to matte in their init file. + + + \subsection{strtblv.c} + + Fixed bug where strtblview would not position its elements when its size + changed. + + + \section{text} + + + \subsection{Imakefile} + + Added building of tabs.ih, tabs.o, and tabs.do + + Added building of new textview command files, txtvcmod.o, txtvcmv.o, + txtvcsty.o, txtvcsrch.o and txtvcmsc.o + + + \subsection{drawtxtv.c} + + Added code for handling tabs + + + Added code for interline and interparagraph spacing + + + Added support for color in text (from tpn) + + + Changed the way text handles an embedded object during size negotiation. + Prvieously it forced the inset to be on the same line no matter how little + room there was left. Now if the object does not fit on the current line it + will wrap it to the next one. + + + Added processing of a soft return, a return that ends the current line but + does not statr a new line. It is stored in the object at a '\\r'. + + + Added code (from tpn) for placing a continuation marker at the end of text if + it is currently in a no-wrap style and there is non-visble text after the + right edge. + + + \subsection{smpltext.ch/smpltext.c} + + Added four new methods: + + \leftindent{GetPosForLine(long line) returns long; + + \leftindent{Given a line/paragraph in the object returns the position at the + beginning of that line} + + GetLineForPos(long pos) returns long; + + \leftindent{Given a position in the object returns what line/paragraph that + position is in} + + GetBeginningOfLine(long pos) returns long; + + \leftindent{Returns the position of the beginning of the line/paragraph that + contains pos. If pos points to a new line character then it moves back to the + next line.} + + GetEndOfLine(long pos) returns long; + + \leftindent{Gets the end of the line that contains pos. If pos points to a + new line it just returns that position.}} + + + \subsection{tabs.ch/tabs.c (New)} + + Code (from MIT) that handle tabs. + + + \subsection{text.ch/text.c} + + Added the ability to set how the text object is to be written out. There are + three choices: text_DefaultWrite - the normal way to handle text, + text_NoDataStream - used for raw mode reading and writing of files, + text_DataStream - used to force objects to be written out in datastream + format, used to edit template files. In addition there is another attribute, + datastream, that can be set on text. If it is set to to yes then the object + will always be written out in datastream format. If it is set to no then it + will never be written out in datastream format. + + + Added support for color and tabs in the state vector calculation + + + \subsection{textv.ch/textv.c} + + Changed \bold{CollapseDot} so that it now returns the new dot position + + + Added the method, \bold{DoCopyRegion}, which copies a region to the cut + buffer. + + + Modified method, \bold{PrepareInsertion}, to have a flag indicating whether a + return is being inserted. If it is and it is occuring at the beginning of a + line you do not want to pick up the style of the next paragraph. + + + Fixed a bug in \bold{Visible} method. + + + Fixed \bold{MoveBack} method to handle specification of postion from the top + of the screen. This fixes the bug when you search backward, that the located + text is placed at the top of the screen instead of 1/3 down as in what happens + when you search forward. + + + Added in code for supporting VI mode (from our friends at Bell Labs). Vi + mode can be turned on on a number of ways. You can set the \bold{editor} + preference to "vi" or any of the following environment variables: EDITOR, + EDIT, ED, FCEDIT or VISUAL. It is also possible to dynamically switch between + emacs mode and vi mode on a text view by text view basis. The default binding + is t. + + + Added code for handling of tabs. This includes two new preferences that are + used to adjust from screen sizes to printer sizes. The preferences are + \bold{TabScalingMultiplier} (default of 14) and \bold{TabScalingDivisor} + (default of 12). It would be nice to get rid of these and do the conversion + automatically but I'm not quite sure how. + + + Added code for handling of interline and interparagraph spacing. + + + \subsection{tmac.atk} + + Added another designation , post, for postscript printers (from Bell Labs) + + + \subsection{tpllist.c} + + Added code to force in the gloabl style if it is not currently in the template + fle. This makes it easier for lookz to be able to edit the global style. + + + \subsection{txtstvec.h} + + Changed for new way tabs are handled. + + + \subsection{txttroff.c} + + Added code (from MIT) for handling duplex printing. You can control Duplex + printing either by setting the Duplex environment variable to "yes" or "no" or + by setting the duplex preference. to "yes" or "no" + + + Added code to handle tabs + + + Added code to handle interline/interparagraph spacing + + + Added in an alternate set of mappings to troff fonts (from Bell Labs). Which + table to use is determined at compile time. To use the new table you need to + define TROFF_FONTS_ENV in your site.h file. It would be much better if this + was done via a table driven mechanism. + + + \subsection{txtvcmds.c/txtvcmod.c/txtvcmv.c/txtvcsty.c/txtvcsrch.c/txtvcmsc.c/t\ + xtvcmds.h + + }Split apart txtvcmds into a number of files to make it easier to find things + and shorter to compile when making changes. The routines were grouped + according to their function: + + \leftindent{txtvcmod.c - routines that modify the underlying text object (no + style changes) + + txtvcmv.c - routines that move around the text view + + txtvcsty.c - routines that use styles + + txtvcsrch.c - searching routines (including query/replace) + + txtvcmsc.c - any routines that didn't fit in the above categories.} + + + Added routines and keymaps for VI keybings (code from Bell Labs). + + + Removed the set argument command from textview and also changed the digit + command since it no longer has to take care of ^U processing. + + + Added in command (currently bound to ) that places in a soft + return, a return that ends the current line but does not force a new paragraph + break. + + + \subsection{txtvinfo.h} + + Added support for continuations and interline/interparagraph spacing. + + + Added defines from Bell Labs for character types, used for certain commands + that move around in text. + + + \section{frame} + + + \subsection{frame.ch/frame.c} + + Added two methods: + + \leftindent{FindFrameForBuffer(struct buffer *b) returns struct frame *; + + \leftindent{Given a buffer returns a frame that contains that buffer. If the + buffer is already in the frame it returns that frame.} + + GetFrameInWindowForBuffer(struct buffer *b) returns struct frame *; + + \leftindent{Given a buffer returns a frame that contains that buffer and makes + sure that frame is in a window. }} + + + Changed SetTitle to use the methods provided by path.\leftindent{ + + } + \subsection{framecmd.c} + + Added support for reading uninterpreted files. The command, + frame-visit-file-uninterpreted, is bound by default to ^Xv. + + + Use path code for displaying of filename in list buffers. + + + \subsection{framemsg.c} + + Support for VI mode + + + \section{ez} + + + \subsection{eza.ch/eza.c} + + Added code (from BellLabs) to allow specification (via +num commmand line + argument) to start a file off at a particular line number. + + + Added code (also from BellLabs) to stop ez from core dumping when it can not + create a window. + + + Someone should look at adding code to allow the editing of a file in raw mode + from the command line. + + + \section{typescript} + + + \subsection{fcomp.c} + + Added two new commands: + + \leftindent{fcomp-complete-command-backward + + fcomp-complete-command-forward} + + These allow the user to type a partial command and then have it be completed + using the list of commands already typed. Typically the backward version is + the one that is typically used, with the forward being used when you overshoot + the command you really wanted. These commands have been written so that they + can be used to replace = and ` if there is nothing currently + typesdon the line. In this case these commands just move back and forth + through the history list. + + + \subsection{tscript.ch/tscript.c} + + Changed the way typescript keeps track of previous commands (for -=). It + now keeps a separate log (in a seperate text object - for someone who wants to + write the function that will bring up the list in another window) and no + longer reads the commands from the current buffer. Thus when typescript + decides on its own to clear out part of the text it is maintaining, you can + still move back through all of the commands that you typed. Selecting Clear + from the menu will clear both the text and the command log. + + + Added a new command, typescript-Clear-Text, that will only clear the text of + the typescript and not the command log. It is currently unbound. + + + \section{apps} + + + \subsection{statload.c} + + Added inclusion of path and tabs objects. + + + \section{ctext} + + + \subsection{ctext.tpl} + + Changes for proper handling of tabs given the new tab style mechanism + + + \subsection{ctextv.c} + + changes for VI mode (from Bell Labs) + + + \section{ezprint} + + + \subsection{ezprinta.c} + + Minor type fix + + + \section{extensions} + + + \subsection{dsearch.c} + + Changes for using dsearch package for VI searching. Added two new commands + which are \bold{dynsearch-search-again} and + \bold{dynsearch-search-again-opposite} which continue the search in the same + direction as before or the other direction. + + + \section{lookz} + + + \subsection{Imakefile} + + Added building of tabrulv.ih, tabrulv.o, and tabrulv.do + + + \subsection{lookz.ch/lookz.c} + + Put in code that allows a lookz to be brought up in a separate window. This + required that the lookz data object save the text object that is to be + modified. + + + \subsection{lookz.help} + + Changes from MIT for Tabs. Needs to be reworked for interline/interparagraph + spacing and also being able to bring up a lookz in a seprate window. + + + \subsection{lookzv.ch/lookzv.c} + + Added ability of bringing up lookz in a separate window. The command to do + this is: \bold{lookzview-edit-styles} and can be bound as follows: + + \example{addkey lookzview-edit-styles \\esE textview lookzview inherit} + + + Added support for tabs (from MIT), interline/interparagraph spacing and color + (from tpn). + + + Added support for editing styles that are not on the menus (eg. the global + text style). + + + \subsection{tabrulv.ch/tabrulv.c} + + Used for the display and setting of tabs. + + + + + total: 63 files + + + Things that I'm still looking at before my departure (not in any specific + order and possibly not complete): + + + 1. Null data object/Null view + + 2. Addition to search to pass in a string and have it return a proper RE + quoting appropriate characters. + + 3. Change lookZ to allow for the prompting of values not listed. + + 4. EZ connection via a socket. + + \enddata{text,268885644} *** atk/apps/statload.c Fri Dec 21 14:52:57 1990 --- atk/apps/statload.c.NEW Sun May 5 18:50:47 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/statload.c,v 2.10 90/07/12 13:34:07 ajp Exp Locker: ajp $ */ /* $ACIS:statload.c 1.2$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/statload.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/statload.c,v 2.10 90/07/12 13:34:07 ajp Exp Locker: ajp $"; #endif /* lint */ --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/statload.c,v 2.11 1990/12/14 15:06:55 ajp Exp $ */ /* $ACIS:statload.c 1.2$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/statload.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/statload.c,v 2.11 1990/12/14 15:06:55 ajp Exp $"; #endif /* lint */ *************** *** 48,53 **** --- 48,54 ---- #include #include #include + #include #include #include #include *************** *** 78,83 **** --- 79,85 ---- #include #include #include + #include #ifdef STATICLOADTYPESCRIPT #include *************** *** 119,124 **** --- 121,127 ---- nestedmark_StaticEntry; rectlist_StaticEntry; text_StaticEntry; + tabs_StaticEntry; environment_StaticEntry; tree23int_StaticEntry; stylesheet_StaticEntry; *************** *** 155,158 **** --- 158,162 ---- application_StaticEntry; ezapp_StaticEntry; + path_StaticEntry; } *** atk/apps/Imakefile Wed Sep 26 16:02:07 1990 --- atk/apps/Imakefile.NEW Fri May 17 16:25:17 1991 *************** *** 2,10 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! ! ! ATKLIBS = ${BASEDIR}/lib/atk/libtypescript.a \ ${BASEDIR}/lib/atk/libez.a \ ${BASEDIR}/lib/atk/libframe.a \ ${BASEDIR}/lib/atk/libtext.a \ --- 2,8 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! ATKLIBS = ${BASEDIR}/lib/atk/libtscript.a \ ${BASEDIR}/lib/atk/libez.a \ ${BASEDIR}/lib/atk/libframe.a \ ${BASEDIR}/lib/atk/libtext.a \ *************** *** 13,44 **** ${BASEDIR}/lib/atk/libbasics.a #ifdef RESOLVER_ENV RESOLVER_LIB = $(RESOLVLIB) ! #else ! RESOLVER_LIB = #endif /* RESOLVER_ENV */ #ifdef WM_ENV ! WMLIBS = ${BASEDIR}/lib/libwm.a #endif /* WM_ENV */ #ifdef X11_ENV X11LIBS = ${BASEDIR}/lib/libcmenu.a \ ${XLIBDIR}/libX11.a ! #endif /* X11_ENV */ ! OTHERLIBS = ${WMLIBS} \ ! ${BASEDIR}/lib/libclass.a \ ${BASEDIR}/lib/liberrors.a \ ${UTILLIB} \ $(MALLOCLIB) \ ${X11LIBS} - SYSLIBS = -lm - NormalObjectRule() ! ProgramTarget(runapp, runapp.o statload.o, ${ATKLIBS} ${OTHERLIBS} ${RESOLVER_LIB}, ${SYSLIBS}) InstallProgram(runapp, ${DESTDIR}/bin) --- 11,52 ---- ${BASEDIR}/lib/atk/libbasics.a #ifdef RESOLVER_ENV + #ifdef LIBDL_ENV + RESLIBS = -L${BASEDIR}/lib -lresolv + #else /* LIBDL_ENV */ RESOLVER_LIB = $(RESOLVLIB) ! #endif /* LIBDL_ENV */ #endif /* RESOLVER_ENV */ #ifdef WM_ENV ! WMLIB = ${WMBASEDIR}/lib/libwm.a #endif /* WM_ENV */ + #ifdef _IBMR2 + CLASSLIBS = -L${BASEDIR}/lib -lclass #ifdef X11_ENV + X11LIBS = ${BASEDIR}/lib/libcmenu.a + SYSLIBS = -lm -L$(XLIBDIR) -lX11 + #else /* X11_ENV */ + SYSLIBS = -lm + #endif /* X11_ENV */ + #else /* _IBMR2 */ + CLASSLIB = ${BASEDIR}/lib/libclass.a X11LIBS = ${BASEDIR}/lib/libcmenu.a \ ${XLIBDIR}/libX11.a ! SYSLIBS = -lm ! #endif /* _IBMR2 */ ! OTHERLIBS = ${WMLIB} \ ! ${CLASSLIB} \ ${BASEDIR}/lib/liberrors.a \ ${UTILLIB} \ $(MALLOCLIB) \ ${X11LIBS} NormalObjectRule() ! ProgramTarget(runapp, runapp.o statload.o, ${ATKLIBS} ${OTHERLIBS} ${RESOLVER_LIB}, ${RESLIBS} ${CLASSLIBS} ${SYSLIBS} ${NETLIBS}) InstallProgram(runapp, ${DESTDIR}/bin) *** atk/apps/runapp.c Wed Nov 22 11:44:28 1989 --- atk/apps/runapp.c.NEW Thu Jun 6 17:55:32 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/apps/RCS/runapp.c,v 2.10 89/09/08 11:53:46 tpn Exp $ */ /* $ACIS:runapp.c 1.4$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/apps/RCS/runapp.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/apps/RCS/runapp.c,v 2.10 89/09/08 11:53:46 tpn Exp $"; #endif /* lint */ --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/runapp.c,v 2.15 1991/06/06 20:22:31 gk5g Exp $ */ /* $ACIS:runapp.c 1.4$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/runapp.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apps/RCS/runapp.c,v 2.15 1991/06/06 20:22:31 gk5g Exp $"; #endif /* lint */ *************** *** 24,31 **** extern int errno; - char *rindex(); - #ifndef RUNAPP #define RUNAPP "runapp" #endif /* RUNAPP */ --- 24,29 ---- *************** *** 76,81 **** --- 74,93 ---- boolean staticLoad=TRUE; int exitCode = -1; + #if sys_sun3_41 || sys_sun4_41 + int fd; + + /* + * XXX - force "/dev/zero" to be open as a file descriptor one + * greater than the first available one, as a workaround for a + * 4.1 bug (also present in 4.1.1) in the run-time loader. + * (Fixed in System V Release 4, allegedly.) + */ + fd = open("/dev/zero", O_RDWR); + dup(fd); /* one greater */ + close(fd); + #endif + initClass(); argv[0] = leaf(argv[0]); /* Canonicalize the name of the application so we don't have to worry about it anywhere else... */ *************** *** 96,102 **** prependDir=FALSE; break; case 'd': ! doload_trace=TRUE; break; case 'l': if(*++*argv=='\0') --- 108,117 ---- prependDir=FALSE; break; case 'd': ! /* the hp800 doload supports different ! * levels of debugging ! */ ! doload_trace++; break; case 'l': if(*++*argv=='\0') *** atk/apt/apt/Imakefile Wed Nov 22 11:44:44 1989 --- atk/apt/apt/Imakefile.NEW Wed Apr 10 16:18:32 1991 *************** *** 4,15 **** \* ********************************************************************** */ DOBJS = apt.do aptv.do apts.do IHFILES = apt.ih aptv.ih apts.ih ! OBJS = apt.o aptv.o apts.o FontRule() NSDeclareFont(aptcsr20) NSDeclareFont(apticn20) - NormalObjectRule() NormalATKRule() --- 4,14 ---- \* ********************************************************************** */ DOBJS = apt.do aptv.do apts.do IHFILES = apt.ih aptv.ih apts.ih ! OBJS = apt.o aptv.o apts.o FontRule() NSDeclareFont(aptcsr20) NSDeclareFont(apticn20) NormalObjectRule() NormalATKRule() *** atk/apt/apt/apt.c Mon Aug 6 11:01:22 1990 --- atk/apt/apt/apt.c.NEW Wed May 1 13:00:01 1991 *************** *** 10,19 **** #endif /* ! $Log: apt.c,v $ ! * Revision 1.7 90/04/11 14:10:12 gk5g * Removed initialization of variable debug from apt.h and put it in apt.c:apt__InitializeClass. Create apt__InitializeClass. ! * * Revision 1.6 89/12/12 14:57:47 ghoti * sync with MIT tape * --- 10,19 ---- #endif /* ! $Log: apt.c,v $ ! * Revision 1.7 1990/04/11 14:10:12 gk5g * Removed initialization of variable debug from apt.h and put it in apt.c:apt__InitializeClass. Create apt__InitializeClass. ! * * Revision 1.6 89/12/12 14:57:47 ghoti * sync with MIT tape * *** atk/apt/apt/apt.ch Mon Aug 6 11:01:25 1990 --- atk/apt/apt/apt.ch.NEW Wed May 1 13:00:03 1991 *************** *** 3,17 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apt/apt/RCS/apt.ch,v 1.3 90/04/11 14:11:06 gk5g Exp $ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apt/apt/RCS/apt.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidapt_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apt/apt/RCS/apt.ch,v 1.3 90/04/11 14:11:06 gk5g Exp $"; #endif /* ! $Log: apt.ch,v $ ! Revision 1.3 90/04/11 14:11:06 gk5g Removed initialization of variable debug from apt.h and put it in apt.c:apt__InitializeClass. Create apt__InitializeClass. Revision 1.2 89/05/24 19:44:52 tom --- 3,17 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apt/apt/RCS/apt.ch,v 1.3 1990/04/11 14:11:06 gk5g Exp $ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apt/apt/RCS/apt.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidapt_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/apt/apt/RCS/apt.ch,v 1.3 1990/04/11 14:11:06 gk5g Exp $"; #endif /* ! $Log: apt.ch,v $ ! Revision 1.3 1990/04/11 14:11:06 gk5g Removed initialization of variable debug from apt.h and put it in apt.c:apt__InitializeClass. Create apt__InitializeClass. Revision 1.2 89/05/24 19:44:52 tom *** atk/apt/apt/apt.h Mon Aug 6 11:01:26 1990 --- atk/apt/apt/apt.h.NEW Wed Apr 3 21:15:54 1991 *************** *** 7,12 **** --- 7,15 ---- /* $Log: apt.h,v $ + * Revision 1.5 91/04/03 17:00:34 susan + * added SCO Unix support + * * Revision 1.4 90/04/11 14:11:12 gk5g * Removed initialization of variable debug from apt.h and put it in apt.c:apt__InitializeClass. Create apt__InitializeClass. * *************** *** 56,61 **** --- 59,79 ---- #ifndef DEBUG char debug; #ifdef DB + #ifdef __STDC__ + #define IN( x ) if ( debug ) printf( ">" #x "\n" ); + #define OUT( x ) if ( debug ) printf( "<" #x "\n" ); + #define DEBUG( y ) if ( debug ) printf( " %s\n", #y ); + #define DEBUGc( y ) if ( debug ) printf( " '%c'\n", #y ); + #define DEBUGct( t, y ) if ( debug ) printf( " "#t": '%c'\n", y ); + #define DEBUGs( y ) if ( debug ) printf( " '%s'\n", #y ); + #define DEBUGst( t, y ) if ( debug ) printf( " "#t": '%s'\n", y ); + #define DEBUGd( y ) if ( debug ) printf( " %d\n", y ); + #define DEBUGdt( t, y ) if ( debug ) printf( " "#t": %d\n", y ); + #define DEBUGlt( t, y ) if ( debug ) printf( " "#t": %D\n", y ); + #define DEBUGgt( t, y ) if ( debug ) printf( " "#t": %g\n", y ); + #define DEBUGx( y ) if ( debug ) printf( " %x\n", y ); + #define DEBUGxt( t, y ) if ( debug ) printf( " "#t": %x\n", y ); + #else /* __STDC__ */ #define IN( x ) if ( debug ) printf( ">x\n" ); #define OUT( x ) if ( debug ) printf( "current_item) ! ItemCount() (vector_Count(self->items)) ItemAnchor(item) (item->anchor) ItemDataObject(item) (item->dataobject) ItemViewObject(item) (item->viewobject) --- 138,144 ---- macromethods: CurrentItem() (self->current_item) ! ItemCount() (self->items ? vector_Count(self->items):0) ItemAnchor(item) (item->anchor) ItemDataObject(item) (item->dataobject) ItemViewObject(item) (item->viewobject) *** atk/atkvers/atkvers.num Fri Dec 21 14:53:20 1990 --- atk/atkvers/atkvers.num.NEW Tue May 7 12:31:42 1991 *************** *** 1 **** ! 15.5 --- 1 ---- ! 17.0 *** atk/basics/wm/wim.c Wed Sep 26 16:02:31 1990 --- atk/basics/wm/wim.c.NEW Thu Apr 25 16:13:12 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wim.c,v 1.17 89/10/04 18:48:53 cfe Exp Locker: ajp $ */ /* $ACIS:im.c 1.5$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wim.c,v $ */ #ifndef lint ! char *wm_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wim.c,v 1.17 89/10/04 18:48:53 cfe Exp Locker: ajp $"; #endif /* lint */ /* Put in error messages for handling of keystrokes. --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wim.c,v 1.17 1989/10/04 18:48:53 cfe Exp $ */ /* $ACIS:im.c 1.5$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wim.c,v $ */ #ifndef lint ! char *wm_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wim.c,v 1.17 1989/10/04 18:48:53 cfe Exp $"; #endif /* lint */ /* Put in error messages for handling of keystrokes. *** atk/basics/wm/wgraphic.c Mon Aug 6 11:02:10 1990 --- atk/basics/wm/wgraphic.c.NEW Wed Jan 30 16:33:43 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wgraphic.c,v 1.8 90/05/09 14:20:28 ajp Exp $ */ /* $ACIS:graphic.c 1.6$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wgraphic.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wgraphic.c,v 1.8 90/05/09 14:20:28 ajp Exp $"; #endif /* lint */ #include --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wgraphic.c,v 1.10 91/01/29 12:02:34 dba Exp $ */ /* $ACIS:graphic.c 1.6$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wgraphic.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/wm/RCS/wgraphic.c,v 1.10 91/01/29 12:02:34 dba Exp $"; #endif /* lint */ #include *************** *** 579,584 **** --- 579,590 ---- /* Do the coercion only once */ struct wmgraphic * Tile = (struct wmgraphic *) GTile; + if (Tile == NULL) { + Tile = (self->forePixel == 0) ? + (struct wmgraphic *) wmgraphic_BlackPattern(self) : + (struct wmgraphic *) wmgraphic_WhitePattern(self); + } + ValidateState(self); /* clip the rectangle to avoid a bug in WM - 3 July 1989 */ *************** *** 792,797 **** --- 798,809 ---- struct wmgraphic * self, *Tile; long topX, topY, topWidth, bottomX, bottomY, bottomWidth; { + if (Tile == NULL) { + Tile = (self->forePixel == 0) ? + (struct wmgraphic *) wmgraphic_BlackPattern(self) : + (struct wmgraphic *) wmgraphic_WhitePattern(self); + } + ValidateState(self); wmgraphic_SetWMFillMode(self); *** atk/basics/wm/Imakefile Wed Nov 22 11:46:59 1989 --- atk/basics/wm/Imakefile.NEW Fri May 17 16:25:25 1991 *************** *** 4,9 **** --- 4,11 ---- \* ********************************************************************** */ LOCALINCLUDES = -I../common + WMLIB = ${WMBASEDIR}/lib/libwm.a + COMOBJS = ../common/rect.o ../common/point.o ../common/physical.o OBJS = wws.o mrl.o wim.o wcursor.o wfontd.o wgraphic.o *************** *** 15,21 **** all:: winit.o ! DynamicMultiObject(wws.do, $(OBJS) ${COMOBJS}, ${BASEDIR}/lib/libwm.a, -lm) InstallClassFiles(wws.do, $(IHFILES)) DependTarget() --- 17,23 ---- all:: winit.o ! DynamicMultiObject(wws.do, $(OBJS) ${COMOBJS},${WMLIB} , -lm) InstallClassFiles(wws.do, $(IHFILES)) DependTarget() *** atk/basics/x/xgraphic.c Wed Sep 26 16:02:36 1990 --- atk/basics/x/xgraphic.c.NEW Tue May 7 12:32:02 1991 *************** *** 2,8 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.c,v 1.17 90/08/10 13:14:15 gk5g Exp $ */ /* $ACIS:graphic.c 1.11$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.c,v $ */ --- 2,8 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.c,v 1.19 1991/05/07 14:42:18 tpn Exp $ */ /* $ACIS:graphic.c 1.11$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.c,v $ */ *************** *** 9,15 **** #ifndef LINT ! char xgraphic_rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.c,v 1.17 90/08/10 13:14:15 gk5g Exp $"; #endif /* LINT */ /* graphic.c --- 9,15 ---- #ifndef LINT ! char xgraphic_rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.c,v 1.19 1991/05/07 14:42:18 tpn Exp $"; #endif /* LINT */ /* graphic.c *************** *** 1522,1542 **** (self->displayUsed != xgraphic_XDisplay(EnclosingGraphic)) || (self->screenUsed != ! xgraphic_XScreen(EnclosingGraphic) ) ) { ! /* Yep, we changed, everything you know is wrong! */ ! if (xgraphic_XGC(self)) { ! XFreeGC(xgraphic_XDisplay(self), xgraphic_XGC(self)); ! XFreeGC(xgraphic_XDisplay(self), xgraphic_XFillGC(self)); ! xgraphic_XGC(self) = NULL; ! xgraphic_XFillGC(self) = NULL; ! } ! } ! ! /* Copy over the machine dependent window capability */ ! self->localWindow = xgraphic_XWindow(EnclosingGraphic); ! self->displayUsed = xgraphic_XDisplay(EnclosingGraphic); ! self->screenUsed = xgraphic_XScreen(EnclosingGraphic); self->valid = xgraphic_Valid(EnclosingGraphic); /* And pick up the appropriate gray shades for this display */ --- 1522,1543 ---- (self->displayUsed != xgraphic_XDisplay(EnclosingGraphic)) || (self->screenUsed != ! xgraphic_XScreen(EnclosingGraphic) ) ) { ! /* Yep, we changed, everything you know is wrong! */ ! if (xgraphic_XGC(self)) { ! XFreeGC(xgraphic_XDisplay(self), xgraphic_XGC(self)); ! XFreeGC(xgraphic_XDisplay(self), xgraphic_XFillGC(self)); ! xgraphic_XGC(self) = NULL; ! xgraphic_XFillGC(self) = NULL; ! } ! self->DisplayClass = 0; ! ! /* Copy over the machine dependent window capability */ ! self->localWindow = xgraphic_XWindow(EnclosingGraphic); ! self->displayUsed = xgraphic_XDisplay(EnclosingGraphic); ! self->screenUsed = xgraphic_XScreen(EnclosingGraphic); ! } self->valid = xgraphic_Valid(EnclosingGraphic); /* And pick up the appropriate gray shades for this display */ *************** *** 1844,1852 **** long red, green, blue; { short index; if ( xgraphic_DisplayClass( self ) & graphic_Color ) ! SetFGColor( self, colorName, red, green, blue ); else { index = xgraphic_ApproximateColor( self, colorName, &red, &green, &blue ); --- 1845,1858 ---- long red, green, blue; { short index; + long oldRed, oldGreen, oldBlue; if ( xgraphic_DisplayClass( self ) & graphic_Color ) ! { ! xgraphic_GetForegroundColor( self, NULL, &oldRed, &oldGreen, &oldBlue ); ! if ( colorName || oldRed != red || oldGreen != green || oldBlue != blue ) ! SetFGColor( self, colorName, red, green, blue ); ! } else { index = xgraphic_ApproximateColor( self, colorName, &red, &green, &blue ); *************** *** 1875,1882 **** char *colorName; long red, green, blue; { if ( xgraphic_DisplayClass( self ) & graphic_Color ) ! SetBGColor( self, colorName, red, green, blue ); else { long foreRed, foreGreen, foreBlue; --- 1881,1894 ---- char *colorName; long red, green, blue; { + long oldRed, oldGreen, oldBlue; + if ( xgraphic_DisplayClass( self ) & graphic_Color ) ! { ! xgraphic_GetBackgroundColor( self, NULL, &oldRed, &oldGreen, &oldBlue ); ! if ( colorName || oldRed != red || oldGreen != green || oldBlue != blue ) ! SetBGColor( self, colorName, red, green, blue ); ! } else { long foreRed, foreGreen, foreBlue; *************** *** 2054,2059 **** --- 2066,2072 ---- self->gray_shades = xgraphic_FindGrayBlock(NULL,NULL); self->valid = FALSE; self->lastUpdateRegionIDUsed = 0; + self->DisplayClass = 0; return TRUE; } *************** *** 2070,2089 **** } } ! long xgraphic__DisplayClass( self ) struct xgraphic *self; { ! long class; ! XVisualInfo vTemplate; ! static XVisualInfo *vList = NULL; ! static int matched = 0; ! ! if ( vList == NULL ) ! { ! vTemplate.screen = xgraphic_XScreen( self ); ! vTemplate.depth = DisplayPlanes( xgraphic_XDisplay( self ), xgraphic_XScreen( self )); ! vList = XGetVisualInfo( xgraphic_XDisplay( self ), VisualScreenMask | VisualDepthMask, &vTemplate, &matched ); ! } if ( matched ) { switch ( vList[0].class ) --- 2083,2099 ---- } } ! static long RealDisplayClass( self ) struct xgraphic *self; { ! long class; ! XVisualInfo vTemplate; ! XVisualInfo *vList = NULL; ! int matched = 0; ! ! vTemplate.screen = xgraphic_XScreen( self ); ! vTemplate.depth = DisplayPlanes( xgraphic_XDisplay( self ), xgraphic_XScreen( self )); ! vList = XGetVisualInfo( xgraphic_XDisplay( self ), VisualScreenMask | VisualDepthMask, &vTemplate, &matched ); if ( matched ) { switch ( vList[0].class ) *************** *** 2103,2108 **** --- 2113,2119 ---- class |= graphic_Color; break; case StaticGray: if ( DisplayPlanes( xgraphic_XDisplay( self ), xgraphic_XScreen( self )) == 1 ) class = graphic_Monochrome; + else class = 0l; class |= graphic_StaticGray; break; } *************** *** 2109,2112 **** --- 2120,2130 ---- } else class = graphic_Monochrome | graphic_StaticGray; return class; + } + long xgraphic__DisplayClass( self ) + struct xgraphic *self; + { + if(self->DisplayClass == 0) + self->DisplayClass = RealDisplayClass(self); + return (self->DisplayClass); } *** atk/basics/x/xgraphic.ch Mon Aug 6 11:02:21 1990 --- atk/basics/x/xgraphic.ch.NEW Tue May 7 12:32:05 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.ch,v 1.6 90/05/09 14:17:07 ajp Exp $ */ /* $ACIS:graphic.ch 1.5$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidxgraphic_H = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.ch,v 1.6 90/05/09 14:17:07 ajp Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.ch,v 1.7 1991/05/07 14:42:18 tpn Exp $ */ /* $ACIS:graphic.ch 1.5$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidxgraphic_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xgraphic.ch,v 1.7 1991/05/07 14:42:18 tpn Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ *************** *** 117,120 **** --- 117,121 ---- unsigned long foregroundpixel; /* Pixel value of foreground color. */ unsigned long backgroundpixel; /* Pixel value of background color. */ boolean valid; /* Set to true if we have a valid Xwindow, etc */ + long DisplayClass; }; *** atk/basics/x/xfontd.c Fri Dec 21 14:53:23 1990 --- atk/basics/x/xfontd.c.NEW Fri Mar 29 03:26:22 1991 *************** *** 2,22 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xfontd.c,v 1.12 90/11/07 15:46:47 gk5g Exp $ */ /* $ACIS:fontdesc.c 1.4$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xfontd.c,v $ */ #ifndef lint ! char *xfontd_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xfontd.c,v 1.12 90/11/07 15:46:47 gk5g Exp $"; #endif /* lint */ /* fontdesc.c */ #include /* For MAXPATHLEN. */ #include - #include #include #include --- 2,23 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xfontd.c,v 1.13 90/11/28 14:28:47 susan Exp $ */ /* $ACIS:fontdesc.c 1.4$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xfontd.c,v $ */ #ifndef lint ! char *xfontd_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xfontd.c,v 1.13 90/11/28 14:28:47 susan Exp $"; #endif /* lint */ /* fontdesc.c */ + #include + #include /* For MAXPATHLEN. */ #include #include #include *** atk/basics/x/xim.c Fri Dec 21 14:53:33 1990 --- atk/basics/x/xim.c.NEW Sun May 5 18:51:14 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.c,v 1.44 90/10/23 14:56:30 gk5g Exp $ */ /* $ACIS:im.c 1.6$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.c,v $ */ #ifndef lint ! char *xim_rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.c,v 1.44 90/10/23 14:56:30 gk5g Exp $"; #endif /* lint */ /* Put in error messages for handling of keystrokes. --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.c,v 1.66 1991/05/03 01:39:48 rr2b Exp $ */ /* $ACIS:im.c 1.6$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.c,v $ */ #ifndef lint ! char *xim_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.c,v 1.66 1991/05/03 01:39:48 rr2b Exp $"; #endif /* lint */ /* Put in error messages for handling of keystrokes. *************** *** 34,40 **** --- 34,42 ---- #endif /* defined(PRE_X11R4_ENV) */ #include + #include "menubar.h" + #include #include #define INTERACTION_MANAGER *************** *** 62,71 **** #include - #define STANDARDEVENTMASK \ ExposureMask \ - | StructureNotifyMask \ | KeyPressMask \ | ButtonPressMask \ | ButtonReleaseMask \ --- 64,71 ---- *************** *** 155,160 **** --- 155,163 ---- static int regionDebug = 0; static boolean useBackingStore = TRUE; + static int iconMaxLength = -1; + static int titleMaxLength = -1; + static boolean useProgramNameInTitle = TRUE; /* there is one mouseStatus struct per display it keeps track of the state of the button, *************** *** 220,225 **** --- 223,231 ---- #define xim2screen(AnXIMPtr) (xgraphic_XScreen((struct xgraphic *)((AnXIMPtr)->header.view.drawable))) #define xim2fillgc(AnXIMPtr) (xgraphic_XFillGC((struct xgraphic *)((AnXIMPtr)->header.view.drawable))) + #define TOPLEVELWINDOW(self) ((self)->menubaron?(self)->menuWindow:xim2window(self)) + + #ifdef LWP /* called on iomgr lwp's stack at a safe time*/ static int WakeUpIM(dummy) *************** *** 230,236 **** --- 236,406 ---- } #endif /* LWP */ + static int mystrcmp(x,y) + char **x,**y; + { + return strcmp(*x,*y); + } + + /* Grrrr, this used to be small... + Specification: + Items must be quoted, they can contain ','s, '"'s or + '\'s. '"'s and '\' must be escaped with a '\'. Escaping any other character has no effect. + Items are comma separated. + */ + static char **SetupMenuChoices(menulistname,count) + char *menulistname; + int *count; + { + int maxchoices=8; + char **list=(char **)malloc(sizeof(char *)*maxchoices); + char *pref=environ_GetProfile(menulistname), *p; + char buf[1024]; + boolean lookingforquote=FALSE; + boolean havebackslash=FALSE; + int c=0; + + *count=0; + if(!pref || !list) return NULL; + else { + if(*pref=='\0') return NULL; + if(strlen(pref)>sizeof(buf)-1) { /* punt prefs too large */ + fprintf(stderr,"MenuChoices preference %s is too large.\n",menulistname); + return NULL; + } + } + + p=buf; + while(pref && *pref && p-buf=0 && list[c]) free(list[c]); + free(list); + return NULL; + } + strcpy(list[c],buf); + c++; + if(c>=maxchoices) { /* too many choices? then make more room */ + maxchoices*=2; + list=(char **)realloc(list, sizeof(char *)*maxchoices); + if(!list) { + while(--c>=0 && list[c]) free(list[c]); + free(list); + return NULL; + } + } + p=buf; + pref=index(pref,','); /* skip to the comma ending this item */ + lookingforquote=FALSE; + } + } else p++; + break; + case '\\': + if(!havebackslash) newbackslash=TRUE; /* if we didn't have a backslash before now we will */ + else p++; /* just keep the escaped backslash */ + break; + default: + p++; /* just keep any other characters */ + } + if(pref && *pref) pref++; /* if we're not at the end of the preference string skip the character we just processed */ + havebackslash=newbackslash; + } + *count=c; + qsort(list, c, sizeof(char *), mystrcmp); /* sort the list for "quick" lookup */ + return list; + } + + static void FreeMenuChoices(list,count) + char **list; + int count; + { + while(--count>0) free(list[count]); + free(list); + } + + static int CheckMenuChoice(list,count,choice) + char **list; + int count; + char *choice; + { + int top=0, bot=count-1; + int cmp; + + if(count==0) return TRUE; + + while(bot!=top) { + cmp=strcmp(list[(top+bot)/2], choice); + if(!cmp) return (top+bot)/2; + if(cmp>0) bot=(top+bot-1)/2; + else top=(top+bot+1)/2; + } + if(!strcmp(list[top], choice)) return top; + else return -1; + } + + struct cardorder { + char **list; + int count; + int priorities[1]; + }; + + static struct cardorder *SetupCardOrder(prefname) + char *prefname; + { + int count,i; + int curprio=10; + int priostep=environ_GetProfileInt("PriorityStep",5); + char **list=SetupMenuChoices(prefname, &count); + struct cardorder *result=(struct cardorder *)malloc(sizeof(struct cardorder)+(count-1)*sizeof(int)); + if(!result) { + if(list) FreeMenuChoices(list, count); + return NULL; + } + if(!list) { + free(result); + return NULL; + } + result->count=count; + result->list=list; + for(i=0;ipriorities[i]=curprio; + } + return result; + } + + static int GetCardPriority(co, card, def) + struct cardorder *co; + char *card; + int def; + { + int i=CheckMenuChoice(co->list, co->count, card); + if(i<0) return def; + else return co->priorities[i]; + } + static void FreeCardOrder(co) + struct cardorder *co; + { + FreeMenuChoices(co->list, co->count); + free(co); + } /* Place andrew fonts at the front of the font list */ void xim__AddAndrewFontPath(classID,DisplayPtr) *************** *** 237,243 **** struct classheader *classID; Display * DisplayPtr; /* display for font path */ { ! char fontPath[256]; /* Place where new fnot path will be built */ char *andrewDir; /* Returned value of ANDREWDIR */ char **fontPathList; /* Return list of directories */ int numPaths; /* Number of returned directories */ --- 407,413 ---- struct classheader *classID; Display * DisplayPtr; /* display for font path */ { ! char fontPath[256]; /* Place where new font path will be built */ char *andrewDir; /* Returned value of ANDREWDIR */ char **fontPathList; /* Return list of directories */ int numPaths; /* Number of returned directories */ *************** *** 283,344 **** static void SetWMProperties(self, nameChanged) ! struct xim *self; ! boolean nameChanged; { - Display *display = xim2display(self); ! Window window = xim2window(self); ! char WMName[200]; ! int lengthName; ! int lengthTitle; char *name = im_GetProgramName(); char *title = xim_GetTitle(self); ! XWMHints wmhints; ! ! if (nameChanged) { ! ! XClassHint programClass; ! ! programClass.res_name = programClass.res_class = name; ! XSetClassHint(display, window, &programClass); } ! if (name != NULL) ! lengthName = strlen(name); ! else ! lengthName = 0; ! if (title != NULL) ! lengthTitle = strlen(title); ! else ! lengthTitle = 0; ! if (lengthName >= sizeof(WMName)) ! lengthName = sizeof(WMName) - 1; bcopy(name, WMName, lengthName); ! ! if (lengthName > 0 && lengthName < sizeof(WMName) - 1) ! WMName[lengthName++] = ' '; ! ! if (lengthTitle + lengthName >= sizeof(WMName)) ! lengthTitle = sizeof(WMName) - lengthName - 1; ! bcopy(title, WMName + lengthName, lengthTitle); ! WMName[lengthName + lengthTitle] = '\0'; ! ! XStoreName(display, window, WMName); ! WMName[100] = '\0'; ! XSetIconName(display, window, WMName); ! ! wmhints.flags = StateHint | InputHint; /* try to make expose work -wjh */ ! wmhints.input = TRUE; ! wmhints.initial_state = NormalState; ! XSetWMHints(display, window, &wmhints); ! gethostname(WMName, sizeof(WMName)); XChangeProperty(display, window, XA_WM_CLIENT_MACHINE, XA_STRING, ! 8, PropModeReplace, (unsigned char *)WMName, strlen(WMName)); } static int FirstTimeThrough = TRUE; --- 453,532 ---- static void SetWMProperties(self, nameChanged) ! struct xim *self; ! boolean nameChanged; { Display *display = xim2display(self); ! Window window = TOPLEVELWINDOW(self); ! char *WMName, *iconName, host[500]; ! int lengthName = 0; ! int lengthTitle = 0; ! int lengthWMName; char *name = im_GetProgramName(); char *title = xim_GetTitle(self); ! int clen = 0; ! char *c = NULL; ! XWMHints *wmhints, *hints, myhints; ! ! if(nameChanged) { ! XClassHint programClass; ! ! programClass.res_name = name; ! programClass.res_class = "atk"; ! XSetClassHint(display, window, &programClass); } ! if(useProgramNameInTitle && name) ! lengthName = strlen(name); ! if(c = title) { ! clen = lengthTitle = strlen(c); ! if(titleMaxLength > 0 && lengthTitle > titleMaxLength) { ! c = title + lengthTitle - titleMaxLength; ! clen = titleMaxLength; ! *c = '.'; *(c+1) = '.'; ! } ! } ! if((WMName = (char*)malloc(lengthName + clen + 2)) == NULL) ! return; bcopy(name, WMName, lengthName); ! WMName[lengthName] = ' '; ! if(c) ! bcopy(c, WMName + lengthName + 1, clen); ! WMName[lengthWMName = lengthName + 1 + clen] = (char) 0; ! ! XStoreName(display, window, useProgramNameInTitle ? WMName : WMName + lengthName + 1); ! ! if(iconMaxLength > 0 && clen > iconMaxLength) { ! c = WMName + lengthWMName - iconMaxLength; ! clen = strlen(c); ! *c = '.'; *(c+1) = '.'; ! bcopy(c, WMName + lengthName + 1, clen); ! WMName[lengthName + 1 + clen] = (char) 0; ! iconName = WMName; ! } ! else iconName = WMName; ! XSetIconName(display, window, iconName); ! free(WMName); ! ! if((wmhints = XGetWMHints (display, window)) == NULL) { ! hints = &myhints; ! hints->flags = 0; ! } ! else hints = wmhints; ! hints->flags |= StateHint; /* try to make expose work -wjh */ ! hints->initial_state = NormalState; ! hints->flags |= InputHint; ! hints->input = TRUE; ! XSetWMHints(display, window, hints); ! if(wmhints) ! XFree((char*) wmhints); ! gethostname(host, sizeof(host)); XChangeProperty(display, window, XA_WM_CLIENT_MACHINE, XA_STRING, ! 8, PropModeReplace, (unsigned char*)host, strlen(host)); } static int FirstTimeThrough = TRUE; *************** *** 439,445 **** --- 627,1081 ---- } } + void HandleExposeFromMenubar(); + + static void SetupXServer(self, xhost) + struct xim *self; + char *xhost; + { + int i, Xfileno; + struct mouseStatus *tmouse; + + Xfileno = ConnectionNumber(xim2display(self)); + + /* Have we got a new display? If so, then set up display specific state appropriately */ + for (i = 0; i < xWindowCtr; i++) { + if (windowList[i].display == xim2display(self)) { + break; + } + } + if (i == xWindowCtr) { + + static struct keybinding { + KeySym key; + char *binding; + } keybindings[] = { XK_Home, "\033H", /* esc H */ + XK_Left, "\033D", /* esc D */ + XK_Up, "\033A", /* esc A */ + XK_Right, "\033C", /* esc C */ + XK_Down, "\033B", /* esc B */ + XK_Prior, "\033G", /* esc G */ + XK_Next, "\033E", /* esc E */ + XK_End, "\033F", /* esc F */ + XK_Begin, "\001", /* control A */ + #if 0 + XK_Insert, "\033", /* esc */ + XK_Delete, "\004", /* control D */ + #endif /* 0 */ + + /* give unique mappings to every key - CCH */ + /* mind you, these are damn non-standard + they should be ESC-digit-digit-digit-letter -wjh */ + XK_F1, "\033S", /* esc S */ + XK_F2, "\033T", /* esc T */ + XK_F3, "\033U", /* esc U */ + XK_F4, "\033V", /* esc V */ + XK_F5, "\033W", /* esc W */ + XK_F6, "\033P", /* esc P */ + XK_F7, "\033Q", /* esc Q */ + XK_F8, "\033R", /* esc R */ + XK_F9, "\033Y", /* esc Y */ + XK_F10, "\033<", /* esc < */ + XK_F11, "\033[", /* esc [ */ + XK_F12, "\033,", /* esc , */ + + XK_L1, "\033E", /* esc E */ + XK_L2, "\033F", /* esc F */ + XK_L3, "\033G", /* esc G */ + XK_L4, "\033H", /* esc H */ + XK_L5, "\033I", /* esc I */ + XK_L6, "\033J", /* esc J */ + XK_L7, "\033K", /* esc K */ + XK_L8, "\033L", /* esc L */ + XK_L9, "\033M", /* esc M */ + XK_L10, "\033N", /* esc N */ + + XK_R1, "\033O", /* esc O */ + XK_R2, "\033X", /* esc X */ + XK_R3, "\033Z", /* esc Z */ + XK_R4, "\033-", /* esc - */ + XK_R5, "\033=", /* esc = */ + XK_R6, "\033+", /* esc + */ + XK_R7, "\033/", /* esc / */ + XK_R8, "\033A", /* esc A */ + XK_R9, "\033*", /* esc * */ + XK_R10, "\033D", /* esc D */ + XK_R11, "\033&", /* esc & */ + XK_R12, "\033C", /* esc C */ + XK_R13, "\033:", /* esc : */ + XK_R14, "\033B", /* esc B */ + XK_R15, "\033;", /* esc ; */ + + #ifdef notdef + /* the old stuff mapped multiple keys to same code */ + XK_F1, "\033S", /* esc S */ + XK_L1, "\033S", /* esc S */ + XK_R1, "\033S", /* esc S */ + XK_F2, "\033T", /* esc T */ + XK_L2, "\033T", /* esc T */ + XK_R2, "\033T", /* esc T */ + XK_F3, "\033U", /* esc U */ + XK_L3, "\033U", /* esc U */ + XK_R3, "\033U", /* esc U */ + XK_F4, "\033V", /* esc V */ + XK_L4, "\033V", /* esc V */ + XK_R4, "\033V", /* esc V */ + XK_F5, "\033W", /* esc W */ + XK_L5, "\033W", /* esc W */ + XK_R5, "\033W", /* esc W */ + XK_F6, "\033P", /* esc P */ + XK_L6, "\033P", /* esc P */ + XK_R6, "\033P", /* esc P */ + XK_F7, "\033Q", /* esc Q */ + XK_L7, "\033Q", /* esc Q */ + XK_R7, "\033Q", /* esc Q */ + XK_F8, "\033R", /* esc R */ + XK_L8, "\033R", /* esc R */ + XK_R8, "\033R", /* esc R */ + XK_F9, "\033Y", /* esc Y */ + XK_L9, "\033Y", /* esc Y */ + XK_R9, "\033Y", /* esc Y */ + XK_F10, "\033<", /* esc < */ + XK_L10, "\033<", /* esc < */ + XK_R10, "\033<", /* esc < */ + XK_F11, "\033[", /* esc [ */ + XK_R11, "\033[", /* esc [ */ + XK_F12, "\033,", /* esc , */ + XK_R12, "\033,", /* esc , */ + #endif /* notdef */ + + }; + struct keybinding *thisBinding; + + /* New display (might) require a new font path */ + xim_AddAndrewFontPath(xim2display(self)); + + for (thisBinding = keybindings; + thisBinding < keybindings + sizeof(keybindings) / sizeof(struct keybinding); + thisBinding++) + XRebindKeysym(xim2display(self), thisBinding->key, NULL, 0, (unsigned char *)thisBinding->binding, 2); + + /* New display, so see if someone has bothered to define the cut buffers yet! */ + if (xim_ATK == NULL) { + xim_ATK = XInternAtom(xim2display(self), "ATK", FALSE); + xim_INCOMING = XInternAtom(xim2display(self), "INCOMING", FALSE); + xim_TARGETS = XInternAtom(xim2display(self), "TARGETS", FALSE); + xim_TIMESTAMP = XInternAtom(xim2display(self), "TIMESTAMP", FALSE); + xim_MULTIPLE = XInternAtom(xim2display(self), "MULTIPLE", FALSE); + xim_TEXT = XInternAtom(xim2display(self), "TEXT", FALSE); + xim_INCR = XInternAtom(xim2display(self), "INCR", FALSE); + xim_CLIPBOARD = XInternAtom(xim2display(self), "CLIPBOARD", FALSE); + xim_LENGTH = XInternAtom(xim2display(self), "LENGTH", FALSE); + } + for (i=0;i<8;i++) { + Atom RetAtom; + int RetFormat; + unsigned long RetNumItems; + unsigned long RetBytesAfter; + unsigned char * RetData = NULL; + static Atom n_to_atom[8] = { + XA_CUT_BUFFER0, + XA_CUT_BUFFER1, + XA_CUT_BUFFER2, + XA_CUT_BUFFER3, + XA_CUT_BUFFER4, + XA_CUT_BUFFER5, + XA_CUT_BUFFER6, + XA_CUT_BUFFER7}; + + (void) XGetWindowProperty(xim2display(self), RootWindow(xim2display(self), DefaultScreen(xim2display(self))), + n_to_atom[i], 0L, 0L, False, + /* I'll take any kind of cut buffer!*/ AnyPropertyType, + &RetAtom, &RetFormat, &RetNumItems, &RetBytesAfter, &RetData); + if (RetAtom == None) + XStoreBuffer(xim2display(self), (char *)&RetNumItems, 0, i); + if (RetData) XFree(RetData); + } + + /* set up the mouseStatus structure for the new display */ + tmouse = (struct mouseStatus *)malloc(sizeof(struct mouseStatus)); + tmouse->next = Mice; + tmouse->display = xim2display(self); + tmouse->lasttime = CurrentTime; + tmouse->state = msAllUp; + Mice = tmouse; + self->MouseFacts = tmouse; + } + else { + /* find the proper entry in Mice for this display and set self->MouseFacts */ + for (tmouse = Mice; + tmouse->display != xim2display(self); + tmouse = tmouse->next) + {} + self->MouseFacts = tmouse; + } + + /* See if have a new file descriptor to select on */ + for (i = 0; i < xWindowCtr; i++) { + if (windowList[i].Xfileno == Xfileno) { + windowList[i].count += 1; + break; + } + } + if (i == xWindowCtr) { + if (numberOfWindowFiles == 0) { + numberOfWindowFiles = 2; + windowList = (struct xwindowfiles *) malloc(2 * sizeof(struct xwindowfiles)); + } + else if (xWindowCtr == numberOfWindowFiles) { + numberOfWindowFiles *= 2; + windowList = (struct xwindowfiles *)realloc(windowList, numberOfWindowFiles * sizeof(struct xwindowfiles)); + } + windowList[i].Xfileno = Xfileno; + windowList[i].count = 1; + windowList[i].display = xim2display(self); + windowList[i].host = xhost; + xWindowCtr += 1; + self->Xfileno = Xfileno; + } + + } + + static void DoGeometry(self, left, top,sizehintsp, zoomhintsp) + struct xim *self; + int *top, *left; + XSizeHints **sizehintsp, **zoomhintsp; + { + static char *PriorSpec = NULL; + boolean GeometrySize, GeometryPosition; + static XSizeHints sizehints, zoomhints; + + GeometrySize = FALSE; + GeometryPosition = FALSE; + *sizehintsp=NULL; + *zoomhintsp=NULL; + if (geometrySpec != NULL) { + int mask, x, y;unsigned int width, height; + mask = XParseGeometry(geometrySpec, &x, &y, &width, &height); + if (mask & (XValue | YValue)) { + GeometryPosition = TRUE; + if (mask & XValue) + preferedLeft = (mask & XNegative) ? x - 1 : x; + if (mask & YValue) + preferedTop = (mask & YNegative) ? y - 1 : y; + } + if (mask & (WidthValue | HeightValue)) { + GeometrySize = TRUE; + if (mask & WidthValue) + preferedWidth = width; + if (mask & HeightValue) + preferedHeight = height; + } + } + + if (preferedWidth<=0) { + errprintf(im_GetProgramName(),ERR_WARNING,0,0, + "window of width %d requested for %X; using 91 instead", + preferedWidth, self); + preferedWidth = 91; + } + if (preferedHeight<=0) { + errprintf(im_GetProgramName(),ERR_WARNING,0,0, + "window of height %d requested for %X; using 20 instead", + preferedHeight, self); + preferedHeight = 20; + } + if (preferedLeft < 0) + *left = DisplayWidth(xim2display(self), DefaultScreen(xim2display(self))) + preferedLeft - preferedWidth; + else + *left = preferedLeft; + if (preferedTop < 0) + *top = DisplayHeight(xim2display(self), DefaultScreen(xim2display(self))) + preferedTop - preferedHeight; + else + *top = preferedTop; + + if (PriorSpec != NULL && PriorSpec == geometrySpec) { /* (compare addresses) */ + /* another window for same specification. + Use increments, if any. + Otherwise use PPosition to try to get rubberbanding. + */ + CurrTopIncr += TopIncrement; + CurrLeftIncr += LeftIncrement; + *left += CurrLeftIncr; + *top += CurrTopIncr; + if (TopIncrement == 0 && LeftIncrement == 0) { + /* if the window would appear at the same place, + we try to get rubberbanding of position */ + GeometryPosition = FALSE; + *top = 0; *left = 0; /* these cause twm (R3) to rubberband */ + } + } + else { + /* new specification. use it. */ + CurrTopIncr = 0; + CurrLeftIncr = 0; + PriorSpec = geometrySpec; + } + + /* set size hints + ASSUMPTION: if dimensions were set with im_SetDimensions + it was done by the program + but if set with im_SetGeometrySpec it was by the user + The latest ICCCM says that the x,y,width,height values in the hints are ignored, + but twm still uses them as of June, 1989. + */ + if (setDimensions || GeometrySize || GeometryPosition) { + sizehints.flags = PMinSize | PMaxSize + | ((GeometrySize) ? USSize : (setDimensions) ? PSize : 0) + | ((GeometryPosition) ? USPosition : (setDimensions) ? PPosition : 0); + sizehints.x = *left; + sizehints.y = *top; + sizehints.width = preferedWidth; + sizehints.height = preferedHeight; + sizehints.min_width = (preferedWidth < 91) ? preferedWidth : 91; + sizehints.min_height = (preferedHeight < 20) ? preferedHeight : 20; + sizehints.max_width = DisplayWidth(xim2display(self), DefaultScreen(xim2display(self))); + sizehints.max_height = DisplayHeight(xim2display(self), DefaultScreen(xim2display(self))); + *sizehintsp=(&sizehints); + } + else {} /* no size hints if none set */ + + zoomhints.flags = (PSize | PPosition | PMinSize | PMaxSize); + zoomhints.x = 6; + zoomhints.y = 6; + zoomhints.width = DisplayWidth(xim2display(self), DefaultScreen(xim2display(self))) - 12; + zoomhints.height = DisplayHeight(xim2display(self), DefaultScreen(xim2display(self))) - 12; + zoomhints.min_width = preferedWidth; + zoomhints.min_height = preferedHeight; + zoomhints.max_width = DisplayWidth(xim2display(self), DefaultScreen(xim2display(self))); + zoomhints.max_height = DisplayHeight(xim2display(self), DefaultScreen(xim2display(self))); + *zoomhintsp=(&zoomhints); + } + + static void DoTransientGeometry(self, override, oWindow, left, top, width, height, sizehintsp, zoomhintsp) + struct xim *self; + boolean override; + Window oWindow; + int *top, *left, *width, *height; + XSizeHints **sizehintsp, **zoomhintsp; + { + Display *xDisplay=xim2display(self); + Window discardWindow; + int ox, oy; + unsigned int owidth, oheight, obwidth, odepth; + static XSizeHints sizehints, zoomhints; + *sizehintsp=NULL; + *zoomhintsp=NULL; + + XGetGeometry (xDisplay, oWindow, &discardWindow, &ox, &oy, &owidth, &oheight, &obwidth, &odepth); + + #ifdef TRANSIENTUSEGEOMETRYSPEC + if (geometrySpec != NULL) { + int mask, x, y;unsigned int gwidth, gheight; + mask = XParseGeometry(geometrySpec, &x, &y, &gwidth, &gheight); + if (mask & (XValue | YValue)) { + GeometryPosition = TRUE; + if (mask & XValue) + preferedLeft = (mask & XNegative) ? x - 1 : x; + if (mask & YValue) + preferedTop = (mask & YNegative) ? y - 1 : y; + } + if (mask & (WidthValue | HeightValue)) { + GeometrySize = TRUE; + if (mask & WidthValue) + preferedWidth = gwidth; + if (mask & HeightValue) + preferedHeight = gheight; + } + } + #endif /* TRANSIENTUSEGEOMETRYSPEC */ + + /* Tricky part: the other window may be a child of a window manager + decorated window. So we ignore x and y from XGetGeometry + and use XTranslateCoordinates to get it's location. */ + + if (override) { /* overrides are relative to parent */ + ox = 0; + oy = 0; + } else + XTranslateCoordinates(xDisplay, oWindow, RootWindow(xDisplay, DefaultScreen(xDisplay)), 0, 0, &ox, &oy, &discardWindow); + + if (preferedWidth <= 0) { + *width = owidth / 2; + errprintf(im_GetProgramName(),ERR_WARNING,0,0, + "window of width %d requested for %X; using %d instead", + preferedWidth, self, *width); + } else *width = preferedWidth; + + if (preferedHeight <= 0) { + *height = oheight / 4; + errprintf(im_GetProgramName(),ERR_WARNING,0,0, + "window of height %d requested for %X; using %d instead", + preferedHeight, self, *height); + } else *height = preferedHeight; + + if (preferedLeft == 0) *left = ox + ((owidth / 2) - (*width / 2)); + else *left = ox + preferedLeft; + + if (preferedTop == 0) *top = oy + ((oheight / 2) - (*height / 2)); + else *top = oy + preferedTop; + + if (*left < 0) + *left = DisplayWidth(xDisplay, DefaultScreen(xDisplay)) + *left - *width; + if (*top < 0) + *top = DisplayHeight(xDisplay, DefaultScreen(xDisplay)) + *top - *height; + + /* set size hints + ASSUMPTION: if dimensions were set with im_SetDimensions + it was done by the program + but if set with im_SetGeometrySpec it was by the user + The latest ICCCM says that the x,y,width,height values in the hints are ignored, + but twm still uses them as of June, 1989. + */ + sizehints.flags = PMinSize | PMaxSize | USSize | PSize | USPosition | PPosition; + sizehints.x = *left; + sizehints.y = *top; + sizehints.width = *width; + sizehints.height = *height; + sizehints.min_width = *width; + sizehints.min_height = *height; + sizehints.max_width = DisplayWidth(xDisplay, DefaultScreen(xDisplay)); + sizehints.max_height = DisplayHeight(xDisplay, DefaultScreen(xDisplay)); + *sizehintsp=(&sizehints); + + zoomhints.flags = (PSize | PPosition | PMinSize | PMaxSize); + zoomhints.x = 6; + zoomhints.y = 6; + zoomhints.width = DisplayWidth(xDisplay, DefaultScreen(xDisplay)) - 12; + zoomhints.height = DisplayHeight(xDisplay, DefaultScreen(xDisplay)) - 12; + zoomhints.min_width = preferedWidth; + zoomhints.min_height = preferedHeight; + zoomhints.max_width = DisplayWidth(xDisplay, DefaultScreen(xDisplay)); + zoomhints.max_height = DisplayHeight(xDisplay, DefaultScreen(xDisplay)); + *zoomhintsp=(&zoomhints); + } + + static void SetForegroundBackground(self, foregroundColor, backgroundColor, foreground, background) + struct xim *self; + char **foregroundColor, **backgroundColor; + XColor *foreground, *background; + { + XColor exact; + long status; + graphic_GetDefaultColors(foregroundColor, backgroundColor); + if (foregroundColor != NULL) { + status = XAllocNamedColor(xim2display(self), DefaultColormap(xim2display(self), DefaultScreen(xim2display(self))), *foregroundColor, foreground, &exact); + if (!status) { + foreground->pixel=BlackPixel(xim2display(self), DefaultScreen(xim2display(self))); + foreground->red=foreground->green=foreground->blue=0; + } + } + self->backgroundPixel = WhitePixel(xim2display(self), DefaultScreen(xim2display(self))); + if (backgroundColor != NULL) { + status = XAllocNamedColor(xim2display(self), DefaultColormap(xim2display(self), DefaultScreen(xim2display(self))), *backgroundColor, background, &exact); + if (!status) { + background->pixel=WhitePixel(xim2display(self), DefaultScreen(xim2display(self))); + background->red=background->green=background->blue=65535; + } + self->backgroundPixel = background->pixel; + } + } boolean xim__CreateWindow(self, host) struct xim *self; *************** *** 446,464 **** char *host; { Display *xDisplay; ! Window newWindow; int i; - int Xfileno; char * xhost = host; static int doSynch = 0; XSetWindowAttributes windowAttributes; - struct mouseStatus *tmouse; ! XSizeHints xsh; int left, top; ! boolean GeometrySize, GeometryPosition; ! static char *PriorSpec = NULL; /* see if we have installed the error handler yet and performed special mappings */ if (FirstTimeThrough) { FirstTimeThrough = FALSE; --- 1082,1101 ---- char *host; { Display *xDisplay; ! Window newWindow, menuWindow; int i; char * xhost = host; static int doSynch = 0; XSetWindowAttributes windowAttributes; ! XSizeHints *sizehints, *zoomhints; int left, top; ! ! char *foregroundColor; ! char *backgroundColor; ! XColor foreground, background; + /* see if we have installed the error handler yet and performed special mappings */ if (FirstTimeThrough) { FirstTimeThrough = FALSE; *************** *** 507,596 **** xim_EstablishConsole(xhost); (void) XSynchronize(xDisplay,doSynch); - - - - GeometrySize = FALSE; - GeometryPosition = FALSE; - if (geometrySpec != NULL) { - int mask, x, y;unsigned int width, height; - mask = XParseGeometry(geometrySpec, &x, &y, &width, &height); - if (mask & (XValue | YValue)) { - GeometryPosition = TRUE; - if (mask & XValue) - preferedLeft = (mask & XNegative) ? x - 1 : x; - if (mask & YValue) - preferedTop = (mask & YNegative) ? y - 1 : y; - } - if (mask & (WidthValue | HeightValue)) { - GeometrySize = TRUE; - if (mask & WidthValue) - preferedWidth = width; - if (mask & HeightValue) - preferedHeight = height; - } - } - - if (preferedWidth<=0) { - errprintf(im_GetProgramName(),ERR_WARNING,0,0, - "window of width %d requested for %X; using 91 instead", - preferedWidth, self); - preferedWidth = 91; - } - if (preferedHeight<=0) { - errprintf(im_GetProgramName(),ERR_WARNING,0,0, - "window of height %d requested for %X; using 20 instead", - preferedHeight, self); - preferedHeight = 20; - } - if (preferedLeft < 0) - left = DisplayWidth(xDisplay, DefaultScreen(xDisplay)) + preferedLeft - preferedWidth; - else - left = preferedLeft; - if (preferedTop < 0) - top = DisplayHeight(xDisplay, DefaultScreen(xDisplay)) + preferedTop - preferedHeight; - else - top = preferedTop; - - if (PriorSpec != NULL && PriorSpec == geometrySpec) { /* (compare addresses) */ - /* another window for same specification. - Use increments, if any. - Otherwise use PPosition to try to get rubberbanding. - */ - CurrTopIncr += TopIncrement; - CurrLeftIncr += LeftIncrement; - left += CurrLeftIncr; - top += CurrTopIncr; - if (TopIncrement == 0 && LeftIncrement == 0) { - /* if the window would appear at the same place, - we try to get rubberbanding of position */ - GeometryPosition = FALSE; - top = 0; left = 0; /* these cause twm (R3) to rubberband */ - } - } - else { - /* new specification. use it. */ - CurrTopIncr = 0; - CurrLeftIncr = 0; - PriorSpec = geometrySpec; - } - - newWindow = XCreateSimpleWindow(xDisplay, - RootWindow(xDisplay, DefaultScreen(xDisplay)), - left, top, preferedWidth, preferedHeight, - /* border width if no window manager present: */ - 2, - BlackPixel(xDisplay, DefaultScreen(xDisplay)), - WhitePixel(xDisplay, DefaultScreen(xDisplay))); - /* (This really should be a fake "insertgraphic" into its own graphic to guarantee that all graphic state exists alike for all views.) */ - xim2window(self)= newWindow; xim2display(self) = xDisplay; xim2screen(self) = DefaultScreen(xDisplay); xim2valid(self) = TRUE; if (useBackingStore) { windowAttributes.backing_store = WhenMapped; XChangeWindowAttributes(xDisplay, newWindow, CWBackingStore, &windowAttributes); --- 1144,1193 ---- xim_EstablishConsole(xhost); (void) XSynchronize(xDisplay,doSynch); /* (This really should be a fake "insertgraphic" into its own graphic to guarantee that all graphic state exists alike for all views.) */ xim2display(self) = xDisplay; xim2screen(self) = DefaultScreen(xDisplay); xim2valid(self) = TRUE; + SetupXServer(self,xhost); + + DoGeometry(self, &left, &top, &sizehints, &zoomhints); + + SetForegroundBackground(self, &foregroundColor, &backgroundColor, &foreground, &background); + + if(self->menubaron) { + self->mbi=mb_Init(xDisplay, &foreground, &background, HandleExposeFromMenubar, self); + + if(self->mbi==NULL) { + self->menubaron=FALSE; + self->cmenuson=TRUE; + } else { + struct xcursor *tempC = (struct xcursor *) cursor_Create(self); + xcursor_SetStandard(tempC,Cursor_Arrow); + xim_MakeXCursor(self,tempC,tempC->header.cursor.fillChar, tempC->header.cursor.fillFont,&tempC->Xc, &tempC->Xd); + + menuWindow = XCreateSimpleWindow(xDisplay, RootWindow(xDisplay, DefaultScreen(xDisplay)), left, top, preferedWidth, preferedHeight, 2, foreground.pixel, self->mbi->prefs->menubackgroundPixel); + + newWindow = XCreateSimpleWindow(xDisplay, menuWindow, 0,self->mbi->prefs->menubarheight, preferedWidth, preferedHeight-self->mbi->prefs->menubarheight, 0, foreground.pixel, self->backgroundPixel); + /* just leave the client ATK window mapped all the time */ + XMapWindow(xim2display(self), newWindow); + + mb_InitWindows(self->mbi, menuWindow, newWindow); + XDefineCursor(xDisplay,menuWindow, tempC->Xc); + + tempC->Xc = 0; + xcursor_Destroy(tempC); + + self->menuWindow=menuWindow; + } + } else { + newWindow = XCreateSimpleWindow(xDisplay, RootWindow(xDisplay, DefaultScreen(xDisplay)), left, top, preferedWidth, preferedHeight, 2, BlackPixel(xDisplay, DefaultScreen(xDisplay)), WhitePixel(xDisplay, DefaultScreen(xDisplay))); + } + + xim2window(self)= newWindow; + if (useBackingStore) { windowAttributes.backing_store = WhenMapped; XChangeWindowAttributes(xDisplay, newWindow, CWBackingStore, &windowAttributes); *************** *** 599,814 **** /* Note: we assume default values of ForgetGravity to guarantee that any window reconfiguration will generate an exposure event, thereby eliminating the need to capture or select for configure ! events */ ! ! { ! char *foregroundColor; ! char *backgroundColor; ! long status; ! XColor desiredColor; ! XColor exactColor; ! ! graphic_GetDefaultColors(&foregroundColor, &backgroundColor); ! if (foregroundColor != NULL) { ! status = XAllocNamedColor(xDisplay, ! DefaultColormap(xDisplay, DefaultScreen(xDisplay)), ! foregroundColor, &desiredColor, &exactColor); ! if (status) { ! XSetWindowBorder(xDisplay, newWindow, desiredColor.pixel); ! } ! } ! ! self->backgroundPixel = WhitePixel(xDisplay, DefaultScreen(xDisplay)); ! if (backgroundColor != NULL) { ! status = XAllocNamedColor(xDisplay, ! DefaultColormap(xDisplay, DefaultScreen(xDisplay)), ! backgroundColor, &desiredColor, &exactColor); ! if (status) { ! XSetWindowBackground(xDisplay, newWindow, desiredColor.pixel); ! self->backgroundPixel = desiredColor.pixel; ! } ! } ! } /* Register our newly created window with whatever window manager is running (if any) */ ! XSelectInput(xDisplay, newWindow, STANDARDEVENTMASK); ! Xfileno = ConnectionNumber(xDisplay); ! /* Have we got a new display? If so, then set up display specific state appropriately */ ! for (i = 0; i < xWindowCtr; i++) { ! if (windowList[i].display == xDisplay) { ! break; ! } } - if (i == xWindowCtr) { ! static struct keybinding { ! KeySym key; ! char *binding; ! } keybindings[] = { XK_Home, "\033H", /* esc H */ ! XK_Left, "\033D", /* esc D */ ! XK_Up, "\033A", /* esc A */ ! XK_Right, "\033C", /* esc C */ ! XK_Down, "\033B", /* esc B */ ! XK_Prior, "\033G", /* esc G */ ! XK_Next, "\033E", /* esc E */ ! XK_End, "\033F", /* esc F */ ! XK_Begin, "\001", /* control A */ ! #if 0 ! XK_Insert, "\033", /* esc */ ! XK_Delete, "\004", /* control D */ ! #endif /* 0 */ ! /* give unique mappings to every key - CCH */ ! /* mind you, these are damn non-standard ! they should be ESC-digit-digit-digit-letter -wjh */ ! XK_F1, "\033S", /* esc S */ ! XK_F2, "\033T", /* esc T */ ! XK_F3, "\033U", /* esc U */ ! XK_F4, "\033V", /* esc V */ ! XK_F5, "\033W", /* esc W */ ! XK_F6, "\033P", /* esc P */ ! XK_F7, "\033Q", /* esc Q */ ! XK_F8, "\033R", /* esc R */ ! XK_F9, "\033Y", /* esc Y */ ! XK_F10, "\033<", /* esc < */ ! XK_F11, "\033[", /* esc [ */ ! XK_F12, "\033,", /* esc , */ ! ! XK_L1, "\033E", /* esc E */ ! XK_L2, "\033F", /* esc F */ ! XK_L3, "\033G", /* esc G */ ! XK_L4, "\033H", /* esc H */ ! XK_L5, "\033I", /* esc I */ ! XK_L6, "\033J", /* esc J */ ! XK_L7, "\033K", /* esc K */ ! XK_L8, "\033L", /* esc L */ ! XK_L9, "\033M", /* esc M */ ! XK_L10, "\033N", /* esc N */ ! ! XK_R1, "\033O", /* esc O */ ! XK_R2, "\033X", /* esc X */ ! XK_R3, "\033Z", /* esc Z */ ! XK_R4, "\033-", /* esc - */ ! XK_R5, "\033=", /* esc = */ ! XK_R6, "\033+", /* esc + */ ! XK_R7, "\033/", /* esc / */ ! XK_R8, "\033A", /* esc A */ ! XK_R9, "\033*", /* esc * */ ! XK_R10, "\033D", /* esc D */ ! XK_R11, "\033&", /* esc & */ ! XK_R12, "\033C", /* esc C */ ! XK_R13, "\033:", /* esc : */ ! XK_R14, "\033B", /* esc B */ ! XK_R15, "\033;", /* esc ; */ ! #ifdef notdef ! /* the old stuff mapped multiple keys to same code */ ! XK_F1, "\033S", /* esc S */ ! XK_L1, "\033S", /* esc S */ ! XK_R1, "\033S", /* esc S */ ! XK_F2, "\033T", /* esc T */ ! XK_L2, "\033T", /* esc T */ ! XK_R2, "\033T", /* esc T */ ! XK_F3, "\033U", /* esc U */ ! XK_L3, "\033U", /* esc U */ ! XK_R3, "\033U", /* esc U */ ! XK_F4, "\033V", /* esc V */ ! XK_L4, "\033V", /* esc V */ ! XK_R4, "\033V", /* esc V */ ! XK_F5, "\033W", /* esc W */ ! XK_L5, "\033W", /* esc W */ ! XK_R5, "\033W", /* esc W */ ! XK_F6, "\033P", /* esc P */ ! XK_L6, "\033P", /* esc P */ ! XK_R6, "\033P", /* esc P */ ! XK_F7, "\033Q", /* esc Q */ ! XK_L7, "\033Q", /* esc Q */ ! XK_R7, "\033Q", /* esc Q */ ! XK_F8, "\033R", /* esc R */ ! XK_L8, "\033R", /* esc R */ ! XK_R8, "\033R", /* esc R */ ! XK_F9, "\033Y", /* esc Y */ ! XK_L9, "\033Y", /* esc Y */ ! XK_R9, "\033Y", /* esc Y */ ! XK_F10, "\033<", /* esc < */ ! XK_L10, "\033<", /* esc < */ ! XK_R10, "\033<", /* esc < */ ! XK_F11, "\033[", /* esc [ */ ! XK_R11, "\033[", /* esc [ */ ! XK_F12, "\033,", /* esc , */ ! XK_R12, "\033,", /* esc , */ ! #endif /* notdef */ ! }; ! struct keybinding *thisBinding; ! /* New display (might) require a new font path */ ! xim_AddAndrewFontPath(xDisplay); ! for (thisBinding = keybindings; ! thisBinding < keybindings + sizeof(keybindings) / sizeof(struct keybinding); ! thisBinding++) ! XRebindKeysym(xDisplay, thisBinding->key, NULL, 0, (unsigned char *)thisBinding->binding, 2); ! ! /* New display, so see if someone has bothered to define the cut buffers yet! */ ! if (xim_ATK == NULL) { ! xim_ATK = XInternAtom(xDisplay, "ATK", FALSE); ! xim_INCOMING = XInternAtom(xDisplay, "INCOMING", FALSE); ! xim_TARGETS = XInternAtom(xDisplay, "TARGETS", FALSE); ! xim_TIMESTAMP = XInternAtom(xDisplay, "TIMESTAMP", FALSE); ! xim_MULTIPLE = XInternAtom(xDisplay, "MULTIPLE", FALSE); ! xim_TEXT = XInternAtom(xDisplay, "TEXT", FALSE); ! xim_INCR = XInternAtom(xDisplay, "INCR", FALSE); ! xim_CLIPBOARD = XInternAtom(xDisplay, "CLIPBOARD", FALSE); ! xim_LENGTH = XInternAtom(xDisplay, "LENGTH", FALSE); ! } ! for (i=0;i<8;i++) { ! Atom RetAtom; ! int RetFormat; ! unsigned long RetNumItems; ! unsigned long RetBytesAfter; ! unsigned char * RetData = NULL; ! static Atom n_to_atom[8] = { ! XA_CUT_BUFFER0, ! XA_CUT_BUFFER1, ! XA_CUT_BUFFER2, ! XA_CUT_BUFFER3, ! XA_CUT_BUFFER4, ! XA_CUT_BUFFER5, ! XA_CUT_BUFFER6, ! XA_CUT_BUFFER7}; ! ! (void) XGetWindowProperty(xDisplay, RootWindow(xDisplay, DefaultScreen(xDisplay)), ! n_to_atom[i], 0L, 0L, False, ! /* I'll take any kind of cut buffer!*/ AnyPropertyType, ! &RetAtom, &RetFormat, &RetNumItems, &RetBytesAfter, &RetData); ! if (RetAtom == None) ! XStoreBuffer(xDisplay, (char *)&RetNumItems, 0, i); ! if (RetData) XFree(RetData); ! } ! /* set up the mouseStatus structure for the new display */ ! tmouse = (struct mouseStatus *)malloc(sizeof(struct mouseStatus)); ! tmouse->next = Mice; ! tmouse->display = xDisplay; ! tmouse->lasttime = CurrentTime; ! tmouse->state = msAllUp; ! Mice = tmouse; ! self->MouseFacts = tmouse; ! } ! else { ! /* find the proper entry in Mice for this display and set self->MouseFacts */ ! for (tmouse = Mice; ! tmouse->display != xDisplay; ! tmouse = tmouse->next) ! {} ! self->MouseFacts = tmouse; } ! /* See if have a new file descriptor to select on */ for (i = 0; i < xWindowCtr; i++) { if (windowList[i].Xfileno == Xfileno) { windowList[i].count += 1; --- 1196,1346 ---- /* Note: we assume default values of ForgetGravity to guarantee that any window reconfiguration will generate an exposure event, thereby eliminating the need to capture or select for configure ! events (comment obsolete, configure events may be used by the menubar ! and at some point in the future perhaps by transient window ! code) */ /* Register our newly created window with whatever window manager is running (if any) */ ! XSelectInput(xDisplay, newWindow, STANDARDEVENTMASK); + + + /* Include all window header information */ + SetWMProperties(self, TRUE); ! if(sizehints) XSetNormalHints(xDisplay, TOPLEVELWINDOW(self), sizehints); ! if(zoomhints) XSetZoomHints(xDisplay, TOPLEVELWINDOW(self), zoomhints); ! XSetWindowBorder(xDisplay, TOPLEVELWINDOW(self), foreground.pixel); ! XSetWindowBackground(xDisplay, xim2window(self), background.pixel); ! ! point_SetPt(&xim_GetDrawable(self)->physicalOrigin, 0, 0); ! ! /* Bring the process cursor situation up to date, ! i.e., if a process cursor is outstanding, make sure this new window picks it up */ ! updateGlobalCursors(self); ! ! im_SetLastUsed(self); ! return TRUE; } ! /* Similar to CreateWindow, except that we are a ! transient for another pre-existing window. ! We assure ourselves that the other window is ! valid, and we skip all the once-only stuff ! associated with making a window. (It was done ! for the other.) ! ! The desired position is relative ! to the position of the other window. This tailors ! CreateTransientWindow for use in making dialogue ! boxes. ! ! If you set desired position to 0,0 and desired height and ! width to the size of the dialogue box, it will appear centered ! on the other window. ! ! If the override flag is TRUE, this is an override-redirect ! window being created. It will get key and mouse events ! INSTEAD of the 'other'window. ! ! If the override flag is FALSE this is just a transient window. ! It will get key and mouse events IN ADDITION TO the other ! window. */ ! ! static boolean ! DoCreateTransientWindow(self, other, override) ! struct xim *self, *other; ! int override; ! { ! Display *xDisplay; ! Window oWindow, newWindow, menuWindow; ! int i; ! int Xfileno; ! static int doSynch = 0; ! XSetWindowAttributes windowAttributes; ! XSizeHints *sizehints, *zoomhints; ! int left, top; ! char *foregroundColor; ! char *backgroundColor; ! XColor foreground, background; ! unsigned int width, height; ! ! if(override) { ! self->menubaron=FALSE; ! self->cmenuson=FALSE; ! } ! ! if (!(xim2window(other) && xim2display(other) && xim2valid(other))) { ! fprintf(stderr,"Other window for this transient invalid. Creating top level window.\n"); ! return xim_CreateWindow(self, NULL); ! } ! xDisplay = xim2display(other); ! oWindow = xim2window(other); ! if (wmchangestate == NULL) ! wmchangestate = XInternAtom(xDisplay, "WM_CHANGE_STATE", TRUE); ! (void) XSynchronize(xDisplay,doSynch); ! ! xim2display(self) = xDisplay; ! xim2screen(self) = DefaultScreen(xDisplay); ! xim2valid(self) = TRUE; ! DoTransientGeometry(self, override, oWindow, &left, &top, &width, &height, &sizehints, &zoomhints); ! ! SetForegroundBackground(self, &foregroundColor, &backgroundColor, &foreground, &background); ! if(self->menubaron) { ! ! self->mbi=mb_Init(xDisplay,&foreground, &background, HandleExposeFromMenubar, self); ! if(self->mbi==NULL) { ! self->menubaron=FALSE; ! self->cmenuson=TRUE; ! } else { ! /* note this cannot be an override because overrides don't have either menu system enabled */ ! menuWindow = XCreateSimpleWindow(xDisplay, RootWindow(xDisplay, DefaultScreen(xDisplay)), left, top, preferedWidth, preferedHeight, 2, foreground.pixel, self->mbi->prefs->menubackgroundPixel); ! ! newWindow = XCreateSimpleWindow(xDisplay, menuWindow, 0,self->mbi->prefs->menubarheight, preferedWidth, preferedHeight-self->mbi->prefs->menubarheight, 0, foreground.pixel, self->backgroundPixel); ! /* just leave the client ATK window mapped all the time */ ! XMapWindow(xim2display(self), newWindow); ! ! mb_InitWindows(self->mbi, menuWindow, newWindow); ! } ! } else { ! newWindow = XCreateSimpleWindow(xDisplay, override?oWindow:RootWindow(xDisplay, DefaultScreen(xDisplay)), left, top, preferedWidth, preferedHeight, 2, BlackPixel(xDisplay, DefaultScreen(xDisplay)), WhitePixel(xDisplay, DefaultScreen(xDisplay))); ! } ! /* (This really should be a fake "insertgraphic" into its own graphic ! to guarantee that all graphic state exists alike for all views.) */ ! xim2window(self)= newWindow; ! ! if (useBackingStore) { ! windowAttributes.backing_store = WhenMapped; ! XChangeWindowAttributes(xDisplay, newWindow, CWBackingStore, &windowAttributes); } ! if(sizehints) XSetNormalHints(xDisplay, TOPLEVELWINDOW(self), sizehints); ! if(zoomhints) XSetZoomHints(xDisplay, TOPLEVELWINDOW(self), zoomhints); ! ! ! XSetWindowBorder(xDisplay, TOPLEVELWINDOW(self), foreground.pixel); ! XSetWindowBackground(xDisplay, xim2window(self), background.pixel); ! ! /* Register our newly created window with whatever window manager is running (if any) */ ! ! XSelectInput(xDisplay, newWindow, STANDARDEVENTMASK); ! ! ! /* MouseFacts, xDisplay, and Xfileno should be the same for ! both self and other */ ! ! Xfileno = ConnectionNumber(xDisplay); ! self->MouseFacts = other->MouseFacts; ! self->Xfileno = Xfileno; ! ! /* Increment count of windows on this file descriptor. */ for (i = 0; i < xWindowCtr; i++) { if (windowList[i].Xfileno == Xfileno) { windowList[i].count += 1; *************** *** 815,875 **** break; } } - if (i == xWindowCtr) { - if (numberOfWindowFiles == 0) { - numberOfWindowFiles = 2; - windowList = (struct xwindowfiles *) malloc(2 * sizeof(struct xwindowfiles)); - } - else if (xWindowCtr == numberOfWindowFiles) { - numberOfWindowFiles *= 2; - windowList = (struct xwindowfiles *)realloc(windowList, - numberOfWindowFiles * sizeof(struct xwindowfiles)); - } - windowList[i].Xfileno = Xfileno; - windowList[i].count = 1; - windowList[i].display = xDisplay; - windowList[i].host = xhost; - xWindowCtr += 1; - self->Xfileno = Xfileno; - } - /* Include all window header information */ SetWMProperties(self, TRUE); ! /* set size hints ! ASSUMPTION: if dimensions were set with im_SetDimensions ! it was done by the program ! but if set with im_SetGeometrySpec it was by the user ! The latest ICCCM says that the x,y,width,height values in the hints are ignored, ! but twm still uses them as of June, 1989. ! */ ! if (setDimensions || GeometrySize || GeometryPosition) { ! xsh.flags = PMinSize | PMaxSize ! | ((GeometrySize) ? USSize : (setDimensions) ? PSize : 0) ! | ((GeometryPosition) ? USPosition : (setDimensions) ? PPosition : 0); ! xsh.x = left; ! xsh.y = top; ! xsh.width = preferedWidth; ! xsh.height = preferedHeight; ! xsh.min_width = (preferedWidth < 91) ? preferedWidth : 91; ! xsh.min_height = (preferedHeight < 20) ? preferedHeight : 20; ! xsh.max_width = DisplayWidth(xDisplay, DefaultScreen(xDisplay)); ! xsh.max_height = DisplayHeight(xDisplay, DefaultScreen(xDisplay)); ! XSetNormalHints(xDisplay, newWindow, &xsh); ! } ! else {} /* no size hints if none set */ ! ! xsh.flags = (PSize | PPosition | PMinSize | PMaxSize); ! xsh.x = 6; ! xsh.y = 6; ! xsh.width = DisplayWidth(xDisplay, DefaultScreen(xDisplay)) - 12; ! xsh.height = DisplayHeight(xDisplay, DefaultScreen(xDisplay)) - 12; ! xsh.min_width = preferedWidth; ! xsh.min_height = preferedHeight; ! xsh.max_width = DisplayWidth(xDisplay, DefaultScreen(xDisplay)); ! xsh.max_height = DisplayHeight(xDisplay, DefaultScreen(xDisplay)); ! XSetZoomHints(xDisplay, newWindow, &xsh); ! point_SetPt(&xim_GetDrawable(self)->physicalOrigin, 0, 0); /* Bring the process cursor situation up to date, --- 1347,1358 ---- break; } } /* Include all window header information */ SetWMProperties(self, TRUE); ! /* the most important property: TransientFor */ ! XSetTransientForHint(xDisplay, newWindow, oWindow); ! point_SetPt(&xim_GetDrawable(self)->physicalOrigin, 0, 0); /* Bring the process cursor situation up to date, *************** *** 877,885 **** --- 1360,1410 ---- updateGlobalCursors(self); im_SetLastUsed(self); + + /* for overrides, set self->popup_parent to 'other' */ + /* Set other's popup_active to self */ + /* If it is already non-null, follow popup_active chain + until we find one that is null */ + + if (override) { + struct xim *parent = other; + XWindowChanges changes; + XWMHints hints; + int mask = 0; + + hints.window_group = oWindow; + hints.flags = WindowGroupHint; + XSetWMHints(xDisplay, newWindow, &hints); + + self->popup_parent = other; + /* this will set parent to the last window and choose the right sibling window if any */ + while (parent->popup_active) { + parent = parent->popup_active; + changes.sibling = xim2window(parent); + changes.stack_mode = Above; + mask = CWSibling | CWStackMode; + } + if (mask) XConfigureWindow(xim2display(self), xim2window(self), mask, &changes); + parent->popup_active = self; + } + return TRUE; } + boolean + xim__CreateTransientWindow(self, other) + struct xim *self, *other; + { + return (DoCreateTransientWindow(self, other, FALSE)); + } + + boolean + xim__CreateOverrideWindow(self, other) + struct xim *self, *other; + { + return (DoCreateTransientWindow(self, other, TRUE)); + } + void xim__FlushAllWindows(classID) struct classheader *classID; { *************** *** 961,1038 **** struct proctable_Entry *proc; struct basicobject *object; long data; }; /* Recursively installs a menu list and all its chainees. */ ! static void InstallMenus(self, menulist) ! struct xim *self; ! struct menulist *menulist; { ! register struct itemlist *item; ! struct headerlist *header; ! if (menulist == NULL) /* Should never happen, but... */ ! return; ! menulist->curIM = (struct im *) self; ! for (header = menulist->menuChainAfter; header != NULL; header = header->next) ! InstallMenus(self, header->menulist); ! for (item = menulist->menus; item != NULL; item = item->next) ! if (menulist_ItemIsEnabled(menulist, item)) { ! char paneString[500]; ! long panePriority; ! char selectionString[500]; ! long selectionPriority; ! char *paneTitle; ! struct seldata *selectionData; ! ! ExplodeMenuString(item->string, ! paneString, sizeof(paneString), &panePriority, ! selectionString, sizeof(selectionString), &selectionPriority); ! ! if (*paneString == '\0') { ! paneTitle = NULL; ! panePriority = 0; ! } ! else ! paneTitle = paneString; ! if (item->proc != NULL) { /* Is an addition. */ ! selectionData = (struct seldata *)malloc(sizeof(struct seldata)); ! if (selectionData == NULL) ! return; ! selectionData->proc = item->proc; ! selectionData->object = menulist->object; ! selectionData->data = item->functionData; ! ! cmenu_AddSelection(self->menu, ! paneTitle, panePriority, ! selectionString, selectionPriority, selectionData, ! cmenu_CreatePane | cmenu_DisallowDuplicates); ! } ! else { ! /* delete unwanted menu item. ! XXX core leak: the old seldata */ ! cmenu_DeleteSelection(self->menu, ! paneTitle, panePriority, ! selectionString, selectionPriority, ! cmenu_DeleteEmptyPanes); ! } } ! ! for (header = menulist->menuChainBefore; header != NULL; header = header->next) ! InstallMenus(self, header->menulist); } #define CACHEDREGIONS 10 struct cacheregion { ! struct cmenu *menus; ! struct mlcacheNode *who; ! struct cacheregion *next, **selfP; }; static struct cacheregion * --- 1486,1579 ---- struct proctable_Entry *proc; struct basicobject *object; long data; + boolean incmenus; }; /* Recursively installs a menu list and all its chainees. */ ! static void InstallMenus(self, menulist) ! struct xim *self; ! struct menulist *menulist; { ! register struct itemlist *item; ! struct headerlist *header; ! if (menulist == NULL) /* Should never happen, but... */ ! return; ! menulist->curIM = (struct im *) self; ! for (header = menulist->menuChainAfter; header != NULL; header = header->next) ! InstallMenus(self, header->menulist); ! for (item = menulist->menus; item != NULL; item = item->next){ ! char paneString[500]; ! long panePriority; ! char selectionString[500]; ! long selectionPriority; ! char *paneTitle; ! struct seldata *selectionData; ! ! ExplodeMenuString(item->string, ! paneString, sizeof(paneString), &panePriority, ! selectionString, sizeof(selectionString), &selectionPriority); ! ! if (*paneString == '\0') { ! paneTitle = NULL; ! panePriority = 0; ! } ! else ! paneTitle = paneString; ! if (item->proc != NULL) { /* Is an addition. */ ! int cmenuspanePriority,menubarpanePriority; ! ! selectionData = (struct seldata *)malloc(sizeof(struct seldata)); ! if (selectionData == NULL) ! return; ! selectionData->proc = item->proc; ! selectionData->object = menulist->object; ! selectionData->data = item->functionData; ! selectionData->incmenus=False; ! ! menubarpanePriority = cmenuspanePriority = self->CardOrder?GetCardPriority(self->CardOrder, paneString, panePriority):panePriority; ! ! menubarpanePriority = self->MenubarCardOrder?GetCardPriority(self->MenubarCardOrder, paneString, menubarpanePriority):menubarpanePriority; ! ! cmenuspanePriority = self->PopupCardOrder?GetCardPriority(self->PopupCardOrder, paneString, cmenuspanePriority):cmenuspanePriority; ! ! if(self->menubaron && self->menu) { ! mb_AddSelection(self->menu, paneTitle, menubarpanePriority, selectionString, selectionPriority, FALSE, (char *)selectionData); ! } ! ! if(menulist_ItemIsEnabled(menulist,item) && self->cmenuson && self->cmenu) { ! if(!self->menubaron || !self->PopupMenuList || CheckMenuChoice(self->PopupMenuList, self->PopupMenuListCount, paneString)>=0) { ! selectionData->incmenus = True; ! cmenu_AddSelection(self->cmenu, paneTitle, cmenuspanePriority, selectionString, selectionPriority, selectionData, cmenu_CreatePane | cmenu_DisallowDuplicates); } ! } ! } else { ! if(self->menubaron && self->menu) { ! selectionData = (struct seldata *)mb_DeleteSelection( self->menu, paneTitle, selectionString); ! if(selectionData && !selectionData->incmenus) free(selectionData); ! } ! /* delete unwanted menu item. */ ! if(self->cmenuson && self->cmenu) cmenu_DeleteSelection(self->cmenu, paneTitle, panePriority, selectionString, selectionPriority, cmenu_DeleteEmptyPanes); ! continue; ! } ! if(self->menubaron && self->menu) mb_SetItemStatus(self->menu, paneTitle, selectionString, menulist_ItemIsEnabled(menulist, item)); ! } ! for (header = menulist->menuChainBefore; header != NULL; header = header->next) ! InstallMenus(self, header->menulist); } #define CACHEDREGIONS 10 struct cacheregion { ! struct menubar *menus; ! struct cmenu *cmenus; ! struct mlcacheNode *who; ! struct cacheregion *next, **selfP; }; static struct cacheregion * *************** *** 1213,1283 **** return cache; } ! static void updateMenus(self, ml) ! struct xim *self; ! struct menulist *ml; { ! boolean newVersion = FALSE; ! struct cacheregion *destroy = NULL; ! struct mlcacheNode *cache; ! ! if (ml == NULL) { ! /* It may be in the cache(??), so we don't free it. */ ! self->menu = NULL; ! return; ! } ! ! cache = findCachedML(self, ml, self->mlcache, &newVersion); ! if (cache->region == NULL || newVersion) { ! if (newVersion) { ! menulist_IncrementMLVersion(); ! if (cache->region != NULL) { ! /* printf("um: destroying menu region %d.\n", ! cache->region->id); */ ! destroy = unlinkCacheRegion(cache->region); ! } ! } ! if (self->freeRegions != NULL) ! cache->region=self->freeRegions; ! else if (self->activeRegions != NULL) { ! cache->region = lastCacheRegion(self->activeRegions); ! if (cache->region->who != NULL && cache->region->who != cache) ! discardCachedML(cache->region->who, &self->mlcache); ! unlinkCacheRegion(cache->region); ! /* this can't be most recently used region if the number ! * of regions used is >2 ! */ ! cmenu_Destroy(cache->region->menus); ! } ! else { ! fprintf(stderr, "xmim(updateMenus): out of menu regions!\n"); ! return; ! } ! cache->region->who = cache; ! self->menu = cache->region->menus ! = cmenu_Create(xim2display(self), xim2window(self), ! im_GetProgramName(), free); ! if (self->menu == NULL) ! fprintf(stderr, "xim: Couldn't allocate menus\n"); ! InstallMenus(self, ml); } ! /* ! else if (cache->region->id != self->menuRegion) ! printf("um: reusing menu region %d.\n", cache->region->id); ! */ ! linkCacheRegion(cache->region, &self->activeRegions); ! ! if (destroy != NULL) { ! cmenu_Destroy(destroy->menus); ! linkCacheRegion(destroy, &self->freeRegions); } self->menu = cache->region->menus; } void xim__PostMenus(self, menulist) struct xim *self; struct menulist *menulist; --- 1754,1850 ---- return cache; } + + void QMenuChoice(mb,idata,mdata) + struct menubar *mb; + char *idata; + char *mdata; + { + struct xim *im=(struct xim *)mdata; + struct seldata *sel=(struct seldata *)idata; + enQuserMenu(im, sel->proc, sel->object, sel->data); + } ! static void updateMenus(self, ml) ! struct xim *self; ! struct menulist *ml; { ! boolean newVersion = FALSE; ! struct cacheregion *destroy = NULL; ! struct mlcacheNode *cache; ! boolean redrawflag=FALSE; ! ! if (ml == NULL) { ! /* It may be in the cache(??), so we don't free it. */ ! self->menu = NULL; ! self->cmenu = NULL; ! return; ! } ! cache = findCachedML(self, ml, self->mlcache, &newVersion); ! if (cache->region == NULL || newVersion) { ! if (newVersion) { ! menulist_IncrementMLVersion(); ! if (cache->region != NULL) { ! /* printf("um: destroying menu region %d.\n", ! cache->region->id); */ ! destroy = unlinkCacheRegion(cache->region); ! } ! } ! if (self->freeRegions != NULL) ! cache->region=self->freeRegions; ! else if (self->activeRegions != NULL) { ! cache->region = lastCacheRegion(self->activeRegions); ! if (cache->region->who != NULL && cache->region->who != cache) ! discardCachedML(cache->region->who, &self->mlcache); ! unlinkCacheRegion(cache->region); ! /* this can't be most recently used region if the number ! * of regions used is >2 ! */ ! if(self->menubaron && cache->region->menus) mb_Destroy(cache->region->menus); ! if(self->cmenuson && cache->region->cmenus) cmenu_Destroy(cache->region->cmenus); } ! else { ! fprintf(stderr, "xmim(updateMenus): out of menu regions!\n"); ! return; } + + cache->region->who = cache; + if(self->menubaron) self->menu = cache->region->menus + = mb_Create(self->mbi, im_GetProgramName(), "More...", (char *)self , QMenuChoice); + if(self->cmenuson) self->cmenu = cache->region->cmenus = cmenu_Create(xim2display(self), xim2window(self), im_GetProgramName(), free); + + if ((self->menubaron && self->menu == NULL) || (self->cmenuson && self->cmenu == NULL)) + fprintf(stderr, "xim: Couldn't allocate menus\n"); + InstallMenus(self, ml); + redrawflag=TRUE; + } + /* + else if (cache->region->id != self->menuRegion) + printf("um: reusing menu region %d.\n", cache->region->id); + */ + linkCacheRegion(cache->region, &self->activeRegions); + + if (destroy != NULL) { + if(self->menubaron && destroy->menus) mb_Destroy(destroy->menus); + if(self->cmenuson && destroy->cmenus) cmenu_Destroy(destroy->cmenus); + linkCacheRegion(destroy, &self->freeRegions); + } + self->cmenu = cache->region->cmenus; + + /* don't bother redrawing this if it was the last posted menubar, note that redrawflag catches the case where this is a new menubar since in this case self->menu==cache->region->menus but this really isn't the last posted menubar */ + if(self->menu!=cache->region->menus || redrawflag) { self->menu = cache->region->menus; + if(self->menubaron && self->menu) { + mb_RefitMenubar(self->menu); + mb_RedrawMenubar(self->menu, TRUE); + } + } } + void xim__PostMenus(self, menulist) struct xim *self; struct menulist *menulist; *************** *** 1286,1300 **** if (xim2window(self) == NULL) return; ! ! menulist_ClearChain(imself->menus); ! menulist_ChainBeforeML(imself->menus, menulist, menulist); ! if (imself->init != NULL) menulist = init_ModifyMenulist(imself->init, imself->menus); else menulist = imself->menus; updateMenus(self, menulist); } --- 1853,1875 ---- if (xim2window(self) == NULL) return; ! ! /* the value of NULL for menulist is special it just says to the im re-post all your own menus */ ! if(menulist) { ! menulist_ClearChain(imself->menus); ! menulist_ChainBeforeML(imself->menus, menulist, menulist); ! } ! if (imself->init != NULL) menulist = init_ModifyMenulist(imself->init, imself->menus); else menulist = imself->menus; + /* if we have a popup active it's responsible for posting menus + and we aren't allowed to. */ + if(self->popup_active) return; + while(self->popup_parent) self=self->popup_parent; + updateMenus(self, menulist); } *************** *** 1323,1328 **** --- 1898,1904 ---- calloc(1, sizeof(struct cacheregion)), &self->freeRegions); self->freeRegions->menus=NULL; + self->freeRegions->cmenus=NULL; } self->activeRegions=NULL; self->globalXCursor = 0; /* will get on first use */ *************** *** 1331,1336 **** --- 1907,1934 ---- self->StandardXCursor = 0; /* Will be during update */ self->EverMapped = FALSE; /* never been mapped */ self->CurrentlyMapped = FALSE; + self->popup_active = NULL; /* No active popup initially */ + self->popup_parent = NULL; /* We are not a popup */ + + self->CardOrder=SetupCardOrder("CardOrder"); + self->PopupCardOrder=SetupCardOrder("PopupCardOrder"); + self->MenubarCardOrder=SetupCardOrder("MenubarCardOrder"); + + self->PopupMenuList=SetupMenuChoices("PopupMenuList", &self->PopupMenuListCount); + + if(self->PopupMenuList) { + self->menubaron=TRUE; + self->cmenuson=TRUE; + } else { + self->menubaron=FALSE; + self->cmenuson=FALSE; + } + + self->menubaron=environ_GetProfileSwitch("Menubar", self->menubaron); + self->cmenuson=environ_GetProfileSwitch("PopUpMenus", self->cmenuson || !self->menubaron); + + if((!self->menubaron) && (!self->cmenuson)) self->cmenuson=TRUE; + return TRUE; } *************** *** 1339,1344 **** --- 1937,1943 ---- struct xim *self; { register int i; + struct xim *im; /* Throw away anyone who is connected in -- we're about to go away */ if (self->header.im.topLevel) *************** *** 1353,1363 **** if (self->globalXCursor) XFreeCursor(xim2display(self), self->globalXCursor); if (self->StandardXCursor) XFreeCursor(xim2display(self), self->StandardXCursor); ! XDestroyWindow(xim2display(self), xim2window(self)); ! if (self->menu) ! cmenu_Destroy(self->menu); /* Remove windows effect on windowList */ --- 1952,1971 ---- if (self->globalXCursor) XFreeCursor(xim2display(self), self->globalXCursor); if (self->StandardXCursor) XFreeCursor(xim2display(self), self->StandardXCursor); ! XDestroyWindow(xim2display(self), TOPLEVELWINDOW(self)); ! if (self->menubaron) { ! if(self->menu) mb_Destroy(self->menu); ! if(self->mbi) mb_Finalize(self->mbi); ! } ! ! if(self->cmenu && self->cmenuson) cmenu_Destroy(self->cmenu); + if(self->PopupMenuList) FreeMenuChoices(self->PopupMenuList, self->PopupMenuListCount); + if(self->CardOrder) FreeCardOrder(self->CardOrder); + if(self->MenubarCardOrder) FreeCardOrder(self->MenubarCardOrder); + if(self->PopupCardOrder) FreeCardOrder(self->PopupCardOrder); + /* Remove windows effect on windowList */ *************** *** 1382,1387 **** --- 1990,2039 ---- break; } } + + /* If we are an active popup, we should remove ourself from + the popup chain */ + if (self->popup_parent) { + struct xim *cur, *prev; + + cur = prev = self->popup_parent; + while ((cur = cur->popup_active) != NULL) { + if (cur == self) { + break; + } + prev = cur; + } + if (cur == self) { + prev->popup_active = self->popup_active; + /* Tell next elt in chain to stack above prev, if prev isn't the popup_parent. */ + if (prev != self->popup_parent) { + XWindowChanges changes; + + changes.sibling = xim2window(prev); + changes.stack_mode = Above; + XConfigureWindow(xim2display(self->popup_active), xim2window(self->popup_active), CWSibling | CWStackMode, &changes); + } + } + + /* find the next im up from us and tell him to post his own menus */ + xim_PostMenus(self->popup_parent, NULL); /* the value of NULL is special it just says to the im "re-post all your own menus" */ + + } + + /* If anyone has us as a parent, they must be unmapped, and + they must not point to us as a parent */ + for ( im = (struct xim *) imList; + im != NULL; + im = (struct xim *) im->header.im.next) { + if (im->popup_parent == self) { + if (im->CurrentlyMapped) { + /* should we call xim__Vanish? */ + XUnmapWindow(xim2display(im),TOPLEVELWINDOW(im)); + im->CurrentlyMapped = FALSE; + } + im->popup_parent = NULL; + } + } } *************** *** 1395,1400 **** --- 2047,2053 ---- long height; XRectangle RedrawBox; + if(im->menubaron && im->menu) mb_RedrawMenubar(im->menu, TRUE); im->header.im.doRedraw = FALSE; im->header.im.inRedraw = TRUE; /* *************** *** 1529,1535 **** HandleExposure(display, im, event) Display *display; struct xim *im; ! XEvent event; { XPoint tempRect[4]; /* used to hold exposure rectangle */ XEvent tempEvent; --- 2182,2188 ---- HandleExposure(display, im, event) Display *display; struct xim *im; ! XEvent *event; { XPoint tempRect[4]; /* used to hold exposure rectangle */ XEvent tempEvent; *************** *** 1540,1548 **** Drawable root; /* initialize all variables */ ! exposedWindow = event.xany.window; lastSeenWidth = lastSeenHeight = 0; ! GetValuesFromEvent(&event,tempRect, &lastSeenWidth,&lastSeenHeight); /* And start accumulating all of the areas into a region */ if (regionDebug) { printf("\nxim:creating region for original event\n"); --- 2193,2201 ---- Drawable root; /* initialize all variables */ ! exposedWindow = event->xany.window; lastSeenWidth = lastSeenHeight = 0; ! GetValuesFromEvent(event,tempRect, &lastSeenWidth,&lastSeenHeight); /* And start accumulating all of the areas into a region */ if (regionDebug) { printf("\nxim:creating region for original event\n"); *************** *** 1564,1573 **** ExposureMask, &tempEvent)) { /* Note: we could get graphics exposure events, noevents and exposure events */ ! event = tempEvent; ! GetValuesFromEvent(&event, tempRect, &lastSeenWidth, &lastSeenHeight); ! if (event.type != NoExpose) { if (regionDebug) printf("xim:creating region for coalesed event\n"); newUpdateRgn = XPolygonRegion(tempRect, 4, --- 2217,2226 ---- ExposureMask, &tempEvent)) { /* Note: we could get graphics exposure events, noevents and exposure events */ ! event = &tempEvent; ! GetValuesFromEvent(event, tempRect, &lastSeenWidth, &lastSeenHeight); ! if (event->type != NoExpose) { if (regionDebug) printf("xim:creating region for coalesed event\n"); newUpdateRgn = XPolygonRegion(tempRect, 4, *************** *** 1585,1591 **** see if we are drawing whole window. Yes=> punt the region clipping and go for it, No => save the special region and let graphic know about it */ ! XGetGeometry(display, event.xany.window, &root, &x, &y, &width, &height, &border, &depth); rectangle_SetRectSize(&im->header.view.drawable->localBounds, 0,0,width,height); --- 2238,2244 ---- see if we are drawing whole window. Yes=> punt the region clipping and go for it, No => save the special region and let graphic know about it */ ! XGetGeometry(display, event->xany.window, &root, &x, &y, &width, &height, &border, &depth); rectangle_SetRectSize(&im->header.view.drawable->localBounds, 0,0,width,height); *************** *** 1620,1631 **** } if (curUpdateRgn) { if (regionDebug) printf("xim: installing update region\n"); ! xgraphic_SetUpdateRegion(curUpdateRgn, display, event.xany.window); } xim_HandleRedraw(im); if (curUpdateRgn) { if (regionDebug) printf("xim: reseting update region to 0\n"); ! xgraphic_SetUpdateRegion(0L,display, event.xany.window); if (regionDebug) printf("xim:destroy update rgn after Handleredraw\n"); XDestroyRegion(curUpdateRgn); --- 2273,2284 ---- } if (curUpdateRgn) { if (regionDebug) printf("xim: installing update region\n"); ! xgraphic_SetUpdateRegion(curUpdateRgn, display, event->xany.window); } xim_HandleRedraw(im); if (curUpdateRgn) { if (regionDebug) printf("xim: reseting update region to 0\n"); ! xgraphic_SetUpdateRegion(0L,display, event->xany.window); if (regionDebug) printf("xim:destroy update rgn after Handleredraw\n"); XDestroyRegion(curUpdateRgn); *************** *** 1723,1732 **** mfacts->state = msAllUp; } ! static void HandleWindowEvent(display) ! Display *display; { #define KEYEXPANSIONSIZE 80 XEvent tempEvent, event; --- 2376,2406 ---- mfacts->state = msAllUp; } + struct view * + xim__Hit (self, action, x, y, clicks) + struct xim *self; + enum view_MouseAction action; + long x, y, clicks; + { + if (self->popup_active) + return (struct view *)self; + else + return view_Hit(self->header.im.topLevel, action, x, y, clicks); + } + + void HandleExposeFromMenubar(ee,im) + XEvent *ee; + struct xim *im; + { + + im->CurrentlyMapped = TRUE; + HandleExposure(xim2display(im), im, ee); + } + ! static void HandleWindowEvent(display) ! Display *display; { #define KEYEXPANSIONSIZE 80 XEvent tempEvent, event; *************** *** 1762,1773 **** } /* find the im for the window */ ! for ( im = (struct xim *) imList; ! im != NULL && ! !(xim2window(im) == event.xany.window ! && xim2display(im) == display ); ! im = (struct xim *) im->header.im.next) ! {} if (im == NULL) { /* check to see if it is a property notify for one of the windows on the MaskList. */ --- 2436,2453 ---- } /* find the im for the window */ ! im = (struct xim *) imList; ! ! while(im) { ! if(((xim2window(im) == event.xany.window || (im->menuWindow == event.xany.window && im->menubaron) ) && xim2display(im) == display )) break; ! im=(struct xim *) im->header.im.next; ! } ! ! if(im && im->menubaron && im->menuWindow == event.xany.window) { ! mb_HandleEvent(im->mbi, im->menu, &event); ! continue; ! } ! if (im == NULL) { /* check to see if it is a property notify for one of the windows on the MaskList. */ *************** *** 1814,1820 **** case Expose: case GraphicsExpose: im->CurrentlyMapped = TRUE; ! HandleExposure(display, im, event); break; case SelectionClear: --- 2494,2500 ---- case Expose: case GraphicsExpose: im->CurrentlyMapped = TRUE; ! HandleExposure(display, im, &event); break; case SelectionClear: *************** *** 1842,1857 **** break; case KeyPress: ! keyEvent = (XKeyEvent *) &event; lastEventTime = keyEvent->time; strp = str; length = XLookupString(keyEvent, str, KEYEXPANSIONSIZE, ! /* keysym*/ NULL, /* status = XComposeStatus */ NULL); if (length == 1 && keyEvent->state & Mod1Mask) ! enQuserKey(im, '\033'); while (length-- > 0) ! enQuserKey(im, *strp++); ! break; case ButtonPress: buttonEvent = (XButtonEvent *) &event; --- 2522,2541 ---- break; case KeyPress: ! /* If we have a popup, IT gets the key event */ ! while (im->popup_active) ! im = im->popup_active; ! ! keyEvent = (XKeyEvent *) &event; lastEventTime = keyEvent->time; strp = str; length = XLookupString(keyEvent, str, KEYEXPANSIONSIZE, ! /* keysym*/ NULL, /* status = XComposeStatus */ NULL); if (length == 1 && keyEvent->state & Mod1Mask) ! enQuserKey(im, '\033'); while (length-- > 0) ! enQuserKey(im, *strp++); ! break; case ButtonPress: buttonEvent = (XButtonEvent *) &event; *************** *** 1922,1943 **** } switch (buttonEvent->button) { case MENUBUTTON: ! if (im->menu) { ! int retVal; ! struct seldata *sel; ! retVal = cmenu_Activate(im->menu, buttonEvent, ! &sel, cmenu_BackgroundPixel, ! im->backgroundPixel); ! if (retVal == cm_SUCCESS) ! enQuserMenu(im, sel->proc, ! sel->object, sel->data); ! ! } ! else ! errprintf(im_GetProgramName(), ERR_WARNING, ! 0, 0, "no menus defined. %s", ! "Maybe some fonts are missing."); ! break; case LEFTBUTTON: case RIGHTBUTTON: StartButtonTimeout(im, buttonEvent->button, --- 2606,2624 ---- } switch (buttonEvent->button) { case MENUBUTTON: ! /* New clever hack: if we are an active poup ask our uppermost parent to activate our menus */ ! while(im->popup_parent) im=im->popup_parent; ! ! if (im->cmenuson) { ! if(im->cmenu) { ! int retVal; ! struct seldata *sel; ! retVal = cmenu_Activate(im->cmenu, buttonEvent, &sel, cmenu_BackgroundPixel, im->backgroundPixel); ! if (retVal == cm_SUCCESS) enQuserMenu(im, sel->proc, sel->object, sel->data); ! ! } else errprintf(im_GetProgramName(), ERR_WARNING, 0, 0, "no menus defined. %s", "Maybe some fonts are missing."); ! } ! break; case LEFTBUTTON: case RIGHTBUTTON: StartButtonTimeout(im, buttonEvent->button, *************** *** 2064,2070 **** */ static boolean xim__HandleFiles (ClassID, twait, beCheap) ! struct classhdr *ClassID; long twait; boolean beCheap; { --- 2745,2751 ---- */ static boolean xim__HandleFiles (ClassID, twait, beCheap) ! struct classheader *ClassID; long twait; boolean beCheap; { *************** *** 2175,2200 **** { XWindowAttributes attr; ! XGetWindowAttributes(xim2display(self), xim2window(self), &attr); if (attr.map_state == IsUnmapped) { /* If the window is not mapped, we have to map it and then wait for the exposure event. The HandleExposure routine will call xim_HandleRedraw() */ XEvent Event; ! ! XMapWindow(xim2display(self), xim2window(self)); ! if ( ! self->EverMapped) { /* the very first time we map the window we handle exposure events immediately. This lets `messages` display the message of the day while it is initializing it data base. */ ! self->EverMapped = TRUE; XWindowEvent(xim2display(self), xim2window(self), ExposureMask, &Event); ! HandleExposure(xim2display(self), self, Event); self->CurrentlyMapped = TRUE; ! } ! else { /* exposure events will eventually arrive and be handled in Interact / HandleFiles / HandleWindowEvent */ --- 2856,2887 ---- { XWindowAttributes attr; ! XGetWindowAttributes(xim2display(self), TOPLEVELWINDOW(self), &attr); if (attr.map_state == IsUnmapped) { /* If the window is not mapped, we have to map it and then wait for the exposure event. The HandleExposure routine will call xim_HandleRedraw() */ XEvent Event; ! XMapWindow(xim2display(self), TOPLEVELWINDOW(self)); ! if ( !self->EverMapped && !self->popup_parent) { ! self->EverMapped = TRUE; /* the very first time we map the window we handle exposure events immediately. This lets `messages` display the message of the day while it is initializing it data base. */ ! /* duplicate the work which would occur on the first structure notify here for appearance's sake */ ! if(self->menubaron) { ! XWindowEvent(xim2display(self), TOPLEVELWINDOW(self), StructureNotifyMask, &Event); ! mb_HandleEvent(self->mbi, NULL, &Event); ! } XWindowEvent(xim2display(self), xim2window(self), ExposureMask, &Event); ! HandleExposure(xim2display(self), self, &Event); self->CurrentlyMapped = TRUE; ! } else { ! /* catch the case of a override window being mapped the ! first time */ ! self->EverMapped = TRUE; /* exposure events will eventually arrive and be handled in Interact / HandleFiles / HandleWindowEvent */ *************** *** 2208,2213 **** --- 2895,2906 ---- } + static char *mygetdefaults(dpy, pname) + Display *dpy; + char *pname; + { + return environ_GetProfile(pname); + } boolean xim__InitializeClass(classID) *************** *** 2224,2229 **** --- 2917,2928 ---- SelectionAndCB = environ_GetProfileSwitch("SelectionAndCB", TRUE); CachedCutBuffer.string = malloc(CachedCutBuffer.size = 200); CachedCutBuffer.length = CachedCutBuffer.pos = 0; + + iconMaxLength = environ_GetProfileInt ("MaxIconLabelLength", iconMaxLength); + titleMaxLength = environ_GetProfileInt ("MaxTitleLength", titleMaxLength); + useProgramNameInTitle = environ_GetProfileSwitch("UseProgramNameInTitle", useProgramNameInTitle); + + (void)mb_SetGetDefault(mygetdefaults); return TRUE; } *************** *** 2301,2307 **** fprintf(stderr,"xim_MakeXCursor: pixmap of height 0 requested by %X\n", self); height++; } ! maskPixmap = XCreatePixmap(xim2display(self),xim2window(self), width, height, 1); gcattr.fill_style = FillSolid; /* gcattr.foreground = WhitePixel(xim2display(self),xim2screen(self)); --- 3000,3006 ---- fprintf(stderr,"xim_MakeXCursor: pixmap of height 0 requested by %X\n", self); height++; } ! maskPixmap = XCreatePixmap(xim2display(self),RootWindow(xim2display(self), DefaultScreen(xim2display(self))), width, height, 1); gcattr.fill_style = FillSolid; /* gcattr.foreground = WhitePixel(xim2display(self),xim2screen(self)); *************** *** 2328,2334 **** XFreeGC(xim2display(self), gc); /* Now we have the mask, let's build the source */ ! sourcePixmap = XCreatePixmap(xim2display(self),xim2window(self),width,height,1); gc = XCreateGC(xim2display(self), sourcePixmap, GCFillStyle | GCForeground | GCFont | GCFunction, &gcattr); /* Clear out the pixmap so it has all zeros */ --- 3027,3033 ---- XFreeGC(xim2display(self), gc); /* Now we have the mask, let's build the source */ ! sourcePixmap = XCreatePixmap(xim2display(self),RootWindow(xim2display(self), DefaultScreen(xim2display(self))),width,height,1); gc = XCreateGC(xim2display(self), sourcePixmap, GCFillStyle | GCForeground | GCFont | GCFunction, &gcattr); /* Clear out the pixmap so it has all zeros */ *************** *** 2376,2381 **** --- 3075,3081 ---- long initialWidth, initialHeight, initialX, initialY; struct rectangle initRect; int doMap = TRUE; /* nonzero window should be mapped */ + XWindowChanges changes; if (im_IsPlaying()) return; *************** *** 2430,2440 **** else doMap = FALSE; /* we have an empty cursor area, so don't map the window */ } /* Now place cursor in proper stacking order -- if never seen before, then it is already in proper position (first if test); if it is a new cursor, then it goes on top of the stack (second set of statements); however, global (window/process) cursors have highest priority, so if just raised the view cursor, then we must reraise the global cursor (last test) */ if (plainCur->posted != imself) { if (cursordebug) printf("xim_PostCursor: raising cursor window %X for cursor %X\n", reqCursor->Xw, reqCursor); ! XRaiseWindow(xim2display(self), reqCursor->Xw); if (ProcessCursor || imself->WindowCursor) { ! XRaiseWindow(xim2display(self), self->globalCursorWindow); if (cursordebug) printf("xim_PostCursor: global cursors being used, so raising global cursors over %X(window %X)\n", reqCursor, reqCursor->Xw); } } --- 3130,3152 ---- else doMap = FALSE; /* we have an empty cursor area, so don't map the window */ } /* Now place cursor in proper stacking order -- if never seen before, then it is already in proper position (first if test); if it is a new cursor, then it goes on top of the stack (second set of statements); however, global (window/process) cursors have highest priority, so if just raised the view cursor, then we must reraise the global cursor (last test) */ + + /* If we have a popup, we stack the cursor windows below it. */ if (plainCur->posted != imself) { if (cursordebug) printf("xim_PostCursor: raising cursor window %X for cursor %X\n", reqCursor->Xw, reqCursor); ! if (self->popup_active) { ! changes.sibling = xim2window(self->popup_active); ! changes.stack_mode = Below; ! XConfigureWindow(xim2display(self), reqCursor->Xw, (CWSibling | CWStackMode), &changes); ! } else ! XRaiseWindow(xim2display(self), reqCursor->Xw); if (ProcessCursor || imself->WindowCursor) { ! if (self->popup_active) { ! changes.sibling = xim2window(self->popup_active); ! changes.stack_mode = Below; ! XConfigureWindow(xim2display(self), self->globalCursorWindow, (CWSibling | CWStackMode), &changes); ! } else ! XRaiseWindow(xim2display(self), self->globalCursorWindow); if (cursordebug) printf("xim_PostCursor: global cursors being used, so raising global cursors over %X(window %X)\n", reqCursor, reqCursor->Xw); } } *************** *** 2529,2535 **** */ XDefineCursor(xim2display(self), self->globalCursorWindow, self->globalXCursor); if (cursordebug) printf("(xim)updateGlobalCursor: raising global window %X for global cursor %X\n", self->globalCursorWindow, self->globalXCursor); ! XRaiseWindow(xim2display(self), self->globalCursorWindow); XMapWindow(xim2display(self), self->globalCursorWindow); } --- 3241,3255 ---- */ XDefineCursor(xim2display(self), self->globalCursorWindow, self->globalXCursor); if (cursordebug) printf("(xim)updateGlobalCursor: raising global window %X for global cursor %X\n", self->globalCursorWindow, self->globalXCursor); ! /* If we have a popup, we stack the global cursor window below it. */ ! if (self->popup_active) { ! XWindowChanges changes; ! ! changes.sibling = xim2window(self->popup_active); ! changes.stack_mode = Below; ! XConfigureWindow(xim2display(self), self->globalCursorWindow, (CWSibling | CWStackMode), &changes); ! } else ! XRaiseWindow(xim2display(self), self->globalCursorWindow); XMapWindow(xim2display(self), self->globalCursorWindow); } *************** *** 3425,3431 **** if ( ! self->CurrentlyMapped) return; /* And make sure if we move the pointer there that the pointer lands on it! */ ! XRaiseWindow(xim2display(self), xim2window(self)); /* And move the mouse there */ XWarpPointer(xim2display(self), NULL, xim2window(self), 0,0,0,0,0,0); /* be sure it gets the input focus */ --- 4145,4151 ---- if ( ! self->CurrentlyMapped) return; /* And make sure if we move the pointer there that the pointer lands on it! */ ! XRaiseWindow(xim2display(self), TOPLEVELWINDOW(self)); /* And move the mouse there */ XWarpPointer(xim2display(self), NULL, xim2window(self), 0,0,0,0,0,0); /* be sure it gets the input focus */ *************** *** 3446,3456 **** /* we currently don't think the window is mapped. Let's make sure This code is really here to try to make the X11R3 twm expose the window if iconified -wjh */ ! XUnmapWindow(D, xim2window(self)); /* does this help? -wjh */ } ! XMapWindow(D, xim2window(self)); ! XRaiseWindow(D, xim2window(self)); XFlush(D); } --- 4166,4195 ---- /* we currently don't think the window is mapped. Let's make sure This code is really here to try to make the X11R3 twm expose the window if iconified -wjh */ ! XUnmapWindow(D, TOPLEVELWINDOW(self)); /* does this help? -wjh */ } ! XMapRaised(D, TOPLEVELWINDOW(self)); XFlush(D); + + /* If we're a popup, put us into the parent's chain + of active popups at the end. */ + /* If we're already in the chain, just return */ + if (self->popup_parent) { + XWindowChanges changes; + int mask = 0; + struct xim *parent = self->popup_parent; + + while (parent->popup_active) { + if (parent->popup_active == self) return; + parent = parent->popup_active; + changes.sibling = xim2window(parent); + changes.stack_mode = Above; + mask = CWSibling | CWStackMode; + } + if (mask) XConfigureWindow(xim2display(self), TOPLEVELWINDOW(self), mask, &changes); + parent->popup_active = self; + } + } *************** *** 3463,3472 **** { XClientMessageEvent cmsg; cmsg.display = xim2display(self); cmsg.type = ClientMessage; cmsg.message_type = wmchangestate; ! cmsg.window = xim2window(self); cmsg.send_event = TRUE; cmsg.format = 32; cmsg.data.l[0] = IconicState; --- 4202,4214 ---- { XClientMessageEvent cmsg; + /* If we're a popup, just return without doing anything */ + if (self->popup_parent) return; + cmsg.display = xim2display(self); cmsg.type = ClientMessage; cmsg.message_type = wmchangestate; ! cmsg.window = TOPLEVELWINDOW(self); cmsg.send_event = TRUE; cmsg.format = 32; cmsg.data.l[0] = IconicState; *************** *** 3485,3502 **** xim__VanishWindow(self) struct xim *self; { ! XUnmapEvent unmapnotify; ! ! XUnmapWindow(xim2display(self),xim2window(self)); ! unmapnotify.display = xim2display(self); ! unmapnotify.type = UnmapNotify; ! unmapnotify.window = xim2window(self); ! unmapnotify.event = RootWindow(xim2display(self), xim2screen(self)); ! unmapnotify.send_event = TRUE; ! unmapnotify.from_configure = FALSE; ! XSendEvent(xim2display(self), unmapnotify.event, FALSE, ! (SubstructureRedirectMask | SubstructureNotifyMask), (XEvent *)&unmapnotify); XFlush(xim2display(self)); self->CurrentlyMapped = FALSE; --- 4227,4259 ---- xim__VanishWindow(self) struct xim *self; { ! XUnmapWindow(xim2display(self),TOPLEVELWINDOW(self)); ! /* If we're a popup, remove ourself from the popup ! chain, and don't bother sending our unmap notify event */ ! if (self->popup_parent) { ! struct xim *cur, *prev; ! ! cur = prev = self->popup_parent; ! while ((cur = cur->popup_active) != NULL) { ! if (cur == self) { ! break; ! } ! prev = cur; ! } ! if (cur == self) prev->popup_active = self->popup_active; ! } else { ! XUnmapEvent unmapnotify; ! ! unmapnotify.display = xim2display(self); ! unmapnotify.type = UnmapNotify; ! unmapnotify.window = TOPLEVELWINDOW(self); ! unmapnotify.event = RootWindow(xim2display(self), xim2screen(self)); ! unmapnotify.send_event = TRUE; ! unmapnotify.from_configure = FALSE; ! XSendEvent(xim2display(self), unmapnotify.event, FALSE, ! (SubstructureRedirectMask | SubstructureNotifyMask), (XEvent *)&unmapnotify); ! } XFlush(xim2display(self)); self->CurrentlyMapped = FALSE; *** atk/basics/x/xim.ch Wed Nov 22 11:47:27 1989 --- atk/basics/x/xim.ch.NEW Tue May 28 18:18:12 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/x/RCS/xim.ch,v 1.9 89/06/12 16:55:14 wjh Exp $ */ /* $ACIS:im.ch 1.5$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/x/RCS/xim.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidxim_H = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/x/RCS/xim.ch,v 1.9 89/06/12 16:55:14 wjh Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* im.H --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.ch,v 1.13 1991/05/28 22:16:35 gk5g Exp $ */ /* $ACIS:im.ch 1.5$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidxim_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/xim.ch,v 1.13 1991/05/28 22:16:35 gk5g Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* im.H *************** *** 18,25 **** #define xim_PRORGAMMERVERSION 1 - - struct pane { char * paneStr; long priority; --- 18,23 ---- *************** *** 57,63 **** --- 55,68 ---- VanishWindow(); HandleRedraw(); CreateWindow(char * host) returns boolean; + CreateTransientWindow(struct im *other) returns boolean; + CreateOverrideWindow(struct im *other) returns boolean; RedrawWindow(); + Hit (enum view_MouseAction action, long x, long y, long clicks) returns struct view *; + + macrooverrides: + SupportsTransient(self) (TRUE) + SupportsOverride(self) (TRUE) classprocedures: InitializeClass() returns boolean; *************** *** 70,76 **** data: struct pane *topPane; struct mouseStatus *MouseFacts; ! struct cmenu *menu; struct mlcacheNode *mlcache; struct cacheregion *freeRegions, *activeRegions; Cursor StandardXCursor; --- 75,81 ---- data: struct pane *topPane; struct mouseStatus *MouseFacts; ! struct cmenu *cmenu; struct mlcacheNode *mlcache; struct cacheregion *freeRegions, *activeRegions; Cursor StandardXCursor; *************** *** 81,85 **** --- 86,99 ---- long backgroundPixel; boolean EverMapped; /* hack for first XMapWindow (for messages) */ boolean CurrentlyMapped; + struct xim *popup_active; /* contains pointer to override redirect im if any */ + struct xim *popup_parent; /* Null if this xim is NOT a popup */ + struct menubar *menu; + boolean menubaron,cmenuson; + Window menuWindow; + struct mbinit *mbi; + char **PopupMenuList; + int PopupMenuListCount; + struct cardorder *CardOrder, *MenubarCardOrder, *PopupCardOrder; }; *** atk/basics/x/menubar.c Mon Jun 10 11:56:16 1991 --- atk/basics/x/menubar.c.NEW Mon Jun 10 11:30:50 1991 *************** *** 0 **** --- 1,1536 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1990,1991 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/menubar.c,v 1.14 1991/06/10 15:09:23 rr2b Exp $ */ + /* $ACIS:im.c 1.6$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/menubar.c,v $ */ + + #ifndef lint + char *menubar_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/menubar.c,v 1.14 1991/06/10 15:09:23 rr2b Exp $"; + #endif /* lint */ + + #include + #include + #include + #include + #include + #include + #include + #include "menubar.h" + + #define MOREMENUPRIORITY 999 + + #define MENUEVENTS (LeaveWindowMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask) + + #define MBLOCKSIZE 8 + + #define FONTHEIGHT(f) (f->max_bounds.ascent + f->max_bounds.descent) + + #define HSPACING(x) (12 + 2*(x)) + + #define ITEMHEIGHT(mb,m) (FONTHEIGHT((mb)->mbi->prefs->itemfont) + 2*(mb)->mbi->prefs->depth) + + #define ITEMASCENT(mb,m) ((mb)->mbi->prefs->itemfont->max_bounds.ascent + (mb)->mbi->prefs->depth) + + #define ITEMDESCENT(mb,m) ((mb)->mbi->prefs->itemfont->max_bounds.descent) + #define TITLEDESCENT(mb) ((mb)->mbi->prefs->titlefont->max_bounds.descent) + + #define PADDING(mb) 2 + + #define VSPACE(mb, m) ((mb)->mbi->prefs->spacing) + + #define SHADOWWIDTH(mb) ((mb)->mbi->prefs->depth + PADDING(mb)) + + #define CARDHEIGHT(mb, m) (SHADOWWIDTH(mb)*2 + (m)->nitems*(VSPACE(mb, m) + ITEMHEIGHT(mb, m))) + + #undef ABS + #define ABS(x) (((x)<0)?-(x):(x)) + + #define ITEMACTIVE(it) (it->active && (!it->submenu ||((struct tmenu *)it->data)->nitems>0)) + + static long grayImage[] = {0x55555555, + 0xAAAAAAAA, + 0x55555555, + 0xAAAAAAAA, + 0x55555555, + 0xAAAAAAAA, + 0x55555555, + 0xAAAAAAAA + }; + + static char *defaultgetdefault(dpy, pname) + Display *dpy; + char *pname; + { + fprintf(stderr,"Warning: no getdefault function defined for menubar!\n"); + return NULL; + } + + static GetDefaultsFunction getdefault=(GetDefaultsFunction)defaultgetdefault; + + static int getdefaultint(dpy, pname, def) + Display *dpy; + char *pname; + int def; + { + char *v; + v=getdefault(dpy,pname); + if(!v) return def; + else return atoi(v); + } + + GetDefaultsFunction mb_SetGetDefault(func) + GetDefaultsFunction func; + { + GetDefaultsFunction x=getdefault; + getdefault=func; + return x; + } + + static char *strdup(x) + char *x; + { + char *p=(char *)malloc(strlen(x) + 1); + if(!p) return x; + strcpy(p, x); + return p; + } + + static struct prefs *prefs=NULL; + + static void ClearMenu(mb,m) + struct menubar *mb; + struct tmenu *m; + { + struct titem *i=m->items; + while(i) { + struct titem *o=i->next; + free(i->name); + free(i); + i=o; + } + m->iwidth=m->mw + mb->mbi->prefs->iconfont->max_bounds.lbearing + mb->mbi->prefs->iconfont->max_bounds.rbearing + 10; + m->nitems=0; + m->items=NULL; + } + + static void DestroyMenu(mb,m) + struct menubar *mb; + struct tmenu *m; + { + ClearMenu(mb,m); + if(m->lookup) free(m->lookup); + free(m->title); + free(m); + } + + + static struct tmenu *FindMenu(mb,title) + struct menubar *mb; + char *title; + { + struct tmenu **t=mb->menus; + int i; + if(!title) title=mb->mainmenu; + for(i=0;inmenus && strcmp((*t)->title,title);i++,t++); + if(inmenus) return *t; + else return NULL; + } + + static struct titem *FindItem(t,name) + struct tmenu *t; + char *name; + { + struct titem *w=t->items; + while(w && strcmp(w->name,name)) w=w->next; + return w; + } + + static void UpdateGeometry(mb) + struct menubar *mb; + { + Window root; + unsigned int bw,depth; + XGetGeometry(mb->mbi->dpy,mb->mbi->window,&root,&(mb->mbi->x), &(mb->mbi->y), &(mb->mbi->w), &(mb->mbi->h),&bw,&depth); + XTranslateCoordinates(mb->mbi->dpy, mb->mbi->window, RootWindow(mb->mbi->dpy, DefaultScreen(mb->mbi->dpy)), 0, 0, &(mb->mbi->x), &(mb->mbi->y), &root); + } + + + static struct tmenu *CreateMenu(mb,title,prio) + struct menubar *mb; + char *title; + int prio; + { + struct tmenu *t=(struct tmenu *)malloc(sizeof(struct tmenu)); + if(!t) return NULL; + if(!title) title=mb->mainmenu; + t->title=strdup(title); + t->titlelen=strlen(title); + t->prio=ABS(prio); + t->nitems=0; + t->items=NULL; + t->mw=XTextWidth(mb->mbi->prefs->titlefont, title, t->titlelen); + t->h=FONTHEIGHT(mb->mbi->prefs->titlefont); + t->iwidth=t->mw + mb->mbi->prefs->iconfont->max_bounds.lbearing + mb->mbi->prefs->iconfont->max_bounds.rbearing + 10; + t->next=NULL; + t->lookup=NULL; + if(mb->nmenus==mb->mmenus) { + struct tmenu **t2; + mb->mmenus+=MBLOCKSIZE; + t2=(struct tmenu **)malloc(mb->mmenus*sizeof(struct tmenu *)); + bcopy(mb->menus, t2, mb->nmenus*sizeof(struct tmenu *)); + free(mb->menus); + mb->menus=t2; + } + mb->menus[mb->nmenus++]=t; + mb->resort=True; + return t; + } + + static struct titem *AddItem(mb,t,item,prio,submenu,data) + struct menubar *mb; + struct tmenu *t; + char *item; + int prio; + int submenu; + char *data; + { + struct titem *i; + struct titem *w=t->items; + + int width=XTextWidth(mb->mbi->prefs->itemfont,item,strlen(item)) + mb->mbi->prefs->iconfont->max_bounds.lbearing + mb->mbi->prefs->iconfont->max_bounds.rbearing +10; + + if(i=FindItem(t,item)) { + i->data=data; + i->submenu=submenu; + if(submenu) { + i->data=(char *)FindMenu(mb, data); + if(!i->data) fprintf(stderr,"Warning: submenu %s not found\n",data?data:"(NULL)"); + } else i->data=data; + i->prio=prio; + + return i; + } + + i=(struct titem *)malloc(sizeof(struct titem)); + if(!i) return NULL; + i->name=strdup(item); + i->submenu=submenu; + i->active=0; + + if(submenu) { + i->data=(char *)FindMenu(mb,data); + if(!i->data) fprintf(stderr,"Warning: submenu %s not found\n",data?data:"(NULL)"); + } else i->data=data; + i->prio=prio; + + if(w) { + if(i->prioprio) { + i->next=w; + t->items=i; + } else { + struct titem *max=NULL; + while(w) { + if(i->prio>=w->prio) max=w; + w=w->next; + } + i->next=max->next; + max->next=i; + } + } else { + t->items=i; + i->next=NULL; + } + t->nitems++; + + if(width>t->iwidth) t->iwidth=width; + + return i; + } + + void mb_AddSelection(mb,title,tprio,item,iprio,submenu,data) + struct menubar *mb; + char *title, *item; + int tprio,iprio; + int submenu; + char *data; + { + struct tmenu *t=FindMenu(mb,title); + + if(tprio>100) tprio=100; + if(iprio>100) iprio=100; + + /* don't let clients mess with the more menu... */ + if(t==mb->moremenu) return; + + if(!t) { + t=CreateMenu(mb,title,tprio); + if(!t) return; + + } else { + if(tprio>=0 && tprio!=t->prio && t->prio!=MOREMENUPRIORITY) { + t->prio=tprio; + mb->resort=True; + } + } + (void) AddItem(mb,t,item,iprio,submenu,data); + } + + void mb_SetItemStatus(mb,title,item,status) + struct menubar *mb; + char *title,*item; + int status; + { + struct tmenu *m; + struct titem *t; + + m=FindMenu(mb,title); + if(m==NULL || m==mb->moremenu) return; + + t=FindItem(m,item); + + if(t==NULL) return; + + t->active=status; + } + + + + char *mb_DeleteSelection(mb,title,item) + struct menubar *mb; + char *title,*item; + { + char *data=NULL; + struct tmenu *t=FindMenu(mb,title); + register struct titem *n,*n2; + + if(!t || !t->items || t==mb->moremenu) return NULL; + if(!strcmp(t->items->name,item)) { + n=t->items->next; + data=t->items->data; + free(t->items->name); + free(t->items); + t->items=n; + t->nitems--; + } else { + n=t->items; + while(n->next && strcmp(n->next->name,item)) n=n->next; + if(n->next) { + n2=n->next; + n->next=n2->next; + data=n2->data; + free(n2->name); + free(n2); + t->nitems--; + } + } + return data; + } + + static int mcomp(a,b) + struct tmenu **a,**b; + { + return (*a)->prio - (*b)->prio; + } + + #define SetSeg(seg, x, y, xb, yb) (seg).x1=(x);(seg).y1=(y);(seg).x2=(xb);(seg).y2=(yb) + + static void SelectRegion(mb,win,gcs,x,y,w,h) + struct menubar *mb; + Window win; + struct gcs *gcs; + int x,y,w,h; + { + static int oldsize=0; + static XSegment *segs=NULL; + int i; + XGCValues gcv; + + if(mb->mbi->prefs->depth==0) return; + + if(segs==NULL) { + segs=(XSegment *)malloc(sizeof(XSegment)*2*mb->mbi->prefs->depth); + if(segs==NULL) return; + oldsize=mb->mbi->prefs->depth; + } else if(oldsize!=mb->mbi->prefs->depth) { + segs=(XSegment *)realloc(segs,sizeof(XSegment)*2*mb->mbi->prefs->depth); + if(segs==NULL) return; + } + + + for(i=0;imbi->prefs->depth;i++) { + SetSeg(segs[i*2], x, y + i, x + w - 1 - i, y + i); + SetSeg(segs[i*2 + 1], x + i, y, x + i, y + h - 1 - i); + } + + + XSetForeground(mb->mbi->dpy, gcs->select, gcs->topshadowPixel); + + gcv.stipple=gcs->topshadowPixmap; + gcv.fill_style=(gcs->topshadowPixmap==None) ? FillSolid:FillStippled; + XChangeGC(mb->mbi->dpy, gcs->select, GCFillStyle | ((gcs->topshadowPixmap!=None)?GCStipple:0), &gcv); + + XDrawSegments(mb->mbi->dpy,win, gcs->select,segs, mb->mbi->prefs->depth*2); + + XSetForeground(mb->mbi->dpy, gcs->select, gcs->bottomshadowPixel); + gcv.stipple=gcs->bottomshadowPixmap; + gcv.fill_style=(gcs->bottomshadowPixmap==None) ? FillSolid:FillStippled; + XChangeGC(mb->mbi->dpy, gcs->select,GCFillStyle | ((gcs->bottomshadowPixmap!=None)? GCStipple:0), &gcv); + + for(i=0; imbi->prefs->depth; i++) { + + SetSeg(segs[i*2],x + w - 1 - i, y + h - 1, x + w - 1 - i, y + 1 + i); + SetSeg(segs[i*2 + 1], x + w - 1, y + h - 1 - i, x + 1 + i, y + h - 1 - i); + } + XDrawSegments(mb->mbi->dpy, win, gcs->select, segs, mb->mbi->prefs->depth*2); + } + + static void UnSelectRegion(mb, win, gcs, x, y, w, h) + struct menubar *mb; + Window win; + struct gcs *gcs; + int x, y, w, h; + { + static int oldsize=0; + static XSegment *segs=NULL; + int i; + + if(mb->mbi->prefs->depth==0) return; + if(segs==NULL) { + segs=(XSegment *)malloc(sizeof(XSegment)*4*mb->mbi->prefs->depth); + if(segs==NULL) return; + oldsize=mb->mbi->prefs->depth; + } else if(oldsize!=mb->mbi->prefs->depth) { + + segs=(XSegment *)realloc(segs,sizeof(XSegment)*4*mb->mbi->prefs->depth); + if(segs==NULL) return; + oldsize=mb->mbi->prefs->depth; + } + + for(i=0;imbi->prefs->depth;i++) { + SetSeg(segs[i*4],x + w - 1 - i,y + h-1,x + w-1-i,y + 1 + i); + SetSeg(segs[i*4 + 1],x + w-1,y + h-1-i,x + 1 + i,y + h-1-i); + SetSeg(segs[i*4 + 2],x,y + i,x + w-1-i,y + i); + SetSeg(segs[i*4 + 3],x + i,y,x + i,y + h-1-i); + } + XDrawSegments(mb->mbi->dpy, win, gcs->selecterase, segs, mb->mbi->prefs->depth*4); + } + + static void SetTitleSelection(mb, menu, onoff) + struct menubar *mb; + struct tmenu *menu; + int onoff; + { + if(menu) { + if(onoff) + SelectRegion(mb, mb->mbi->window, &mb->mbi->titlegcs, menu->mx - SHADOWWIDTH(mb) , SHADOWWIDTH(mb), menu->mw + 2*SHADOWWIDTH(mb), mb->mbi->prefs->menubarheight - SHADOWWIDTH(mb)*2); + else + UnSelectRegion(mb, mb->mbi->window, &mb->mbi->titlegcs, menu->mx - SHADOWWIDTH(mb) , SHADOWWIDTH(mb), menu->mw + 2*SHADOWWIDTH(mb), mb->mbi->prefs->menubarheight - SHADOWWIDTH(mb)*2); + } + + SelectRegion(mb, mb->mbi->window, &mb->mbi->titlegcs, 0, 0,mb->mbi->w, mb->mbi->prefs->menubarheight); + + } + + + void mb_RefitMenubar(mb) + struct menubar *mb; + { + int i, x= 2*SHADOWWIDTH(mb); + int fullflag=False; + + if(mb->resort) { + mb->resort=False; + qsort(mb->menus, mb->nmenus, sizeof(struct tmenu *), mcomp); + } + + UpdateGeometry(mb); + + mb->overcount=0; + mb->overflow=NULL; + + ClearMenu(mb, mb->moremenu); + + for(i=0; inmenus; i++) { + int fitflag=False; + + mb->menus[i]->mx=x; + + if((mb->menus[i]->nitems || i==0) && (x + mb->menus[i]->mw + HSPACING(SHADOWWIDTH(mb)) + mb->morewidth <= mb->mbi->w - SHADOWWIDTH(mb) - 2 && !fullflag || mb->menus[i]->prio==MOREMENUPRIORITY)) { + fitflag=True; + mb->menus[i]->next=NULL; + x+=mb->menus[i]->mw + HSPACING(SHADOWWIDTH(mb)); + } + + if(!fitflag && (mb->menus[i]->nitems || i==0)) { + struct titem *ti; + fullflag=True; + mb->menus[i]->next=mb->overflow; + mb->overflow=mb->menus[i]; + mb->overcount++; + ti=AddItem(mb, mb->moremenu, mb->menus[i]->title , mb->menus[i]->prio, True, (char *)mb->menus[i]->title); + ti->active=True; + } + } + } + + void mb_RedrawMenubar(mb, clear) + register struct menubar *mb; + Bool clear; + { + int i, y= mb->mbi->prefs->menubarheight - 2*SHADOWWIDTH(mb) - TITLEDESCENT(mb); + XGCValues gcv; + int lastgcmode=(-1); + + if(clear) { + XClearArea(mb->mbi->dpy, mb->mbi->window,SHADOWWIDTH(mb), SHADOWWIDTH(mb), mb->mbi->w-2*SHADOWWIDTH(mb), mb->mbi->prefs->menubarheight-2*SHADOWWIDTH(mb), False); + } + + + for(i=0; inmenus; i++) { + struct tmenu *t=mb->menus[i]; + if(i>=mb->nmenus-mb->overcount-1) { + i=mb->nmenus; + t=mb->moremenu; + } + if(t->nitems>0) { + if(lastgcmode!=1) { + gcv.fill_style=FillSolid; + gcv.foreground=mb->mbi->titlegcs.whitePixel; + XChangeGC(mb->mbi->dpy, mb->mbi->titlegcs.draw, GCFillStyle|GCForeground, &gcv); + lastgcmode=1; + } + XDrawString(mb->mbi->dpy, mb->mbi->window, mb->mbi->titlegcs.draw, t->mx, y, t->title, t->titlelen); + + } else if(mb->moremenu==t || i==0) { + + if(lastgcmode!=0) { + gcv.stipple=mb->mbi->titlegcs.grayStipple; + + gcv.fill_style= (gcv.stipple!=None) ? FillStippled : FillSolid; + gcv.foreground=mb->mbi->titlegcs.grayPixel; + + XChangeGC(mb->mbi->dpy, mb->mbi->titlegcs.draw, GCFillStyle | GCForeground | ((gcv.stipple!=None)?GCStipple:0), &gcv); + + lastgcmode=0; + } + XDrawString(mb->mbi->dpy, mb->mbi->window, mb->mbi->titlegcs.draw, t->mx, y, t->title, t->titlelen); + } + + } + + if(lastgcmode!=1) { + + gcv.fill_style=FillSolid; + gcv.foreground=mb->mbi->titlegcs.whitePixel; + XChangeGC(mb->mbi->dpy, mb->mbi->titlegcs.draw, GCFillStyle|GCForeground, &gcv); + } + + SetTitleSelection(mb, mb->lastmenu, True); + } + + void DrawMenuItems(mb,t) + struct menubar *mb; + struct tmenu *t; + { + + struct titem *it=t->items; + int x= 2*SHADOWWIDTH(mb), y = ITEMASCENT(mb, t) + SHADOWWIDTH(mb) + VSPACE(mb, t)/2; + int count=0; + + if(t->lookup) + t->lookup=(struct titem **)realloc(t->lookup,t->nitems*sizeof(struct titem *)); + else + t->lookup=(struct titem **)malloc(t->nitems*sizeof(struct titem *)); + + XMapRaised(mb->mbi->dpy, t->window); + XClearWindow(mb->mbi->dpy, t->window); + + SelectRegion(mb, t->window, &t->gcs, 0, 0, t->ww, t->wh); + while(it) { + int lastgcmode=99; + XGCValues gcv; + it->y=y; + if(ITEMACTIVE(it)) { + if(lastgcmode!=1) { + gcv.fill_style=FillSolid; + gcv.foreground=t->gcs.whitePixel; + XChangeGC(mb->mbi->dpy, t->gcs.draw, GCFillStyle | GCForeground, &gcv); + lastgcmode=1; + } + } else { + if(lastgcmode!=0) { + gcv.stipple=t->gcs.grayStipple; + + gcv.fill_style= (gcv.stipple!=None) ? FillStippled : FillSolid; + gcv.foreground=t->gcs.grayPixel; + + XChangeGC(mb->mbi->dpy, t->gcs.draw, GCFillStyle | GCForeground | ((gcv.stipple!=None)?GCStipple:0), &gcv); + + lastgcmode=0; + } + } + + XDrawString(mb->mbi->dpy, t->window, t->gcs.draw, x, y, it->name, strlen(it->name)); + + gcv.font=mb->mbi->prefs->iconfont->fid; + + if(it->submenu) { + char tmp='W' + ((t->vert>0)?0:1)*2 + ((t->horiz>0)?0:1); + XChangeGC(mb->mbi->dpy, t->gcs.draw, GCFont, &gcv); + XDrawString(mb->mbi->dpy,t->window, t->gcs.draw, x + t->iwidth - mb->mbi->prefs->iconfont->max_bounds.rbearing - 4 , y, &tmp,1); + + gcv.font=mb->mbi->prefs->itemfont->fid; + + XChangeGC(mb->mbi->dpy, t->gcs.draw, GCFont, &gcv); + } + y+=ITEMHEIGHT(mb, t) + VSPACE(mb, t); + + t->lookup[count++]=it; + it=it->next; + } + } + + #define POS_UP(mb,m1,m2,ya,inum) ((ya) + 2*SHADOWWIDTH(mb) + (ITEMHEIGHT(mb, (m1)) + VSPACE(mb, (m1)))*((inum)+1) - VSPACE(mb, (m1))/2 - CARDHEIGHT(mb, m2)) + + #define POS_DOWN(mb, m1, m2, ya, inum) ((ya) + 2*SHADOWWIDTH(mb) + (ITEMHEIGHT(mb, m1) + VSPACE(mb, m1))*(inum)) + + static void ComputeMenuPositioning(mb,m,x,y,w,h) + struct menubar *mb; + struct tmenu *m; + int *x,*y,*w,*h; + { + int displayHeight=DisplayHeight(mb->mbi->dpy, DefaultScreen(mb->mbi->dpy)); + int displayWidth=DisplayWidth(mb->mbi->dpy, DefaultScreen(mb->mbi->dpy)); + + int c; + int lossageup, lossagedown; + int extrawidth; + struct titem *it; + + *h= CARDHEIGHT(mb, m); + + extrawidth=lossageup=lossagedown=0; + for(c=0,it=m->items; it; it=it->next,c++) { + if(it->submenu) { + struct tmenu *t=(struct tmenu *)it->data; + int toppos=POS_UP(mb, m, t, mb->mbi->y + SHADOWWIDTH(mb) - *h, c); + int botpos=POS_DOWN(mb, m, t, mb->mbi->y + mb->mbi->prefs->menubarheight - SHADOWWIDTH(mb), c) + CARDHEIGHT(mb, t); + if(toppos<0) lossageup-=toppos; + if(botpos>displayHeight) lossagedown+=botpos-displayHeight; + if(t->iwidth + 4*SHADOWWIDTH(mb) > extrawidth) extrawidth=t->iwidth + 4*SHADOWWIDTH(mb); + } + } + + *x=mb->mbi->x + m->mx - VSPACE(mb, m)/2 - SHADOWWIDTH(mb); + if(*x<0) *x=0; + + *w=m->iwidth + 4*SHADOWWIDTH(mb); + + if(*x + *w>displayWidth) { + + *x=displayWidth - *w; + m->horiz=(-1); + + } else { + + if(*x + *w + extrawidth>displayWidth) m->horiz=(-1); + else m->horiz=1; + + } + + if(lossageup == 0 && lossagedown == 0) { + int downpos=mb->mbi->y + mb->mbi->prefs->menubarheight - SHADOWWIDTH(mb); + int uppos=mb->mbi->y + SHADOWWIDTH(mb) - CARDHEIGHT(mb, m); + + if(downpos + CARDHEIGHT(mb, m) > displayHeight) lossagedown+=downpos + CARDHEIGHT(mb, m) - displayHeight; + if(uppos<0) lossageup-=uppos; + } + + if(lossageupy=(*y)=mb->mbi->y + SHADOWWIDTH(mb) - CARDHEIGHT(mb, m); + m->vert=(-1); + } else { + m->y=(*y)=mb->mbi->y + mb->mbi->prefs->menubarheight - SHADOWWIDTH(mb); + m->vert=1; + } + } + + static void BringUpMenu(mb,ex,ey) + struct menubar *mb; + int ex,ey; + { + int i; + int x,y; + int w,h; + + struct tmenu *t; + + for(i=0;inmenus;i++) { + t=mb->menus[i]; + if(i>=mb->nmenus-mb->overcount-1) { + i=mb->nmenus-1; + t=mb->moremenu; + } + if(ex>t->mx && exmx+t->mw && t->nitems) + break; + } + if(i>=mb->nmenus) return; + + if(mb->lastmenu==t) return; + + SetTitleSelection(mb, mb->lastmenu, False); + + if(mb->lastmenu && mb->lastmenu->next!=NULL) XUnmapWindow(mb->mbi->dpy, mb->lastmenu->next->window); + + mb->lastmenu=t; + mb->lastmenu->lastitem=(-1); + mb->lastmenu->gcs=mb->mbi->cardgcs; + mb->lastmenu->window=mb->mbi->menuw; + mb->lastmenu->next=NULL; + + SetTitleSelection(mb, mb->lastmenu, True); + + ComputeMenuPositioning(mb, mb->lastmenu, &x, &y, &w, &h); + + mb->lastmenu->ww=w; + mb->lastmenu->wh=h; + + XMoveResizeWindow(mb->mbi->dpy, mb->lastmenu->window, x, y, mb->lastmenu->ww, mb->lastmenu->wh); + + mb->lastmenu->x=x - mb->mbi->x; + mb->lastmenu->y=y; + + DrawMenuItems(mb,t); + } + + #ifdef __STDC__ + static Bool eventp(Display *dpy, XEvent *event, char *args) + #else + static Bool eventp(dpy, event, args) + Display *dpy; + XEvent *event; + char *args; + #endif + { + struct menubar *mb=(struct menubar *)args; + struct tmenu *menu=mb->lastmenu; + + while(menu && (menu->window!=((XAnyEvent *)event)->window)) menu=menu->next; + + mb->lasteventin=menu; + + switch (event->type) { + case Expose: + return True; + + case ButtonPress: + case ButtonRelease: + return True; + + case MotionNotify: + return True/* (((XMotionEvent *) event)->window == mb->mbi->window || menu) */; + + case LeaveNotify: + return (Bool)menu || ((XAnyEvent *)event)->window==mb->mbi->window; + + case EnterNotify: + return (Bool)menu || ((XAnyEvent *)event)->window==mb->mbi->window; + + default: + return False; + } + } + + static void BringUpSubMenu(mb, lm, inum) + struct menubar *mb; + struct tmenu *lm; + int inum; + { + struct titem *item=lm->lookup[inum]; + struct tmenu *submenu=(struct tmenu *)item->data; + + submenu->lastitem=(-1); + submenu->gcs=mb->mbi->cmcgcs; + submenu->window=mb->mbi->cascadew; + submenu->next=NULL; + submenu->w=submenu->iwidth + 2*SHADOWWIDTH(mb); + submenu->h=FONTHEIGHT(mb->mbi->prefs->itemfont); + + submenu->ww=submenu->w + 2*SHADOWWIDTH(mb); + submenu->wh=CARDHEIGHT(mb,submenu); + + if(lm->vert==1) submenu->y=lm->y + 2*SHADOWWIDTH(mb) + (ITEMHEIGHT(mb,lm) + VSPACE(mb, lm))*inum; + else submenu->y=lm->y + 2*SHADOWWIDTH(mb) + (ITEMHEIGHT(mb,lm) + VSPACE(mb, lm))*(inum+1) - VSPACE(mb, lm)/2 - CARDHEIGHT(mb, submenu); + + if(submenu->y<0) submenu->y=0; + if(submenu->y+submenu->wh > DisplayHeight(mb->mbi->dpy, DefaultScreen(mb->mbi->dpy))) { + submenu->y+= DisplayHeight(mb->mbi->dpy, DefaultScreen(mb->mbi->dpy)) - submenu->y - submenu->wh; + } + + if(lm->horiz==1) submenu->x=mb->mbi->x + lm->x + lm->ww - SHADOWWIDTH(mb); + else submenu->x=mb->mbi->x + lm->x - submenu->w - SHADOWWIDTH(mb); + + + XMoveResizeWindow(mb->mbi->dpy, submenu->window, submenu->x, submenu->y, submenu->ww, submenu->wh); + + if(!lm->next) XMapRaised(mb->mbi->dpy, submenu->window); + SelectRegion(mb, lm->window, &lm->gcs, 0, 0, lm->ww, lm->wh); + + lm->next=submenu; + + DrawMenuItems(mb, submenu); + return; + } + + static void SetItemSelection(mb, lm, item, onoff) + struct menubar *mb; + struct tmenu *lm; + int item; + int onoff; + { + if(onoff) { + SelectRegion(mb, lm->window, &lm->gcs, SHADOWWIDTH(mb), item*(ITEMHEIGHT(mb, lm) + VSPACE(mb, lm)) + SHADOWWIDTH(mb), 2*SHADOWWIDTH(mb) + lm->iwidth, ITEMHEIGHT(mb, lm) + VSPACE(mb, lm)); + + } else { + + UnSelectRegion(mb, lm->window, &lm->gcs, SHADOWWIDTH(mb), lm->lastitem*(ITEMHEIGHT(mb, lm) + VSPACE(mb, lm)) + SHADOWWIDTH(mb), 2*SHADOWWIDTH(mb) + lm->iwidth, ITEMHEIGHT(mb, lm) + VSPACE(mb, lm)); + } + } + + /* if we're bringing up a new menu wait to see if we get more events first + return values: + 0: timed out, go ahead with MotionNotify processing + 1: found another MotionNotify in the queue put it in the event passed in + 2: data ready on the X display's file descriptor */ + static int WaitTillReady(mb, event) + struct menubar *mb; + XEvent *event; + { + long nfds,fdmask; + if(XCheckMaskEvent(mb->mbi->dpy, MENUEVENTS, event)) + return 1; + fdmask=1<mbi->dpy); + nfds=select(ConnectionNumber(mb->mbi->dpy)+1, &fdmask, 0, 0, &mb->mbi->prefs->activatetime); + if(nfds>0) return 2; + else return 0; + } + + static int HandleInMenu(mb, x, y, didwait) + struct menubar *mb; + int x,y; + int didwait; + { + struct tmenu *lm=mb->lasteventin; + int item=(y - SHADOWWIDTH(mb))/(ITEMHEIGHT(mb, lm) + VSPACE(mb, lm)); + + if(item>=0 && itemnitems && lm->lastitem!=item) { + + if(lm->lookup[item]->submenu && ((struct tmenu *)lm->lookup[item]->data)->nitems>0) { + + if(!didwait) return 1; + BringUpSubMenu(mb, lm, item); + + } else if(lm->next) { + XUnmapWindow(mb->mbi->dpy, lm->next->window); + lm->next=NULL; + } + + if(lm->lastitem>=0) SetItemSelection(mb, lm, lm->lastitem, False); + + if(ITEMACTIVE(lm->lookup[item])) SetItemSelection(mb, lm, item, True); + + lm->lastitem=item; + } + return 0; + } + + /* This macro should be true iff y and h indicate an intersection with the area of the menubar titles themselves instead of just the border around them. */ + #define TITLESINTERSECT(mb,y,h) (((y)>2*SHADOWWIDTH(mb) && (y)<(mb)->mbi->prefs->menubarheight-2*SHADOWWIDTH(mb)) || ((y)2*SHADOWWIDTH(mb) && (y)+(h)<(mb)->mbi->prefs->menubarheight-2*SHADOWWIDTH(mb))) + /* */ + #define GRABPOINTER 1 /* */ + + static void DoMenuLoop(mb) + struct menubar *mb; + { + struct tmenu *itm; + XEvent event; + #ifdef GRABPOINTER + XUngrabPointer(mb->mbi->dpy, CurrentTime); + + if (XGrabPointer(mb->mbi->dpy, mb->mbi->window, True, ButtonReleaseMask | PointerMotionMask | EnterWindowMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) return; + + if(XGrabKeyboard(mb->mbi->dpy, mb->mbi->window, True, GrabModeAsync, GrabModeAsync,CurrentTime) != GrabSuccess) { + + XUngrabPointer(mb->mbi->dpy,CurrentTime); + return; + } + #endif + do { + int needevent=1; + int x,y; + XMotionEvent *me=(XMotionEvent *)&event; + XExposeEvent *ee=(XExposeEvent *)&event; + + if(needevent) XIfEvent(mb->mbi->dpy, &event, eventp, (char *)mb); + else needevent=1; + + switch(event.type) { + /* This is really blecherous: + plan is that WaitTillReady will allow a delay before actually + processing MotionNotifys when they would bring up a new menu + card and also will only process the LAST MotionNotify in the + input queue */ + case MotionNotify: + x=me->x_root-mb->mbi->x; + y=me->y_root-mb->mbi->y; + if(mb->lasteventin) { + if(HandleInMenu(mb, me->x, me->y, False)) { + switch(WaitTillReady(mb, &event)) { + case 0: + HandleInMenu(mb, me->x, me->y, True); + break; + case 1: + needevent=0; + case 2: + continue; + } + } + } else { + switch(WaitTillReady(mb, &event)) { + case 0: + if(y>mb->mbi->prefs->menubarheight || y<0) continue; + BringUpMenu(mb, x, y); + break; + case 1: + needevent=0; + break; + case 2: + break; + } + } + + break; + + case LeaveNotify: + + if(!mb->lasteventin->next && mb->lasteventin->lastitem>=0) { + + SetItemSelection(mb, mb->lasteventin, mb->lasteventin->lastitem, False); + mb->lasteventin->lastitem=(-1); + + } + break; + + case Expose: + if(ee->window == mb->mbi->client) mb->mbi->HandleExpose(ee,mb->mbi->ExposeData); + else { + /* Avoid the relatively expensive menubar redraw if only the border has been exposed */ + if(ee->window == mb->mbi->window && ee->count==0 && TITLESINTERSECT(mb, ee->y, ee->height)) mb_RedrawMenubar(mb, False); + else SetTitleSelection(mb, mb->lastmenu, True); + } + break; + default: + ; + } + } while(event.type!=ButtonRelease); + + SetTitleSelection(mb, mb->lastmenu, False); + #ifdef GRABPOINTER + XUngrabPointer(mb->mbi->dpy, CurrentTime); + XUngrabKeyboard(mb->mbi->dpy, CurrentTime); + #endif + for(itm=mb->lastmenu; itm; itm=itm->next) XUnmapWindow(mb->mbi->dpy, itm->window); + + XFlush(mb->mbi->dpy); + if(mb->lasteventin && mb->lasteventin->lastitem>=0 && !mb->lasteventin->lookup[mb->lasteventin->lastitem]->submenu && ITEMACTIVE(mb->lasteventin->lookup[mb->lasteventin->lastitem])) { + + mb->MenuFunction(mb, mb->lasteventin->lookup[mb->lasteventin->lastitem]->data, mb->data); + + } + + mb->lastmenu=NULL; + } + + void mb_HandleEvent(mbi, mb, event) + struct mbinit *mbi; + struct menubar *mb; + XEvent *event; + { + Window dumb; + XButtonEvent *be=(XButtonEvent *)event; + XConfigureEvent *conf=(XConfigureEvent *)event; + switch(event->type) { + case ConfigureNotify: + mbi->h=conf->height; + + XTranslateCoordinates(mbi->dpy, mbi->window, RootWindow(mbi->dpy, DefaultScreen(mbi->dpy)), 0, 0, &(mbi->x), &(mbi->y), &dumb); + + XResizeWindow(mbi->dpy, mbi->client, conf->width, mbi->h - mbi->prefs->menubarheight); + + if(conf->width!=mbi->w) { + mbi->w=conf->width; + if(mb) mb_RefitMenubar(mb); + } + + break; + case Expose: + case GraphicsExpose: + if(mb) mb_RedrawMenubar(mb, False); + break; + case ButtonPress: + /* UpdateGeometry(mb); */ + if(mb) { + BringUpMenu(mb,be->x, be->y); + DoMenuLoop(mb); + } + break; + default:; + } + } + + + static void SetGCs(mbi,w,gcs,gcv,gcmask) + struct mbinit *mbi; + Window w; + struct gcs *gcs; + XGCValues *gcv; + unsigned long gcmask; + { + unsigned long t; + gcv->function=GXcopy; + gcs->draw=XCreateGC(mbi->dpy, w, gcmask, gcv); + + if(gcs->draw==None) return; + + gcs->select=XCreateGC(mbi->dpy, w, gcmask , gcv); + + if(gcs->select==None) { + XFreeGC(mbi->dpy,gcs->draw); + gcs->draw=None; + return; + } + + t=gcv->foreground; + gcv->foreground=gcv->background; + gcv->background=t; + + + gcs->selecterase=XCreateGC(mbi->dpy, w, gcmask , gcv); + + t=gcv->foreground; + gcv->foreground=gcv->background; + gcv->background=t; + + return; + } + + static void FreeGCs(mbi,gcs) + struct mbinit *mbi; + struct gcs *gcs; + { + if(gcs->draw!=NULL) { + XFreeGC(mbi->dpy, gcs->draw); + gcs->draw=NULL; + } + if(gcs->select!=NULL) { + XFreeGC(mbi->dpy, gcs->select); + gcs->select=NULL; + } + } + + + static XFontStruct *ReallyGetFont(dpy,fontname) + Display *dpy; + char *fontname; + { + XFontStruct *f=XLoadQueryFont(dpy,fontname); + if(f==NULL) { + f=XLoadQueryFont(dpy,"Fixed"); + if(f==NULL) { + fprintf(stderr, "Couldn't even get font \"Fixed\" for the menubar!\n"); + } + } + return f; + } + + static unsigned long ReallyGetColor(dpy,color,desired) + Display *dpy; + char *color; + XColor *desired; + { + XColor maybedesired; + long status; + + if(color==NULL || XParseColor(dpy ,DefaultColormap(dpy, DefaultScreen(dpy)), color, &maybedesired)<=0) { + desired->flags = DoRed | DoGreen | DoBlue; + } else { + *desired=maybedesired; + } + + status = XAllocColor(dpy, DefaultColormap(dpy, DefaultScreen(dpy)), desired); + + if(!status) return BlackPixel(dpy, DefaultScreen(dpy)); + else return desired->pixel; + } + + #define FRACTION(x,y) ((((long)x)*((long)y))/100) + + #define ISWHITE(p,b) ((b).red==(p)->whiteColor.red && (b).blue==(p)->whiteColor.blue && (b).green==(p)->whiteColor.green) + #define ISBLACK(p,b) ((b).red==(p)->blackColor.red && (b).blue==(p)->blackColor.blue && (b).green==(p)->blackColor.green) + #define MAXCOLOR 65535 + static void SetBottomShadow(p, bName, bcolor, background) + struct prefs *p; + char *bName; + XColor *bcolor,*background; + { + if(ISWHITE(p, *background)) { + *bcolor=p->blackColor; + } else if(ISBLACK(p, *background)) { + *bcolor=p->whiteColor; + } else { + bcolor->red=FRACTION(background->red,55); + bcolor->blue=FRACTION(background->blue,55); + bcolor->green=FRACTION(background->green,55); + } + (void)ReallyGetColor(p->dpy, bName, bcolor); + } + + #define GRAYPERCENT 60 + static void SetGray(p, foreground, background, grayName, graycolor, graypixmap) + struct prefs *p; + char *grayName; + XColor *foreground, *background, *graycolor; + Pixmap *graypixmap; + { + if(p->ColorDisplay) { + int r,g,b,c=0; + + /* plan is to find a color with a "brightness" between that of the foreground and the background with a hue approximating the foreground, but I may have this completely wrong. I believe the code below generates basically acceptable if not "correct" results */ + c=((long)foreground->red+foreground->blue+foreground->green-background->red-background->blue-background->green)/3; + if(c>0) { + r=background->red+FRACTION(c, GRAYPERCENT); + g=background->green+FRACTION(c, GRAYPERCENT); + b=background->blue+FRACTION(c, GRAYPERCENT); + if(r > MAXCOLOR) r=MAXCOLOR; + if(g > MAXCOLOR) g=MAXCOLOR; + if(b > MAXCOLOR) b=MAXCOLOR; + } else { + c=ABS(c); + r=background->red-FRACTION(c, GRAYPERCENT); + g=background->green-FRACTION(c, GRAYPERCENT); + b=background->blue-FRACTION(c, GRAYPERCENT); + if(r<0) r=0; + if(g<0) g=0; + if(b<0) b=0; + } + + *graypixmap=None; + graycolor->red=r; + graycolor->green=g; + graycolor->blue=b; + (void)ReallyGetColor(p->dpy, grayName, graycolor); + } else { + *graycolor=(*foreground); + *graypixmap=p->grayPixmap; + } + } + + static void SetPixmap(p, name, pixmap) + struct prefs *p; + char *name; + Pixmap *pixmap; + { + unsigned int width_ret, height_ret; + int x_hot_ret, y_hot_ret; + if(name) { + if(strcmp(name, "None")) { + if(XReadBitmapFile(p->dpy, DefaultRootWindow(p->dpy), name, &width_ret, &height_ret, pixmap, &x_hot_ret, &y_hot_ret)!=0) { + fprintf(stderr, "menubar: failed to read top shadow pixmap\n"); + } + } else *pixmap=None; + } + } + + static void BuildGraphicContext(p, foregroundColor, backgroundColor, grayColor, graypixmapName, topcolorName, toppixmapName, botcolorName, botpixmapName, realForeground, realBackground, realGray, grayPixmap, topShadow, bottomShadow, topshadowPixmap, bottomshadowPixmap) + struct prefs *p; + char *foregroundColor, *backgroundColor; + char *grayColor; + char *graypixmapName, *toppixmapName, *botpixmapName; + char *topcolorName, *botcolorName; + XColor *realForeground, *realBackground; + XColor *realGray; + Pixmap *grayPixmap; + XColor *topShadow; + XColor *bottomShadow; + Pixmap *topshadowPixmap, *bottomshadowPixmap; + { + (void) ReallyGetColor(p->dpy, foregroundColor, realForeground); + + (void)ReallyGetColor(p->dpy, backgroundColor, realBackground); + + if(!(backgroundColor && foregroundColor) && realBackground->red==realForeground->red && realBackground->blue==realForeground->blue && realBackground->green==realForeground->green) { + if(backgroundColor) { + if(((long)realBackground->red + realBackground->blue + realBackground->green) > 3*MAXCOLOR/2) *realForeground = p->blackColor; + else *realForeground = p->whiteColor; + } else if(foregroundColor) { + if(((long)realBackground->red + realBackground->blue + realBackground->green) > 3*MAXCOLOR/2) *realBackground = p->blackColor; + else *realBackground = p->whiteColor; + } + } + + *grayPixmap= (p->ColorDisplay?None:p->grayPixmap); + SetPixmap(p, graypixmapName, grayPixmap); + + SetGray(p, realForeground, realBackground, grayColor, realGray, grayPixmap); + + *topShadow=(*realGray); + SetBottomShadow(p, botcolorName, bottomShadow, realBackground); + + SetPixmap(p, toppixmapName, topshadowPixmap); + + SetPixmap(p, botpixmapName, bottomshadowPixmap); + } + + static void Configure(dpy, p, fore, back) + Display *dpy; + struct prefs *p; + XColor *fore,*back; + { + char *fontName; + char *graypixmapName, *toppixmapName, *botpixmapName; + char *foreName, *backName, *grayName; + char *topcolorName, *botcolorName; + XColor foreground, background, gray; + Pixmap grayPixmap=None, topshadowPixmap, bottomshadowPixmap; + XColor menutopshadow, menubottomshadow; + XColor cardtopshadow, cardbottomshadow; + XWindowAttributes xwa; + unsigned long activatetime; + + foreground=(*fore); + background=(*back); + gray=(*fore); + p->dpy=dpy; + p->refcount=1; + + p->ColorDisplay=False; + if(XGetWindowAttributes(dpy, DefaultRootWindow(dpy), &xwa)>0) { + if(xwa.depth>1) { + p->ColorDisplay=True; + } + } + + (void) ReallyGetColor(dpy, "White", &p->whiteColor); + (void) ReallyGetColor(dpy, "Black", &p->blackColor); + + p->grayPixmap=XCreatePixmapFromBitmapData(dpy, RootWindow(dpy, DefaultScreen(dpy)), (char *) grayImage, 32, 8, BlackPixel(dpy, DefaultScreen(dpy)), WhitePixel(dpy, DefaultScreen(dpy)), 1); + if(p->grayPixmap==None) { + fprintf(stderr, "menubar: couldn't get the gray pixmap!\n"); + } + + p->spacing=getdefaultint(dpy,"MenuBarSpacing",5); + p->depth=getdefaultint(dpy,"MenubarShadowDepth", 2); + + activatetime=getdefaultint(dpy,"MenubarCardDelay", 0); + p->activatetime.tv_usec=activatetime*1000; + p->activatetime.tv_sec=activatetime/1000; + + fontName = getdefault(dpy,"MenubarTitleFont"); + if(fontName==NULL) fontName="andy12b"; + + p->titlefont = ReallyGetFont(dpy, fontName); + + fontName = getdefault(dpy,"MenubarItemfont"); + if(fontName==NULL) fontName="andy12b"; + + p->itemfont = ReallyGetFont(dpy, fontName); + + p->iconfont = ReallyGetFont(dpy, "menu12"); + + foreName=getdefault(dpy,"MenubarTitleColor"); + backName=getdefault(dpy,"MenubarBackgroundColor"); + grayName=getdefault(dpy,"MenubarGrayTitleColor"); + graypixmapName=getdefault(dpy,"MenubarGrayTitleStipple"); + toppixmapName=getdefault(dpy,"MenubarTopShadowStipple"); + topcolorName=getdefault(dpy,"MenubarTopShadowColor"); + botpixmapName=getdefault(dpy,"MenubarBottomShadowStipple"); + botcolorName=getdefault(dpy,"MenubarBottomShadowColor"); + topshadowPixmap=(p->ColorDisplay?None:p->grayPixmap); + bottomshadowPixmap=None; + BuildGraphicContext(p, foreName, backName, grayName, graypixmapName, + topcolorName, toppixmapName, botcolorName, botpixmapName, + &foreground, &background, &gray, + &grayPixmap, &menutopshadow, &menubottomshadow, + &topshadowPixmap, &bottomshadowPixmap); + + p->menutitlesPixel=foreground.pixel; + p->menubackgroundPixel=background.pixel; + p->graytitlePixel=gray.pixel; + p->graytitleStipple= grayPixmap; + p->topshadowPixel= menutopshadow.pixel; + p->bottomshadowPixel= menubottomshadow.pixel; + p->topshadowPixmap = topshadowPixmap; + p->bottomshadowPixmap= bottomshadowPixmap; + + foreName=getdefault(dpy,"MenubarItemColor"); + backName=getdefault(dpy,"MenubarCardBackgroundColor"); + grayName=getdefault(dpy,"MenubarGrayItemColor"); + graypixmapName=getdefault(dpy,"MenubarGrayItemStipple"); + toppixmapName=getdefault(dpy,"MenubarCardTopShadowStipple"); + topcolorName=getdefault(dpy,"MenubarCardTopShadowColor"); + botpixmapName=getdefault(dpy,"MenubarCardBottomShadowStipple"); + botcolorName=getdefault(dpy,"MenubarCardBottomShadowColor"); + BuildGraphicContext(p, foreName, backName, grayName, graypixmapName, + topcolorName, toppixmapName, botcolorName, botpixmapName, + &foreground, &background, &gray, + &grayPixmap, &cardtopshadow, &cardbottomshadow, + &topshadowPixmap, &bottomshadowPixmap); + + p->carditemsPixel=foreground.pixel; + p->cardbackgroundPixel=background.pixel; + p->grayitemPixel=gray.pixel; + p->grayitemStipple= grayPixmap; + p->cardtopshadowPixel= cardtopshadow.pixel; + p->cardbottomshadowPixel= cardbottomshadow.pixel; + p->cardtopshadowPixmap= topshadowPixmap; + p->cardbottomshadowPixmap= bottomshadowPixmap; + + p->menubarheight=FONTHEIGHT(p->titlefont)+(p->depth+PADDING(0))*4; + + } + + struct prefs *mb_GetPrefsForDisplay(dpy, fore, back) + Display *dpy; + XColor *fore, *back; + { + struct prefs *p=prefs; + + while(p!=NULL) + if(p->dpy==dpy) { + p->refcount++; + return p; + } else p=p->next; + + p=(struct prefs *)malloc(sizeof(struct prefs)); + if(!p) return NULL; + + + Configure(dpy,p,fore,back); + + p->next=prefs; + prefs=p; + + return p; + } + + static void MakeGCs(mbi) + struct mbinit *mbi; + { + XGCValues gcv; + unsigned long gcmask=(GCFunction | GCLineWidth | GCForeground | GCBackground); + + + gcv.foreground=mbi->prefs->menutitlesPixel; + gcv.background=mbi->prefs->menubackgroundPixel; + + gcv.line_width=0; + + if(mbi->prefs->titlefont!=NULL) { + gcmask|=GCFont; + gcv.font=mbi->prefs->titlefont->fid; + } + + SetGCs(mbi, mbi->window, &mbi->titlegcs, &gcv,gcmask); + + mbi->titlegcs.topshadowPixel=mbi->prefs->topshadowPixel; + + mbi->titlegcs.bottomshadowPixel= mbi->prefs->bottomshadowPixel; + + mbi->titlegcs.topshadowPixmap=mbi->prefs->topshadowPixmap; + mbi->titlegcs.bottomshadowPixmap= mbi->prefs->bottomshadowPixmap; + mbi->titlegcs.grayPixel=mbi->prefs->graytitlePixel; + mbi->titlegcs.whitePixel=mbi->prefs->menutitlesPixel; + mbi->titlegcs.grayStipple=mbi->prefs->graytitleStipple; + + if(mbi->prefs->itemfont==NULL) gcmask&=(~GCFont); + else { + gcmask|=GCFont; + gcv.font=mbi->prefs->itemfont->fid; + } + + gcv.foreground=mbi->prefs->carditemsPixel; + gcv.background=mbi->prefs->cardbackgroundPixel; + + SetGCs(mbi, mbi->menuw, &mbi->cardgcs, &gcv,gcmask); + + mbi->cardgcs.topshadowPixel=mbi->prefs->cardtopshadowPixel; + mbi->cardgcs.bottomshadowPixel=mbi->prefs->cardbottomshadowPixel; + mbi->cardgcs.topshadowPixmap=mbi->prefs->cardtopshadowPixmap; + mbi->cardgcs.bottomshadowPixmap=mbi->prefs->cardbottomshadowPixmap; + mbi->cardgcs.grayPixel=mbi->prefs->grayitemPixel; + mbi->cardgcs.whitePixel=mbi->prefs->carditemsPixel; + mbi->cardgcs.grayStipple=mbi->prefs->grayitemStipple; + + + SetGCs(mbi, mbi->cascadew, &mbi->cmcgcs, &gcv,gcmask); + + mbi->cmcgcs.topshadowPixel=mbi->prefs->cardtopshadowPixel; + mbi->cmcgcs.bottomshadowPixel=mbi->prefs->cardbottomshadowPixel; + mbi->cmcgcs.topshadowPixmap=mbi->prefs->cardtopshadowPixmap; + mbi->cmcgcs.bottomshadowPixmap=mbi->prefs->cardbottomshadowPixmap; + mbi->cmcgcs.grayPixel=mbi->prefs->grayitemPixel; + mbi->cmcgcs.whitePixel=mbi->prefs->carditemsPixel; + mbi->cmcgcs.grayStipple=mbi->prefs->grayitemStipple; + + + } + + static void MakeWindows(mbi) + struct mbinit *mbi; + { + + XSetWindowAttributes xswa; + + mbi->menuw = XCreateSimpleWindow(mbi->dpy, RootWindow(mbi->dpy, DefaultScreen(mbi->dpy)), 0, 0, 1, 1, 0, BlackPixel(mbi->dpy, DefaultScreen(mbi->dpy)), mbi->prefs->cardbackgroundPixel); + XSetTransientForHint(mbi->dpy,mbi->menuw,mbi->window); + + xswa.override_redirect=True; + xswa.save_under=True; + XChangeWindowAttributes(mbi->dpy,mbi->menuw,CWSaveUnder | CWOverrideRedirect,&xswa); + + XSelectInput(mbi->dpy, mbi->menuw, MENUEVENTS); + + mbi->cascadew = XCreateSimpleWindow(mbi->dpy, RootWindow(mbi->dpy, DefaultScreen(mbi->dpy)), 0, 0, 1, 1, 0, BlackPixel(mbi->dpy, DefaultScreen(mbi->dpy)),mbi->prefs->cardbackgroundPixel ); + XSetTransientForHint(mbi->dpy,mbi->cascadew,mbi->window); + + xswa.override_redirect=True; + xswa.save_under=True; + XChangeWindowAttributes(mbi->dpy,mbi->cascadew,CWSaveUnder | CWOverrideRedirect,&xswa); + + XSelectInput(mbi->dpy, mbi->cascadew, MENUEVENTS); + + } + + static void DestroyPrefsForDisplay(dpy) + Display *dpy; + { + struct prefs *p=prefs,*last=NULL; + while(p!=NULL) + if(p->dpy==dpy) { + p->refcount--; + if(p->refcount>0) return; + XFreeFont(dpy,p->titlefont); + XFreeFont(dpy,p->itemfont); + + if(last) last->next=p->next; + free(p); + return; + } else { + last=p; + p=p->next; + } + } + + + struct mbinit *mb_Init(dpy,fore,back, expose, exposedata) + Display *dpy; + XColor *fore,*back; + int (*expose)(); + long *exposedata; + { + struct mbinit *result=(struct mbinit *)malloc(sizeof(struct mbinit)); + if(result==NULL) return NULL; + + result->dpy=dpy; + result->prefs=mb_GetPrefsForDisplay(dpy,fore,back); + result->HandleExpose=expose; + result->ExposeData=exposedata; + + return result; + } + + #define EVENTS ExposureMask \ + | ButtonPressMask \ + | ButtonReleaseMask \ + | ButtonMotionMask \ + | StructureNotifyMask + + void mb_InitWindows(mbi, mbw, client) + struct mbinit *mbi; + Window mbw; + Window client; + { + mbi->window=mbw; + + mbi->client=client; + + MakeWindows(mbi); + + XSelectInput(mbi->dpy, mbw, EVENTS); + + MakeGCs(mbi); + } + + void mb_Finalize(mbi) + struct mbinit *mbi; + { + DestroyPrefsForDisplay(mbi->dpy); + FreeGCs(mbi,&mbi->titlegcs); + FreeGCs(mbi,&mbi->cardgcs); + FreeGCs(mbi,&mbi->cmcgcs); + XDestroyWindow(mbi->dpy,mbi->menuw); + XDestroyWindow(mbi->dpy,mbi->cascadew); + free((char *)mbi); + } + + + + void mb_Destroy(mb) + struct menubar *mb; + { + int i; + for(i=0;inmenus;i++) DestroyMenu(mb,mb->menus[i]); + free(mb->menus); + free(mb); + } + + + struct menubar *mb_Create(mbi, maintitle, moretitle, data, func) + struct mbinit *mbi; + char *maintitle, *moretitle; + char *data; + void (*func)(); + { + struct menubar *mb=(struct menubar *)malloc(sizeof(struct menubar)); + + if(!mb) return NULL; + + mb->mainmenu=maintitle; + mb->moretitle=moretitle; + mb->data=data; + mb->mbi=mbi; + + mb->menus=(struct tmenu **)malloc(MBLOCKSIZE*sizeof(struct tmenu *)); + if(!mb->menus) { + free(mb); + return NULL; + } + + mb->resort=False; + mb->nmenus=0; + mb->mmenus=MBLOCKSIZE; + mb->overflow=NULL; + mb->overcount=0; + mb->lastmenu=NULL; + mb->MenuFunction=func; + + + mb->morewidth=XTextWidth(mb->mbi->prefs->titlefont, moretitle, strlen(moretitle)); + + mb->moremenu=CreateMenu(mb, moretitle,MOREMENUPRIORITY); + mb_RefitMenubar(mb); + + return mb; + } *** atk/basics/x/Imakefile Wed Nov 22 11:47:44 1989 --- atk/basics/x/Imakefile.NEW Tue May 28 18:18:13 1991 *************** *** 6,12 **** COMOBJS = ../common/region.o ../common/rect.o ../common/point.o ../common/physical.o ! OBJS = xws.o xim.o xcursor.o xfontd.o xgraphic.o IHFILES = xws.ih xim.ih xcursor.ih xfontd.ih xgraphic.ih --- 6,12 ---- COMOBJS = ../common/region.o ../common/rect.o ../common/point.o ../common/physical.o ! OBJS = xws.o xim.o xcursor.o xfontd.o xgraphic.o menubar.o IHFILES = xws.ih xim.ih xcursor.ih xfontd.ih xgraphic.ih *************** *** 18,29 **** NormalObjectRule() NormalATKRule() all:: xinit.o ! DynamicMultiObject(xws.do, $(OBJS) ${COMOBJS}, ${LIBS},) InstallClassFiles(xws.do, $(IHFILES)) DependTarget() InstallDocs(atkx.doc,${DESTDIR}/doc/atk/basics) ! --- 18,32 ---- NormalObjectRule() NormalATKRule() + FontRule() + DeclareFont(menu12) all:: xinit.o ! DynamicMultiObject(xws.do, $(OBJS) ${COMOBJS}, ${LIBS},${NETLIBS}) InstallClassFiles(xws.do, $(IHFILES)) DependTarget() InstallDocs(atkx.doc,${DESTDIR}/doc/atk/basics) ! InstallDocs(menubar.help, ${DESTDIR}/help) ! InstallDocs(motif.intro, ${DESTDIR}/help) *** atk/basics/x/menubar.h Mon Jun 10 11:32:27 1991 --- atk/basics/x/menubar.h.NEW Mon Jun 10 11:30:53 1991 *************** *** 0 **** --- 1,141 ---- + /* **********************************************************************o *\ + * Copyright IBM Corporation 1990,1991 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/menubar.h,v 1.6 1991/06/10 02:16:13 rr2b Exp $ */ + /* $ACIS:im.c 1.6$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/x/RCS/menubar.h,v $ */ + + struct prefs { + Display *dpy; + int ColorDisplay; + int refcount; + unsigned long topshadowPixel, cardtopshadowPixel; + unsigned long bottomshadowPixel, cardbottomshadowPixel; + unsigned long menutitlesPixel; + unsigned long menubackgroundPixel; + unsigned long carditemsPixel; + unsigned long cardbackgroundPixel; + unsigned long grayitemPixel; + unsigned long graytitlePixel; + Pixmap topshadowPixmap, cardtopshadowPixmap; + Pixmap bottomshadowPixmap, cardbottomshadowPixmap; + Pixmap grayPixmap; + Pixmap grayitemStipple; + Pixmap graytitleStipple; + XColor whiteColor, blackColor; + XFontStruct *titlefont; + XFontStruct *itemfont; + XFontStruct *iconfont; + int depth; + int menubarheight; + int spacing; + struct timeval activatetime; + struct prefs *next; + }; + + struct gcs { + GC draw; + GC select,selecterase; + unsigned long topshadowPixel, bottomshadowPixel; + Pixmap topshadowPixmap, bottomshadowPixmap; + unsigned long grayPixel, whitePixel; + Pixmap grayStipple; + }; + + struct mbinit { + Display *dpy; /* display the menu is on */ + int color; /* non-zero if this is a color display */ + Window window; /* window the menubar is drawn in */ + Window client; /* window the menubar is for */ + Window menuw; /* window for the menu card */ + Window cascadew; /* window for first level of cascading */ + struct gcs titlegcs; /* gcs used to draw the menubar */ + struct gcs cardgcs; /* gcs for the menu card */ + struct gcs cmcgcs; /* gcs for the first level of cascading */ + struct prefs *prefs; /* user configurable things */ + int x,y; + unsigned int w,h; + int (*HandleExpose)(); /* function to be called with X expose events for the client window when + a menu is up */ + long *ExposeData; /* Data to be passed to the HandleExpose function for the client */ + }; + + + + + struct titem { + int y; + char *name; /* name of this item */ + int prio; /* priority of this item */ + struct titem *next; /* next item */ + char *data; /* data to be reported when this item is choosen */ + int active; /* whether this item is active */ + int submenu; /* true if this item is a submenu */ + }; + + struct tmenu { + int x,y,w,h,mx,mw,ww,wh; + int vert,horiz; + char *title; /* title if this is a toplevel menu */ + int titlelen; /* length of the title */ + int prio; /* priority if this is a toplevel menu */ + int iwidth; /* maximum width of any item */ + int nitems; /* number of items in this menu */ + int lastitem; + struct titem *items; /* linked list of the items */ + struct titem **lookup; + struct tmenu *next; /* next menu in the overflow list*/ + Window window; + struct gcs gcs; + }; + + struct menubar { + struct mbinit *mbi; + char *mainmenu,*moretitle; + int overcount; /* Number of menus which don't fit in the menubar */ + struct tmenu **menus; /* array of all the toplevel menus */ + struct tmenu *lastmenu; /* the last toplevel menu put up */ + struct tmenu *overflow; /* linked list of menus which don't fit */ + struct tmenu *lasteventin; + struct tmenu *moremenu; + int nmenus; /* number of top level menus */ + int mmenus; /* number of pointers allocated for menus */ + int resort; /* whether the menubar needs re-sorting */ + void (*MenuFunction)(); /* function to be called for a menu selection */ + char *MenuFunctionData; /* data for the MenuFunction */ + char *data; /* more data */ + int morewidth; + Bool refit; + }; + + #ifdef __STDC__ + typedef char *(*GetDefaultsFunction)(Display *, char *); + #else + typedef char *(*GetDefaultsFunction)(); + #endif + + #ifndef __STDC__ + extern struct mbinit *mb_Init(); + extern void mb_InitWindows(); + extern struct menubar *mb_Create(); + extern void mb_AddSelection(); + extern char *mb_DeleteSelection(); + extern void mb_HandleEvent(); + extern int mb_Activate(); + extern void mb_RedrawMenubar(); + extern struct prefs *mb_GetPrefsForDisplay(); + extern void mb_SetItemStatus(); + #else + extern struct mbinit *mb_Init(); + extern void mb_InitWindows(); + extern struct menubar *mb_Create(); + extern void mb_AddSelection(); + extern char *mb_DeleteSelection(); + extern void mb_HandleEvent(); + extern int mb_Activate(); + extern void mb_RedrawMenubar(); + extern struct prefs *mb_GetPrefsForDisplay(); + extern void mb_SetItemStatus(); + #endif + *** atk/basics/x/menubar.help Mon Jun 10 11:57:34 1991 --- atk/basics/x/menubar.help.NEW Mon Jun 10 11:30:54 1991 *************** *** 0 **** --- 1,283 ---- + \begindata{text,268764520} + \textdsversion{12} + \template{help} + \chapter{Menubars: An alternative menu system + + } + \section{What is a menubar? + + }\leftindent{ + A menubar is a strip at the top of all your windows which shows a list of the + menus available to you, it is available only under the X Window System(tm) + + } + \section{Using menubars + + }\leftindent{ + \subsection{Turning the menubars on} + + You can switch to using a menubar (the default is to use a "stack of cards" + menu system) by adding the preference: + + + \example{*.Menubar: on} + + + to your preferences file, this will cause all ATK applications running under + the X Window System(tm) to give you a menubar \bold{instead} of a stack of + cards. If you would like to use both menu systems at the same time you can + use the preference: + + + \example{*.PopupMenus: on} + + + \subsection{Operating a menubar} + + Simply clicking on one of the words in the menubar will bring up a list of + items on that menucard, you can then move the mouse to highlight an option, + then releasing the mouse button will cause that item to be executed. Moving + the mouse over a different item in the menubar will cause that menus menucard + to appear and the old menucard to disappear. Moving the mouse outside of the + menubar and outside the menubar willl leave the same menucard displayed but + will ensure that no menu item is selected. Thus if you decide you don't want + to use any menu item you can just move the mouse away from the menucard and + let up on the button. Some items or menus may be grayed out, this indicates + that they are not currently useful.Much of the time there are more menus + available to you than can be fit into the space at the top of your window, + this is where the "More..." menu comes in. Instead of having menu + \bold{items} its menucard contains the names of additional menus available, + as you move the mouse over these names a menucard with that menu's items on + it will appear to the left or right of the "More..." menucard (depending on + where there is enough space). Items can be selected from this menucard just + like from menucards directly available from the menubar. Letting up on the + buttons when just an item in the "More..." menu is selected will have no + effect. + + + \subsection{Appearances} + + }\leftindent{There are a number of preferences which will change the "look and + feel" of the menubars and they are detailed below under "Preferences". + + } + \section{Advice} + + \leftindent{ + For some applications (eg console) you may wish to not use a menubar but to + have all other applications continue to use a menubar. To achieve this use a + preference like: + + + \example{console.Menubar: off} + + + before any preference like: + + + \example{ *.Menubar: on} + + + This will deactivate the menubar for console only letting the default behavior + continue to be the use of a menubar. + + } + \section{Preferences + + }\leftindent{\leftindent{ \bold{Menubar: \italic{off}} + + \leftindent{Determines whether a menubar is provided across the top of every + window. Note: turning this on turns PopupMenus off by default, but if a + PopupMenus is explicity set to on the popup menus will be available. + + + }\bold{PopupMenus: \italic{on + + }}\leftindent{Determines whether popup (aka stack of cards) menus are + provided. + + + }}}\leftindent{\leftindent{\bold{MenubarCardDelay: \italic{0}} + + \leftindent{When one menucard is visible this is the amount of time, in + milliseconds, the mouse must remain stationary before a new menucard will be + brought up.} + + }}\leftindent{\leftindent{\leftindent{ + }\bold{PopupMenuList: (no default) + + }\leftindent{Allows you to list the names of menucards which should always + appear on a popup "stack of cards" menu. If the menubar is active and this + preference exists and is non-empty only menus in the list given will appear on + the "stack of cards". The format for this preference is: + + + \example{*.PopupMenuList: "Card1Name", "Card2Name"} + + + etc... Note that more than two cards can be listed and each card name must be + enclosed in quotes and there should be no space before the commas, leading + and trailing spaces and tabs will be ignored. + + + }\bold{CardOrder: (no default) + + }\leftindent{Allows you to change the ordering of menus. Each menu has a + priority from 1 to 100, menus with lower priority are placed to the left in + the menubar and towards the front in the "stack of cards". The format for + this preference is: + + + \example{*.CardOrder: "Card1Name~Card1Priority", "Card2Name~Card2Priority" + + } + (The above may appear as two lines on the screen but is really only one line.) + + This preference can change the order menus appear in \bold{both} the stack of + cards and in the menubar. + + + }\bold{PopupCardOrder: (no default)}\leftindent{\bold{ + + }}\leftindent{ this preference works just like the CardOrder preference except + it only affects the "popup" or stack of cards.} + + + \bold{MenubarCardOrder: (no default) + + }\leftindent{ this preference works just like the CardOrder preference except + it only affects the menubar. + + + }}\leftindent{\bold{MenubarSpacing: \italic{5}}}\leftindent{ + + \leftindent{Sets amount of extra space (in pixels) around the names of menus + in the menubar.} + + + \bold{MenubarShadowDepth: }\italic{\bold{2} + + }\leftindent{The width of the boxes around selected items. + + } + \bold{MenubarTitleFont: }\italic{\bold{andy12b} + + }\leftindent{The font to use for the menu names. + + } + \bold{MenubarItemFont: }\italic{\bold{andy12b} + + }\leftindent{The font to use on the menu cards. + + } + \bold{MenubarTitleColor: }\italic{\bold{black} + + }}\leftindent{\leftindent{The color to draw the menu names + in.}}\leftindent{\leftindent{ + + } + \bold{MenubarBackgroundColor: }\italic{\bold{white} + + }\leftindent{The background color to use in the menubar. + + } + \bold{MenubarItemColor: }\italic{\bold{black} + + }\leftindent{The color to draw menu items in. + + } + \bold{MenubarCardBackgroundColor: }\italic{\bold{white} + + }\leftindent{The background color to use in menu cards. + + } + \bold{MenubarGrayItemColor: }\italic{\bold{black} + + }\leftindent{The color to draw inactive menu items in. + + } + \bold{MenubarGrayItemStipple: }\italic{\bold{None} + + }\leftindent{The stipple pattern to draw inactive menu items with. + + } + \bold{MenubarGrayTitleColor: }\italic{\bold{black} + + }\leftindent{The color to draw the titles of inactive menu cards. + + } + \bold{MenubarGrayTitleStipple: }\italic{\bold{None} + + }\leftindent{The path of a stipple pattern to draw the titles of inactive menu + cards, or None if no stipple pattern is desired. + + } + \bold{MenubarTopShadowColor: }\italic{\bold{black} + + }\leftindent{The color to draw the top of the selection box in the menubar in. + + } + \bold{MenubarTopShadowStipple: (defaults to gray)} + + \leftindent{The path of an X stipple pattern to draw the top of the selection + box in the menubar with, or None if no stipple pattern is desired. + + } + \bold{MenubarBottomShadowColor: }\italic{\bold{black} + + }\leftindent{The color to draw the bottom of the selection box in the menubar + in. + + } + \bold{MenubarBottomShadowStipple: }\italic{\bold{None} + + }\leftindent{The path to a stipple pattern to draw the bottom of the selection + box in the menubar in, or None if no stipple pattern is desired. + + } + \bold{MenubarCardTopShadowColor: }\italic{\bold{black} + + }\leftindent{The color to draw the top of the selection box around menu items + in. + + } + \bold{MenubarCardTopShadowStipple: (defaults to gray)} + + \leftindent{The path to a stipple pattern to draw the top of the selection box + around menu items with, or None if no stipple pattern is desired. + + } + \bold{MenubarCardBottomShadowColor: }\italic{\bold{black} + + }\leftindent{The color to draw the bottom of the selection box around menu + items in. + + } + \bold{MenubarCardBottomShadowStipple: }\italic{\bold{None} + + }\leftindent{The stipple pattern to draw the bottom of the selection box + around menu items with, or None if no stipple pattern is desired.}} + + } + \section{Program Author} + + \leftindent{ + }\leftindent{Rob Ryan (rr2b@andrew.cmu.edu)} + + + \section{Notices} + + \leftindent{ + \italic{X Window System }is a trademark of the Massachusetts Institute of + Technology. + + } + \section{Related tools} + + + Select (highlight) one of the italicized names and choose "Show Help on + Selected Word" from the pop-up menu to see the help file for: + + + \leftindent{menus} \ + \enddata{text,268764520} *** atk/basics/x/menubar.doc Thu May 30 19:35:07 1991 --- atk/basics/x/menubar.doc.NEW Fri Mar 29 03:26:14 1991 *************** *** 0 **** --- 1,39 ---- + Preferences + + MenubarShadowDepth: the width of the boxes around selected items. + + MenubarTitleFont: the font to use for the menu names. + + MenubarItemFont: the font to use on the menu cards. + + MenubarTitlesColor: the color to draw the menu names in. + + MenubarBackgroundColor: the background color to use in the menubar. + + MenubarItemColor: the color to draw menu items in. + + MenubarCardBackgroundColor: the background color to use in menu cards. + + MenubarGrayItemColor: the color to draw inactive menu items in. + + MenubarGrayItemStipple: the stipple pattern to draw inactive menu items with. + + MenubarGrayTitleColor: the color to draw the titles of inactive menu cards. + + MenubarGrayTitleStipple: the stipple pattern to draw the titles of inactive menu cards. + + MenubarTopShadowColor: the color to draw the top of the selection box in the menubar in. + + MenubarTopShadowStipple: the stipple pattern to draw the top of the selection box in the menubar with. + + MenubarBottomShadowColor: the color to draw the bottom of the selection box in the menubar in. + + MenubarBottomShadowStipple: the stipple pattern to draw the bottom of the selection box in the menubar in. + + MenubarCardTopShadowColor: the color to draw the top of the selection box around menu items in. + + MenubarCardTopShadowStipple: the stipple pattern to draw the top of the selection box around menu items with. + + MenubarCardBottomShadowColor: the color to draw the bottom of the selection box around menu items in. + + MenubarCardBottomShadowStipple: the stipple pattern to draw the bottom of the selection box around menu items with. *** atk/basics/x/menu12.fdb Thu Jun 6 15:15:20 1991 --- atk/basics/x/menu12.fdb.NEW Mon Jun 3 19:52:39 1991 *************** *** 0 **** --- 1,77 ---- + $magic 509 + $fontname menu12 + $familyname menu + $rotation 0 + $pointsize 12 + $Comment Copyright (c) 1984 Adobe Systems, Inc. + $Comment /adobe/fonts/Times/Greek/fontvec.ps TG14.bits + $Comment TOTAL BITMAP BYTES 2358 + $Comment GUIDELINES 0 0 0 0 7 10 -3 DONE + $MaxNWtoOrigin 0,10 + $MaxNtoS 0,10 + $MaxWtoE 10,0 + $MaxWbase 0,0 + $MaxNewline 0,10 + $FontRepresentationType 1 BitmapIcon + $NIcons 128 + $character 87 W + $box 10,10 + $origin 0,10 + $spacing 10,0 + $raster + F800 + 8800 + 9E00 + 9200 + 9200 + 9200 + F200 + 1200 + 1E00 + 0000 + $character 88 X + $box 10,10 + $origin 0,10 + $spacing 10,0 + $raster + 07C0 + 0440 + 1E40 + 1240 + 1240 + 1240 + 13C0 + 1200 + 1E00 + 0000 + $character 89 Y + $box 10,10 + $origin 0,10 + $spacing 10,0 + $raster + 1E00 + 1200 + 1200 + 13C0 + 1240 + 1E40 + 0440 + 0440 + 0440 + 07C0 + $character 90 Z + $box 10,10 + $origin 0,10 + $spacing 10,0 + $raster + 1E00 + 1200 + 1200 + F200 + 9200 + 9E00 + 8800 + 8800 + 8800 + F800 + $end *** atk/basics/x/motif.intro Thu May 23 17:42:49 1991 --- atk/basics/x/motif.intro.NEW Thu May 23 12:15:34 1991 *************** *** 0 **** --- 1,19 ---- + \begindata{text,268694856} + \textdsversion{12} + \template{help} + \chapter{Motif: several different documents + + } + If you are interested in seeing help on ATK Motif-style menus, scrollbars or + buttons, use \bold{Show Help on Selected Word} with one of the italicized + words to see those documents explicitly. + + + \italic{menubar + + scrollbar} + + \italic{ pushbutton + + + }\enddata{text,268694856} *** atk/basics/common/Imakefile Fri Dec 21 14:53:36 1990 --- atk/basics/common/Imakefile.NEW Thu May 30 18:30:07 1991 *************** *** 5,17 **** DOBJS = app.do atom.do atomlist.do bind.do cursor.do dataobj.do describe.do \ environ.do event.do filetype.do fontdesc.do init.do keymap.do \ keyrec.do keystate.do menulist.do message.do msghndlr.do \ ! namespc.do observe.do proctbl.do profile.do region.do rm.do \ updlist.do view.do winsys.do IHFILES = app.ih atom.ih atomlist.ih bind.ih cursor.ih dataobj.ih describe.ih \ environ.ih event.ih filetype.ih fontdesc.ih graphic.ih im.ih init.ih \ keymap.ih keyrec.ih keystate.ih menulist.ih message.ih msghndlr.ih \ ! namespc.ih observe.ih pixelimg.ih proctbl.ih profile.ih region.ih rm.ih \ updlist.ih view.ih winsys.ih DOCS = app.doc atom.doc atomlist.doc attribs.doc basinit.doc \ --- 5,17 ---- DOBJS = app.do atom.do atomlist.do bind.do cursor.do dataobj.do describe.do \ environ.do event.do filetype.do fontdesc.do init.do keymap.do \ keyrec.do keystate.do menulist.do message.do msghndlr.do \ ! namespc.do observe.do path.do proctbl.do profile.do region.do rm.do \ updlist.do view.do winsys.do IHFILES = app.ih atom.ih atomlist.ih bind.ih cursor.ih dataobj.ih describe.ih \ environ.ih event.ih filetype.ih fontdesc.ih graphic.ih im.ih init.ih \ keymap.ih keyrec.ih keystate.ih menulist.ih message.ih msghndlr.ih \ ! namespc.ih observe.ih path.ih pixelimg.ih proctbl.ih profile.ih region.ih rm.ih \ updlist.ih view.ih winsys.ih DOCS = app.doc atom.doc atomlist.doc attribs.doc basinit.doc \ *************** *** 18,29 **** bind.doc cursor.doc dataobj.doc describe.doc environ.doc \ event.doc filetype.doc fontdesc.doc graphic.doc im.doc \ init.doc keymap.doc keyrec.doc keystate.doc lwpstubs.doc \ ! menulist.doc message.doc msghndlr.doc namespc.doc observe.doc \ ! physical.doc pixelimg.doc point.doc proctbl.doc profile.doc \ ! rect.doc region.doc rm.doc sizes.doc updlist.doc view.doc \ winsys.doc ! NormalObjectRule() NormalATKRule() --- 18,29 ---- bind.doc cursor.doc dataobj.doc describe.doc environ.doc \ event.doc filetype.doc fontdesc.doc graphic.doc im.doc \ init.doc keymap.doc keyrec.doc keystate.doc lwpstubs.doc \ ! menulist.doc message.doc msghndlr.doc namespc.doc \ ! observe.doc physical.doc pixelimg.doc point.doc proctbl.doc \ ! profile.doc rect.doc region.doc rm.doc sizes.doc updlist.doc view.doc \ winsys.doc ! LIBS = -L${XLIBDIR} -lX11 NormalObjectRule() NormalATKRule() *************** *** 33,60 **** all:: ${IHFILES} im.o ! #ifdef sys_rt_r3 /* TOTALL BOGUS - NEED TO FIX OUR MALLOC TO DEFINE _end */ #if defined(ANDREW_MALLOC_ENV) && defined(DEBUG_MALLOC_ENV) ! DynamicMultiObject(im.do, im.o rect.o point.o physical.o, ${DESTDIR}/lib/libplumber.a,) ! #else /* #if defined(ANDREW_MALLOC_ENV) && defined(DEBUG_MALLOC_ENV) */ DynamicMultiObject(im.do, im.o rect.o point.o physical.o,,) ! #endif /* #if defined(ANDREW_MALLOC_ENV) && defined(DEBUG_MALLOC_ENV) */ ! #endif /* sys_rt_r3 */ DynamicMultiObject(cursor.do, cursor.o rect.o point.o physical.o,,) DynamicMultiObject(graphic.do, graphic.o rect.o point.o physical.o,,) - DynamicMultiObject(pixelimg.do, pixelimg.o rect.o point.o,,) DynamicMultiObject(view.do, view.o rect.o point.o,,) DynamicObject(event, $(UTILLIB),) ! DynamicObject(environ, ${UTILLIB},) ! DynamicObject(region, ${XLIBDIR}/libX11.a,) InstallClassFiles($(DOBJS) graphic.do pixelimg.do, $(IHFILES)) ! #ifdef sys_rt_r3 InstallClassFiles(im.do, im.ih) ! #endif /* sys_rt_r3 */ DependTarget() --- 33,63 ---- all:: ${IHFILES} im.o ! #if defined(sys_rt_r3) || defined(LIBDL_ENV) /* TOTALL BOGUS - NEED TO FIX OUR MALLOC TO DEFINE _end */ #if defined(ANDREW_MALLOC_ENV) && defined(DEBUG_MALLOC_ENV) ! DynamicMultiObject(im.do, im.o rect.o point.o physical.o, $(MALLOCLIB),) ! #else /* !ANDREW_MALLOC_ENV || !DEBUG_MALLOC_ENV */ DynamicMultiObject(im.do, im.o rect.o point.o physical.o,,) ! #endif /* ANDREW_MALLOC_ENV && DEBUG_MALLOC_ENV */ ! #endif /* sys_rt_r3 || LIBDL_ENV */ DynamicMultiObject(cursor.do, cursor.o rect.o point.o physical.o,,) DynamicMultiObject(graphic.do, graphic.o rect.o point.o physical.o,,) DynamicMultiObject(view.do, view.o rect.o point.o,,) + + DynamicObject(path, ${UTILLIB},) DynamicObject(event, $(UTILLIB),) ! DynamicObject(environ, ${UTILLIB},${NETLIBS}) ! DynamicObject(region, , ${LIBS} ${NETLIBS}) ! DynamicMultiObject(pixelimg.do, pixelimg.o rect.o point.o,,${SUPLIBS}) ! InstallClassFiles($(DOBJS) graphic.do pixelimg.do, $(IHFILES)) ! #if defined(sys_rt_r3) || defined(LIBDL_ENV) InstallClassFiles(im.do, im.ih) ! #endif /* sys_rt_r3 || LIBDL_ENV */ DependTarget() *** atk/basics/common/app.c Wed Sep 26 16:02:48 1990 --- atk/basics/common/app.c.NEW Tue May 7 17:10:17 1991 *************** *** 2,10 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/app.c,v 2.18 90/08/11 19:00:08 ajp Exp $ */ /* $ACIS:app.c 1.5$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/app.c,v $ */ #include #include --- 2,10 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/app.c,v 2.22 1991/05/07 20:36:28 bobg Exp $ */ /* $ACIS:app.c 1.5$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/app.c,v $ */ #include #include *************** *** 14,24 **** #include #include #include - #include - extern char *rindex(); - static void errorProc(rock, str) pointer rock; char *str; --- 14,21 ---- *************** *** 53,64 **** void application__PrintVersionNumber(self) struct application *self; { switch(application_GetMajorVersion(self)){ case -42: ! fprintf(stderr, "Starting %s (Version Unknown, ATK %s); please wait...\n", application_GetName(self), application_GetATKVersion()); break; default: ! fprintf(stderr, "Starting %s (Version %d.%d, ATK %s); please wait...\n", application_GetName(self), application_GetMajorVersion(self), application_GetMinorVersion(self), application_GetATKVersion()); } fflush(stderr); } --- 50,70 ---- void application__PrintVersionNumber(self) struct application *self; { + if (!environ_GetProfileSwitch("PrintVersionNumber", TRUE)) + return; switch(application_GetMajorVersion(self)){ case -42: ! fprintf(stderr, ! "Starting %s (Version Unknown, ATK %s); please wait...\n", ! application_GetName(self), application_GetATKVersion()); break; default: ! fprintf(stderr, ! "Starting %s (Version %d.%d, ATK %s); please wait...\n", ! application_GetName(self), ! application_GetMajorVersion(self), ! application_GetMinorVersion(self), ! application_GetATKVersion()); } fflush(stderr); } *************** *** 312,318 **** self->fork=FALSE; /* just in case */ switch(fork()){ case 0: ! #ifdef AIX /* Change process group so we don't get interrupts */ setpgrp(); #endif --- 318,324 ---- self->fork=FALSE; /* just in case */ switch(fork()){ case 0: ! #if SY_AIX221 || defined(M_UNIX) /* Change process group so we don't get interrupts */ setpgrp(); #endif *** atk/basics/common/view.ch Fri Dec 21 14:53:46 1990 --- atk/basics/common/view.ch.NEW Wed May 8 13:23:44 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/view.ch,v 2.15 90/09/18 17:37:29 sg08 Exp $ */ /* $ACIS:view.ch 1.3$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/view.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidview_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/view.ch,v 2.15 90/09/18 17:37:29 sg08 Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/view.ch,v 2.16 1991/05/08 17:21:28 gk5g Exp $ */ /* $ACIS:view.ch 1.3$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/view.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidview_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/view.ch,v 2.16 1991/05/08 17:21:28 gk5g Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ *************** *** 76,90 **** SetName( struct atomlist * name ); GetName() returns struct atomlist *; GetClass() returns struct atomlist *; ! GetParameter( struct atomlist * name, struct atom * type, long * data ) returns short; GetResource( struct atomlist * name, struct atomlist * class, ! struct atom * type, long * data ) returns short; GetManyParameters( struct resourceList * resources, struct atomlist * name, struct atomlist * class ); PostResource( struct atomlist * path, struct atom * type, ! long data ); InsertViewRegion(struct view *parent, struct region *region); InsertView(struct view * parent, struct rectangle * enclosingRect); InsertViewSize(struct view * EnclosingView, long xOriginInParent, long yOriginInParent, long width, long height); --- 76,90 ---- SetName( struct atomlist * name ); GetName() returns struct atomlist *; GetClass() returns struct atomlist *; ! GetParameter( struct atomlist * name, struct atom * type, long * datum ) returns short; GetResource( struct atomlist * name, struct atomlist * class, ! struct atom * type, long * datum ) returns short; GetManyParameters( struct resourceList * resources, struct atomlist * name, struct atomlist * class ); PostResource( struct atomlist * path, struct atom * type, ! long datum ); InsertViewRegion(struct view *parent, struct region *region); InsertView(struct view * parent, struct rectangle * enclosingRect); InsertViewSize(struct view * EnclosingView, long xOriginInParent, long yOriginInParent, long width, long height); *** atk/basics/common/atom.c Wed Nov 22 11:48:02 1989 --- atk/basics/common/atom.c.NEW Wed Mar 20 14:14:37 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/atom.c,v 2.8 89/09/27 14:33:21 wjh Exp $ */ /* $ACIS:atom.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/atom.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/atom.c,v 2.8 89/09/27 14:33:21 wjh Exp $"; #endif /* lint */ --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/atom.c,v 2.9 91/03/15 14:59:51 gk5g Exp $ */ /* $ACIS:atom.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/atom.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/atom.c,v 2.9 91/03/15 14:59:51 gk5g Exp $"; #endif /* lint */ *************** *** 52,58 **** register struct alist *l; a = atom_New(); ! a->name = malloc(strlen(name) + 1); (void) strcpy(a->name, name); l = (struct alist *) malloc(sizeof (struct alist)); --- 52,58 ---- register struct alist *l; a = atom_New(); ! a->name = (char*) malloc(strlen(name) + 1); (void) strcpy(a->name, name); l = (struct alist *) malloc(sizeof (struct alist)); *** atk/basics/common/bind.c Wed Sep 26 16:02:54 1990 --- atk/basics/common/bind.c.NEW Tue Apr 2 18:15:46 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/bind.c,v 2.5 90/08/11 19:03:04 ajp Exp $ */ /* $ACIS:bind.c 1.2$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/bind.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/bind.c,v 2.5 90/08/11 19:03:04 ajp Exp $"; #endif /* lint */ /* bind.c --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/bind.c,v 2.6 91/04/02 17:04:56 gk5g Exp $ */ /* $ACIS:bind.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/bind.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/bind.c,v 2.6 91/04/02 17:04:56 gk5g Exp $"; #endif /* lint */ /* bind.c *************** *** 16,29 **** /* */ #include - - #include - #include #include #include ! void bind__BindList(classID,bl,km,ml,type) struct classheader *classID; struct bind_Description *bl; struct keymap *km; --- 16,27 ---- /* */ #include #include #include #include + #include ! void bind__BindList(classID, bl, km, ml, type) struct classheader *classID; struct bind_Description *bl; struct keymap *km; *************** *** 30,47 **** struct menulist *ml; struct classinfo *type; { ! while(bl->procName!=NULL || bl->keyVector!=NULL || bl->menuEntry!=NULL){ struct proctable_Entry *pe; ! if(bl->procName!=NULL) ! pe=proctable_DefineProc(bl->procName, (procedure) bl->proc,type,bl->module,bl->doc); else ! pe=NULL; ! if(km!=NULL && bl->keyVector!=NULL) ! keymap_BindToKey(km,bl->keyVector,pe,bl->keyRock); ! if(ml!=NULL && bl->menuEntry!=NULL) ! menulist_AddToML(ml,bl->menuEntry,pe,bl->menuRock,bl->menuMask); bl++; } --- 28,45 ---- struct menulist *ml; struct classinfo *type; { ! while(bl && (bl->procName || bl->keyVector || bl->menuEntry)) { struct proctable_Entry *pe; ! if(bl->procName) ! pe = proctable_DefineProc(bl->procName, (procedure) bl->proc, type, bl->module, bl->doc); else ! pe = NULL; ! if(km && bl->keyVector) ! keymap_BindToKey(km, bl->keyVector, pe, bl->keyRock); ! if(ml && bl->menuEntry) ! menulist_AddToML(ml, bl->menuEntry, pe, bl->menuRock, bl->menuMask); bl++; } *** atk/basics/common/cutbuf.help Wed Nov 22 11:51:54 1989 --- atk/basics/common/cutbuf.help.NEW Wed Feb 13 16:48:56 1991 *************** *** 1,4 **** ! \begindata{text,268668804} \textdsversion{12} \template{help} \chapter{The Andrew cutbuffer --- 1,4 ---- ! \begindata{text,269074536} \textdsversion{12} \template{help} \chapter{The Andrew cutbuffer *************** *** 38,56 **** To become familiar with the cut ring, you can use Esc-y or Esc-^Y several times in succession after you have \bold{Cut} several items (without pressing Enter to actually insert the contents of the cutbuffer) and watch the contents ! of the cut ring cycle through.}\leftindent{ }\section{A Note for X users}\leftindent{ ! Non-Andrew applications under X often utilize a different mechanism for ! cut/copy/paste than the one described here. With these applications there is ! ONE selected region on the entire screen; making a selection in one window ! removes the selection from wherever it was before. The selected text can be ! moved or copied to any X application. } \section{Related tools} --- 38,102 ---- To become familiar with the cut ring, you can use Esc-y or Esc-^Y several times in succession after you have \bold{Cut} several items (without pressing Enter to actually insert the contents of the cutbuffer) and watch the contents ! of the cut ring cycle through. }\section{A Note for X users}\leftindent{ ! }\leftindent{ Non-Andrew applications under X often utilize a different mechanism for ! cut/copy/paste than the one described here. ! ! ! Sometimes the interactions between cut rings in X application programs and EZ ! get very complicated. We are in the process of improving this situation. ! Here are instructions that work for simple pasting between Xterm and ez. ! They may work for other applications. These instructions do NOT work betwen ! Emacs and ez. ! ! ! \bold{From Xterm to ez:} ! ! ! \leftindent{1. Drag the left mouse button across the region of text you want ! to copy; the region should appear as highlighted text (reverse video). ! ! ! 2. Position the mouse pointer in the EZ window and choose the Paste menu ! option. The selected text from the Xterm will appear in the EZ window at the ! text caret (this text becomes the most recent item in the EZ cut ring).} ! + Note that in Xterm, no menu action is necessary to copy; text that is + highlighted in X is automatically copied as soon as it is selected. This is + different from EZ where something that is selected (highlighted) is not copied + until the \bold{Copy} command is selected from the \italic{Front} menu card. + Items copied from an Xterm window into EZ will be inserted into the Andrew + kill ring in order of when it was selected relevant to the last \italic{cut} + or \italic{copied} (not selected) text in EZ. + + \italic{\underline{Important Note:}} When cycling backwards through an Andrew + cut ring, if the last item pasted was from an Xterm, you must first press ^Y + before the Esc-Y will enter you into the cut ring. + + + \bold{From ez to Xterm:} + + + \leftindent{1. Select the region of text in EZ that you want to paste into + your xterm by dragging the left mouse button across that region until it + appears as highlighted text. + + + 2. Choose the \bold{Copy} option from the \italic{Front} menu card. + + + 3. Move your mouse pointer to your Xterm and click the middle mouse button. + (Note that formatted text will appear as regular text with formatting + commands surrounding it in ascii.)} + + } \section{Related tools} *************** *** 61,64 **** \leftindent{\italic{ez ez-keys\ ! }}\enddata{text,268668804} --- 107,110 ---- \leftindent{\italic{ez ez-keys\ ! }}\enddata{text,269074536} *** atk/basics/common/dataobj.c Wed Sep 26 16:02:56 1990 --- atk/basics/common/dataobj.c.NEW Fri Dec 14 16:44:43 1990 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/dataobj.c,v 2.12 90/03/22 09:23:44 ajp Exp Locker: bader $ */ /* $ACIS:dataobj.c 1.2$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/dataobj.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/dataobj.c,v 2.12 90/03/22 09:23:44 ajp Exp Locker: bader $"; #endif /* lint */ #include --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/dataobj.c,v 2.13 90/12/14 15:11:29 ajp Exp $ */ /* $ACIS:dataobj.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/dataobj.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/dataobj.c,v 2.13 90/12/14 15:11:29 ajp Exp $"; #endif /* lint */ #include *************** *** 204,210 **** newprop->data = value; if (self->properties == NULL) self->properties = namespace_New(); ! namespace_SetValue( self->properties, property, newprop ); } --- 204,210 ---- newprop->data = value; if (self->properties == NULL) self->properties = namespace_New(); ! namespace_SetValue( self->properties, property, (long) newprop ); } *************** *** 220,226 **** the specified type is NULL. If type is not NULL, but *type is, then we fill in the actual type. */ ! if (self->properties != NULL && namespace_Boundp(self->properties, property, &prop) && (type == NULL || *type == NULL || *type == prop->type)) { if (value != NULL) --- 220,226 ---- the specified type is NULL. If type is not NULL, but *type is, then we fill in the actual type. */ ! if (self->properties != NULL && namespace_Boundp(self->properties, property, (long *) &prop) && (type == NULL || *type == NULL || *type == prop->type)) { if (value != NULL) *** atk/basics/common/filetype.c Wed Jan 17 16:36:56 1990 --- atk/basics/common/filetype.c.NEW Wed Feb 13 16:48:58 1991 *************** *** 2,23 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/andrew/atk/basics/common/RCS/filetype.c,v 2.8 89/11/20 11:11:12 ajp Exp $ */ /* $ACIS:filetype.c 1.3$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/andrew/atk/basics/common/RCS/filetype.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/andrew/atk/basics/common/RCS/filetype.c,v 2.8 89/11/20 11:11:12 ajp Exp $"; #endif /* lint */ #include #include - #include - #include - #include - #include - - #include /* sys/types.h sys/file.h */ #include #include #include --- 2,18 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.c,v 2.12 91/02/12 17:12:37 gk5g Exp $ */ /* $ACIS:filetype.c 1.3$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.c,v 2.12 91/02/12 17:12:37 gk5g Exp $"; #endif /* lint */ + #include /* sys/types.h sys/file.h */ #include #include #include #include #include *************** *** 24,29 **** --- 19,30 ---- #include #include + #include + #include + #include + #include + #include + #define DEFAULTTYPE "text" static struct mapEntry { *************** *** 30,40 **** struct mapEntry *next; char *fileExtension; char *dataName; ! struct attributes *attributes; ! } *allEntries = NULL, defaultMapping = {NULL, NULL, NULL, NULL}; extern int errno; - extern char *index (), *rindex(); /* These next statics are fairly bogus. */ static char lastFilename[MAXPATHLEN]; --- 31,41 ---- struct mapEntry *next; char *fileExtension; char *dataName; ! struct attributes *newAttributes; ! struct attributes *existingAttributes; ! } *allEntries = NULL, defaultMapping = {NULL, NULL, NULL, NULL, NULL}; extern int errno; /* These next statics are fairly bogus. */ static char lastFilename[MAXPATHLEN]; *************** *** 50,216 **** #define EXTATTRINDEX 2 /* Where to put file's extension. */ #define READONLYINDEX 3 /* Where to put the readonly flag. */ ! /* FullName (path, basefile) computes the full path name of path and ! returns a pointer to static storage containing the path. If path ! begins with /, the name is justed folded to remove extraneous ! dots. If the path begins with ~, the appropriate home directory ! is used. If the name begins otherwaise, it is made relative to ! the directory containing basefile. ! Basefile should be a full pathname. If empty, or begins without a slash, ! the pathname is made relative to the current working directory. ! */ ! ! static char *FullName (path, basefile) register char *path, *basefile; { ! static char buf[MAXPATHLEN]; ! ! if (*path == '/') ! strcpy (buf, path); ! else if (*path == '~') { ! register char *tail; ! register char *p1 = path+1; ! char *home; ! ! if (*p1=='\0' || *p1=='/') { ! ! ! home = environ_GetHome(NULL); ! ! if (*p1 == '\0') ! tail = p1; ! else ! tail = path+2; ! } ! else { /* ~name/... */ ! tail = index(path, '/'); ! if (tail==0) { ! home = environ_GetHome(p1); ! tail = path + strlen(path); ! } ! else { ! *tail = '\0'; ! home = environ_GetHome(p1); ! *tail++ = '/'; ! } ! } ! if (home != NULL) ! strcpy(buf, home); ! strcat(buf, "/"); ! strcat(buf, tail); ! } ! else { /* find name relative to directory for basefile */ ! register char *slash; ! if (basefile==NULL) basefile = ""; ! if (*basefile != '/' && im_GetDirectory(buf) != NULL) ! strcat (buf, "/"); ! else ! *buf = '\0'; /* ??? discard error message if getwd==NULL */ ! strcat (buf, basefile); ! slash = rindex(buf, '/'); ! if (slash==0) ! slash = buf+strlen(buf), *slash = '/'; ! *++slash = '\0'; ! strcat(buf, path); ! } ! FoldName(buf); ! return buf; ! } ! ! ! /* FoldName -- remove all "." and ".." components from a file name ! modifies the buffer passed to it ! Rules: ! buffer is => use this string ! / => / ! . => . ! .. => .. ! empty => . ! x => x ! buffer starts use this start ! /.. => / ! x/.. => . ! ./.. => .. ! .. => .. ! ../.. => ../.. (any number of ../) ! x/y => x/y ! buffer continues replace with ! /./ => / ! // => / ! /x/../ => / ! Does not know about ~ ! */ ! static FoldName (path) ! register char *path; /* path to fold */ ! { ! char *pStart, /* points to first char of a component */ ! *pEnd; /* points to first char following ! component */ ! register char *dest; ! int len; ! ! if (path == NULL) ! return; ! dest = path; ! pEnd = (*path == '/' ? path + 1 : path); ! for (;;) { ! pStart = pEnd; ! pEnd = index (pStart, '/'); ! if (pEnd == NULL) ! pEnd = pStart + strlen (pStart); ! len = pEnd - pStart; ! if (len == 0) { /* ignore empty components, but preserve trailing /'s. */ ! if (*pEnd == '\0') ! *dest++ = '/'; ! } ! else if (len == 1 && *pStart == '.' && pStart[1] == '/') ! {} /* ignore single dots */ ! else if (len == 2 && pStart[0] == '.' && pStart[1] == '.' && pStart[2] == '/') { ! switch (dest - path) { ! case 0: /* /.. => / and .. => .. */ ! if (*path != '/') ! *dest++ = '.', *dest++ = '.'; ! break; ! case 1: /* ./.. => .. and x/.. => . */ ! if (*path == '.') ! *dest++ = '.'; ! else *path = '.'; ! break; ! case 2: /* ../.. => ../.. and x/.. => . */ ! if (strncmp(path, "..", 2)==0) ! *dest++ = '/', *dest++ = '.', *dest++ = '.'; ! else *path = '.', dest = path+1; ! break; ! default: /* y/x/..=>y x/..=>. /x/..=>/ ../../..=>../../.. */ ! if (strncmp(dest-3, "/..", 3)==0) ! *dest++ = '/', *dest++ = '.', *dest++ = '.'; ! else { /* this is the principal case for .. */ ! while (dest > path && *--dest != '/') {} ! if (dest == path && *path != '/') ! *dest++ = '.'; ! } ! break; ! } ! } ! else { ! if (dest>path || *path == '/') ! *dest++ = '/'; ! strncpy (dest, pStart, len); ! dest += len; ! } ! if (*pEnd++ == 0) ! break; ! } ! if (dest==path) /* inital path was / . or empty */ ! *dest++ = (*path == '/' ? '/' : '.'); ! *dest++ = 0; ! } ! ! static void FreeAttributes(entry) ! struct mapEntry *entry; { - struct attributes *thisAttr, *nextAttr; ! for (thisAttr = entry->attributes; thisAttr != NULL; thisAttr = nextAttr) { free(thisAttr->key); if (thisAttr->value.string != NULL) /* Attributes on this list are guaranteed to be string attributes... */ free(thisAttr->value.string); --- 51,62 ---- #define EXTATTRINDEX 2 /* Where to put file's extension. */ #define READONLYINDEX 3 /* Where to put the readonly flag. */ ! static void FreeAttributes(attributes) ! struct attributes *attributes; { struct attributes *thisAttr, *nextAttr; ! for (thisAttr = attributes; thisAttr != NULL; thisAttr = nextAttr) { free(thisAttr->key); if (thisAttr->value.string != NULL) /* Attributes on this list are guaranteed to be string attributes... */ free(thisAttr->value.string); *************** *** 219,259 **** } } ! void filetype__AddEntry(classID, extension, dataName, attributes) ! struct classheader *classID; ! char *extension, *dataName; ! char *attributes; { - register struct mapEntry *thisEntry; if (strcmp(extension, "*") == 0) { thisEntry = &defaultMapping; ! defaultMapping.fileExtension = "*"; } ! else for (thisEntry = allEntries; thisEntry != NULL && strcmp(thisEntry->fileExtension, extension); thisEntry = thisEntry->next) ! ; if (thisEntry == NULL) { /* Allocate an entry if we didn't find one. */ thisEntry = (struct mapEntry *) malloc(sizeof(struct mapEntry)); thisEntry->fileExtension = (char *) malloc(strlen(extension) + 1); ! strcpy(thisEntry->fileExtension, extension); thisEntry->next = allEntries; allEntries = thisEntry; } - else { /* Otherwise free the old values associated with this entry. */ - if (thisEntry->dataName != NULL) - free(thisEntry->dataName); - FreeAttributes(thisEntry); - } /* Fill in name. */ thisEntry->dataName = (char *) malloc(strlen(dataName) + 1); strcpy(thisEntry->dataName, dataName); ! ! thisEntry->attributes = NULL; /* Initialize This list to empty. */ /* If necessary, parse the colon seperated string of assignments to generate the * values list. The string looks like "key1=value1;key2=value2;...". All values * that result from this parsing are string values, integer values are never --- 65,108 ---- } } ! static struct mapEntry *GetEntry(extension, dataName) ! char *extension; ! char *dataName; { register struct mapEntry *thisEntry; if (strcmp(extension, "*") == 0) { thisEntry = &defaultMapping; ! defaultMapping.fileExtension = "*"; } ! else { for (thisEntry = allEntries; thisEntry != NULL && strcmp(thisEntry->fileExtension, extension); thisEntry = thisEntry->next) ! ; ! } if (thisEntry == NULL) { /* Allocate an entry if we didn't find one. */ thisEntry = (struct mapEntry *) malloc(sizeof(struct mapEntry)); thisEntry->fileExtension = (char *) malloc(strlen(extension) + 1); ! strcpy(thisEntry->fileExtension, extension); ! thisEntry->dataName = NULL; ! thisEntry->newAttributes = NULL; ! thisEntry->existingAttributes = NULL; thisEntry->next = allEntries; allEntries = thisEntry; } /* Fill in name. */ + if (thisEntry->dataName != NULL) + free(thisEntry->dataName); thisEntry->dataName = (char *) malloc(strlen(dataName) + 1); strcpy(thisEntry->dataName, dataName); ! ! return thisEntry; ! } + struct attributes *ParseAttributes(attributes) + char *attributes; + { /* If necessary, parse the colon seperated string of assignments to generate the * values list. The string looks like "key1=value1;key2=value2;...". All values * that result from this parsing are string values, integer values are never *************** *** 263,270 **** * This function does no whitespace parsing in order to be "literal" about the * values it generates. */ ! if (attributes != NULL) { char *thisKey = attributes, *thisVal; struct attributes *thisAttr; --- 112,121 ---- * This function does no whitespace parsing in order to be "literal" about the * values it generates. */ ! ! struct attributes *attr = NULL; + if (attributes != NULL) { char *thisKey = attributes, *thisVal; struct attributes *thisAttr; *************** *** 287,294 **** } else thisAttr->value.string = NULL; ! thisAttr->next = thisEntry->attributes; ! thisEntry->attributes = thisAttr; if (*thisKey == ';') ++thisKey; } --- 138,145 ---- } else thisAttr->value.string = NULL; ! thisAttr->next = attr; ! attr = thisAttr; if (*thisKey == ';') ++thisKey; } *************** *** 297,302 **** --- 148,182 ---- ++thisKey; } } + + return attr; + } + + void filetype__AddEntry(classID, extension, dataName, attributes) + struct classheader *classID; + char *extension, *dataName; + char *attributes; + { + struct mapEntry *thisEntry; + + thisEntry = GetEntry(extension, dataName); + + FreeAttributes(thisEntry->newAttributes); + thisEntry->newAttributes = ParseAttributes(attributes); + + } + + void filetype__AddExistingAttributes(classID, extension, dataName, attributes) + struct classheader *classID; + char *extension, *dataName; + char *attributes; + { + struct mapEntry *thisEntry; + + thisEntry = GetEntry(extension, dataName); + + FreeAttributes(thisEntry->existingAttributes); + thisEntry->existingAttributes = ParseAttributes(attributes); } int filetype__DeleteEntry(classID, extension) *************** *** 309,318 **** if (strcmp(extension, "*")) { if (defaultMapping.dataName) free(defaultMapping.dataName); ! if (defaultMapping.attributes) { ! FreeAttributes(&defaultMapping); ! defaultMapping.attributes = NULL; ! } defaultMapping.fileExtension = NULL; return 1; } --- 189,198 ---- if (strcmp(extension, "*")) { if (defaultMapping.dataName) free(defaultMapping.dataName); ! FreeAttributes(&defaultMapping.newAttributes); ! defaultMapping.newAttributes = NULL; ! FreeAttributes(&defaultMapping.existingAttributes); ! defaultMapping.existingAttributes = NULL; defaultMapping.fileExtension = NULL; return 1; } *************** *** 321,327 **** if (strcmp(traverse->fileExtension, extension) == 0) { free(traverse->fileExtension); free(traverse->dataName); ! FreeAttributes(traverse); *previous = traverse->next; free(traverse); return 1; --- 201,208 ---- if (strcmp(traverse->fileExtension, extension) == 0) { free(traverse->fileExtension); free(traverse->dataName); ! FreeAttributes(traverse->newAttributes); ! FreeAttributes(traverse->existingAttributes); *previous = traverse->next; free(traverse); return 1; *************** *** 349,355 **** register char *extension; static char objectName[100]; /* The place to put the name of the class that should be used to read this file. */ char *targetObject = NULL; /* Holds potential value for objectName. */ ! struct attributes *defaultAttributes = NULL; /* Only used if the file is in non-datastream format. */ if (attributes) *attributes = NULL; /* In case we don't set it otherwise. */ --- 230,237 ---- register char *extension; static char objectName[100]; /* The place to put the name of the class that should be used to read this file. */ char *targetObject = NULL; /* Holds potential value for objectName. */ ! struct attributes *newAttributes = NULL; /* Only used if the file is in non-datastream format. */ ! struct attributes *existingAttributes = NULL; if (attributes) *attributes = NULL; /* In case we don't set it otherwise. */ *************** *** 359,378 **** */ if (filename != NULL && filename[0] != '\0') { register char *s = rindex(filename, '/'); extension = rindex(filename, '.'); if (extension == NULL || (s != NULL && s > extension)) extension = ""; ! for(thisEntry = allEntries; thisEntry != NULL; thisEntry = thisEntry->next) if (!strcmp(thisEntry->fileExtension, extension)) { - targetObject = thisEntry->dataName; - defaultAttributes = thisEntry->attributes; break; ! } ! if (thisEntry == NULL && defaultMapping.fileExtension != NULL) { ! targetObject = defaultMapping.dataName; ! defaultAttributes = defaultMapping.attributes; ! } /* Setup hardwired attributes in static storage. * Currently, we support the following hardwired attributes: * "filename" => The full pathname of the file as given to this routine. --- 241,279 ---- */ if (filename != NULL && filename[0] != '\0') { register char *s = rindex(filename, '/'); + char prefix[100]; + + if (s != NULL) { + char *dotpos; + strcpy(prefix, s+1); + dotpos = index(prefix, '.'); + if (dotpos != NULL) *(dotpos+1) = '\0'; + } + else prefix[0] = '\0'; + extension = rindex(filename, '.'); if (extension == NULL || (s != NULL && s > extension)) extension = ""; ! for(thisEntry = allEntries; thisEntry != NULL; thisEntry = thisEntry->next) { if (!strcmp(thisEntry->fileExtension, extension)) { break; ! } ! if (!strcmp(thisEntry->fileExtension, prefix)) { ! extension = prefix; ! break; ! } ! } ! ! if (thisEntry == NULL) { ! thisEntry = &defaultMapping; ! } ! ! targetObject = thisEntry->dataName; ! newAttributes = thisEntry->newAttributes; ! existingAttributes = thisEntry->existingAttributes; ! ! /* Setup hardwired attributes in static storage. * Currently, we support the following hardwired attributes: * "filename" => The full pathname of the file as given to this routine. *************** *** 389,395 **** hardWiredAttributes[EXTATTRINDEX].key = "extension"; hardWiredAttributes[EXTATTRINDEX].value.string = lastExtension; ! hardWiredAttributes[EXTATTRINDEX].next = NULL; hardWiredAttributes[NAMEATTRINDEX].key = "filename"; hardWiredAttributes[NAMEATTRINDEX].value.string = lastFilename; --- 290,296 ---- hardWiredAttributes[EXTATTRINDEX].key = "extension"; hardWiredAttributes[EXTATTRINDEX].value.string = lastExtension; ! hardWiredAttributes[EXTATTRINDEX].next = existingAttributes; hardWiredAttributes[NAMEATTRINDEX].key = "filename"; hardWiredAttributes[NAMEATTRINDEX].value.string = lastFilename; *************** *** 421,428 **** hardWiredAttributes[SIZEATTRINDEX].value.integer = statBuf.st_size; hardWiredAttributes[SIZEATTRINDEX].next = *attributes; *attributes = &hardWiredAttributes[SIZEATTRINDEX]; ! ! } while (getc(file) == *s && *++s != '\0') ; --- 322,328 ---- hardWiredAttributes[SIZEATTRINDEX].value.integer = statBuf.st_size; hardWiredAttributes[SIZEATTRINDEX].next = *attributes; *attributes = &hardWiredAttributes[SIZEATTRINDEX]; ! } while (getc(file) == *s && *++s != '\0') ; *************** *** 450,466 **** fseek(file, origPos > 0 ? origPos : 0, 0L); } ! /* Link in default attributes. */ ! if (attributes && *attributes) { ! ! struct attributes *thisAttribute; ! ! for (thisAttribute = *attributes; thisAttribute != NULL; thisAttribute = thisAttribute->next) ! if (thisAttribute->next == NULL) { ! thisAttribute->next = defaultAttributes; ! break; ! } ! } if (objectID != NULL) *objectID = 0; --- 350,356 ---- fseek(file, origPos > 0 ? origPos : 0, 0L); } ! hardWiredAttributes[EXTATTRINDEX].next = newAttributes; if (objectID != NULL) *objectID = 0; *************** *** 480,495 **** { char fullName[MAXPATHLEN]; - int firstChar; ! while (*name == ' ') ! name++; ! if ((firstChar = *name) != '/' && firstChar != '~') { ! im_GetDirectory(fullName); ! strcat(fullName, "/"); ! strcat(fullName, name); ! } ! else ! strncpy(fullName, name, sizeof(fullName)); ! strncpy(canonicalName, FullName(fullName, 0), maxSize); } --- 370,375 ---- { char fullName[MAXPATHLEN]; ! strncpy(canonicalName, path_UnfoldFileName(name, fullName, 0), maxSize); } *** atk/basics/common/filetype.ch Wed Sep 26 16:02:57 1990 --- atk/basics/common/filetype.ch.NEW Fri Dec 14 16:44:48 1990 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.ch,v 2.6 90/08/11 19:32:16 ajp Exp $ */ /* $ACIS:filetype.ch 1.2$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidfiletype_H = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.ch,v 2.6 90/08/11 19:32:16 ajp Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* filetype.h --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.ch,v 2.7 90/12/14 14:57:33 ajp Exp $ */ /* $ACIS:filetype.ch 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidfiletype_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/filetype.ch,v 2.7 90/12/14 14:57:33 ajp Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* filetype.h *************** *** 19,24 **** --- 19,25 ---- package filetype { classprocedures: AddEntry(char *extesion, char *dataName, char *attributes); + AddExistingAttributes(char *extension, char *dataName, char *attributes); DeleteEntry(char *extension) returns int; /* The return value here is dubious... */ /* NOTE: filetype_Lookup. * The value returned through the attributes parameter to this function *** atk/basics/common/fontdesc.c Fri Dec 21 14:53:37 1990 --- atk/basics/common/fontdesc.c.NEW Tue Dec 18 15:00:13 1990 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/fontdesc.c,v 2.8 90/08/17 14:44:38 ajp Exp Locker: gk5g $ */ /* $ACIS:fontdesc.c 1.3$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/fontdesc.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/fontdesc.c,v 2.8 90/08/17 14:44:38 ajp Exp Locker: gk5g $"; #endif /* lint */ #include --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/fontdesc.c,v 2.10 90/12/18 14:56:34 gk5g Exp $ */ /* $ACIS:fontdesc.c 1.3$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/fontdesc.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/fontdesc.c,v 2.10 90/12/18 14:56:34 gk5g Exp $"; #endif /* lint */ #include *************** *** 256,271 **** long *fontStyle; long *fontSize; { ! char *endName = fontName + strlen(fontName) - 1; int style = 0; int size = 0; int length; /* Parse style modifiers. Assumes there will be a font size between the * family name and the end of the whole name. */ ! while (endName >= fontName && !isdigit(*endName)) ! switch (*endName--) { case 'b': style |= fontdesc_Bold; break; --- 256,276 ---- long *fontStyle; long *fontSize; { ! char *endName; int style = 0; int size = 0; int length; + if((fontName == NULL) || (*fontName == '\0')) + return FALSE; + else + endName = fontName + strlen(fontName) - 1; + /* Parse style modifiers. Assumes there will be a font size between the * family name and the end of the whole name. */ ! while (!isdigit(*endName)) { ! switch (*endName) { case 'b': style |= fontdesc_Bold; break; *************** *** 281,288 **** default: break; } ! if (endName < fontName) { /* No font size. Whole name is family name. */ style = 0; length = bufSize; } --- 286,299 ---- default: break; } + if(endName > fontName) + endName--; + else + break; + } ! if (endName == fontName) { /* No font size. Whole name is family name. */ ! size = 12; style = 0; length = bufSize; } *** atk/basics/common/im.c Fri Dec 21 14:53:42 1990 --- atk/basics/common/im.c.NEW Tue Apr 2 18:15:49 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.c,v 2.36 90/09/13 19:16:27 wjh Exp $ */ /* $ACIS:im.c 1.5$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.c,v $ */ #ifndef lint ! char *im_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.c,v 2.36 90/09/13 19:16:27 wjh Exp $"; #endif /* lint */ /* Put in error messages for handling of keystrokes. --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.c,v 2.42 91/04/02 16:52:06 susan Exp $ */ /* $ACIS:im.c 1.5$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.c,v $ */ #ifndef lint ! char *im_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.c,v 2.42 91/04/02 16:52:06 susan Exp $"; #endif /* lint */ /* Put in error messages for handling of keystrokes. *************** *** 14,21 **** Figure out how to handle handlers and information requests. Figure out some way to handle levels of user. Macros should probably not be an novice level facility. */ - #include #include /* sys/time.h sys/file.h sys/types.h */ #include #ifndef MAXPATHLEN #include --- 14,21 ---- Figure out how to handle handlers and information requests. Figure out some way to handle levels of user. Macros should probably not be an novice level facility. */ #include /* sys/time.h sys/file.h sys/types.h */ + #include #include #ifndef MAXPATHLEN #include *************** *** 85,90 **** --- 85,91 ---- static struct keymap *globalKeymap; static struct menulist *imMenus; static long destroycount; + static boolean allowCtrlUCmds; static void userKey(), userMouse(), userMenu(); static char *getMenuEntryName(); *************** *** 683,689 **** --- 684,694 ---- continue; vFiles[i].file = f; + #ifdef M_UNIX + chmod(vFiles[i].name, 0600); + #else fchmod(fileno(f), 0600); + #endif unlink(vFiles[i].name); /* Get rid of the name in the filesystem. */ vFiles[i].size = 0; vFiles[i].mode = ' '; *************** *** 854,863 **** int pending; { if(self->keyEchoState==im_KeyEchoOff){ ! if(self->argState.argProvided) sprintf(self->keyEcho,"%d ",self->argState.argument); ! else self->keyEcho[0]='\0'; self->keyEchoState=im_KeyEchoPending; self->keyEchoEvent=NULL; } --- 859,873 ---- int pending; { if(self->keyEchoState==im_KeyEchoOff){ ! if(self->argState.argProvided) { sprintf(self->keyEcho,"%d ",self->argState.argument); ! } ! else if (self->argState.argPending) { ! sprintf(self->keyEcho,"%d ",self->argState.tmpArgument); ! } ! else { self->keyEcho[0]='\0'; + } self->keyEchoState=im_KeyEchoPending; self->keyEchoEvent=NULL; } *************** *** 905,910 **** --- 915,969 ---- } return FALSE; } + + static HandleArgumentProcessing(self, key) + struct im *self; + long key; + { + long newArg; + char buf[30]; + + if (key == 025 && self->argState.cmdpos == 0) { + self->argState.argDigit = FALSE; + newArg = 4; + if (self->argState.argPending) { + newArg = self->argState.tmpArgument * 4; + if (newArg > 65536) + newArg = 65536; + } + self->argState.tmpArgument = newArg; + self->argState.argPending = TRUE; + self->argState.processCmd = allowCtrlUCmds; + + sprintf(buf, "Arg: %d", newArg); + message_DisplayString(self, 0, buf); + } + else if (self->argState.argPending && self->argState.cmdpos == 0 && key >= '0' && key <= '9') { + if (! self->argState.argDigit) { + self->argState.argDigit = TRUE; + self->argState.tmpArgument = 0; + } + newArg = self->argState.tmpArgument * 10 + (key - '0'); + if (newArg > 65536) { + newArg = 65536; + } + self->argState.tmpArgument = newArg; + + sprintf(buf, "Arg: %d", newArg); + message_DisplayString(self, 0, buf); + } + else if (self->argState.argPending) { + if (self->argState.processCmd) { + self->argState.argcmd[self->argState.cmdpos++] = key; + } + else { + im_ProvideArg(self, self->argState.tmpArgument); + SetArgProvided(self, TRUE); + } + } + } + + struct im * im__DoKey(self, key) struct im *self; *************** *** 917,963 **** if (self->keystate == NULL) return self; ! switch (keystate_ApplyKey(self->keystate, key, &procTableEntry, &rock, &object)) { ! case keystate_ProcFound: ! if(self->keyEchoState==im_KeyEchoDisplayed){ echoKey(self, key, FALSE); im_ForceUpdate(); ! message_DisplayString(self, 0, ""); ! } ! resetKeyEcho(self); ! self->argState.argNext = FALSE; ! thisCmd = 0; ! switch (keystate_DoProc(self->keystate, procTableEntry, rock, object)) { case keystate_NoProc: ! message_DisplayString(self, 0, "Could not load procedure"); ! break; case keystate_TypeMismatch: ! message_DisplayString(self, 0, "Bad command"); ! break; ! } ! if(dest == destroycount || stillexists(self))/* make sure self still exists */ ! { ! self->argState.argProvided = self->argState.argNext; ! self->lastCommand = thisCmd; ! } ! else return NULL; ! break; ! case keystate_NoBinding: ! if (key == 'G' - 64) message_DisplayString(self,0,"Cancelled."); ! else{ ! echoKey(self,key,FALSE); ! strcat(self->keyEcho, ": Unknown command"); ! message_DisplayString(self,0,self->keyEcho); ! } ! resetKeyEcho(self); ! self->argState.argProvided = FALSE; ! self->lastCommand = 0; ! break; ! case keystate_Pending: ! echoKey(self, key, TRUE); ! break; } return self; } --- 976,1046 ---- if (self->keystate == NULL) return self; ! HandleArgumentProcessing(self, key); ! ! if ((! self->argState.argPending) || self->argState.processCmd) { ! switch (keystate_ApplyKey(self->keystate, key, &procTableEntry, &rock, &object)) { ! case keystate_ProcFound: ! if(self->keyEchoState==im_KeyEchoDisplayed){ echoKey(self, key, FALSE); im_ForceUpdate(); ! } ! message_DisplayString(self, 0, ""); ! resetKeyEcho(self); ! self->argState.argNext = FALSE; ! thisCmd = 0; ! switch (keystate_DoProc(self->keystate, procTableEntry, rock, object)) { case keystate_NoProc: ! message_DisplayString(self, 0, "Could not load procedure"); ! break; case keystate_TypeMismatch: ! message_DisplayString(self, 0, "Bad command"); ! break; ! } ! if(dest == destroycount || stillexists(self))/* make sure self still exists */ ! { ! SetArgProvided(self, self->argState.argNext); ! self->lastCommand = thisCmd; ! } ! else { ! SetArgProvided(self, FALSE); ! return NULL; ! } ! self->argState.argPending = FALSE; ! break; ! case keystate_NoBinding: ! if (key == 'G' - 64) { message_DisplayString(self,0,"Cancelled."); ! SetArgProvided(self, FALSE); ! } ! else { ! if (self->argState.argPending) { ! if (self->argState.cmdpos != 0) { ! im_ProvideArg(self, self->argState.tmpArgument); ! self->argState.argcmd[self->argState.cmdpos] = '\0'; ! ! SetArgProvided(self, TRUE); ! im__DoKeySequence(self, self->argState.argcmd); ! } ! else { ! self->argState.processCmd = FALSE; ! } ! } ! else { ! echoKey(self,key,FALSE); ! strcat(self->keyEcho, ": Unknown command"); ! message_DisplayString(self,0,self->keyEcho); ! SetArgProvided(self, FALSE); ! self->lastCommand = 0; ! } ! } ! resetKeyEcho(self); ! break; ! case keystate_Pending: ! echoKey(self, key, TRUE); ! break; ! } } return self; } *************** *** 1066,1078 **** } if(dest == destroycount || stillexists(self)) /* make sure self still exists */ { ! self->argState.argProvided = self->argState.argNext; self->lastCommand = thisCmd; return self; } return NULL; } struct im * im__HandleMouse(self, action, x, y, newButtonState) struct im *self; --- 1149,1174 ---- } if(dest == destroycount || stillexists(self)) /* make sure self still exists */ { ! SetArgProvided(self, self->argState.argNext); self->lastCommand = thisCmd; return self; } + SetArgProvided(self, FALSE); return NULL; } + /* We have a hit method here so that it can be subclassed, if necessary + for such things as override windows */ + + struct view * + im__Hit (self, action, x, y, clicks) + struct im *self; + enum view_MouseAction action; + long x, y, clicks; + { + return view_Hit(self->topLevel, action, x, y, clicks); + } + struct im * im__HandleMouse(self, action, x, y, newButtonState) struct im *self; *************** *** 1082,1087 **** --- 1178,1188 ---- long newButtonState; { register long dest = destroycount; + + if (self->keystate) { + keystate_Reset(self->keystate); + } + if (self->topLevel != NULL && action != view_NoMouseEvent) { if ((self->buttonState == im_AllUp && newButtonState != im_AllUp) || self->mouseFocus == NULL) { *************** *** 1102,1109 **** self->lastY = y; } self->buttonState = newButtonState; ! self->mouseFocus = view_Hit(self->topLevel, ! action, x, y, self->clickCount); } else { struct view *hitee = self->mouseFocus; --- 1203,1209 ---- self->lastY = y; } self->buttonState = newButtonState; ! self->mouseFocus = im_Hit(self, action, x, y, self->clickCount); } else { struct view *hitee = self->mouseFocus; *************** *** 1118,1126 **** self->clickCount); } } if(dest == destroycount || stillexists(self)) /* make sure self still exists */ { - self->argState.argProvided = FALSE; self->lastCommand = 0; return self; } --- 1218,1226 ---- self->clickCount); } } + SetArgProvided(self, FALSE); if(dest == destroycount || stillexists(self)) /* make sure self still exists */ { self->lastCommand = 0; return self; } *************** *** 1154,1159 **** --- 1254,1261 ---- self->argState.argProvided = FALSE; self->argState.argNext = FALSE; self->argState.argDigit = FALSE; + self->argState.argPending = FALSE; + self->argState.cmdpos = 0; self->cursorlist = NULL; self->WindowCursor = NULL; self->CursorsAreActive = 0; *************** *** 1231,1237 **** view_LoseInputFocus(self->inputFocus); } self->inputFocus = requestor; ! self->argState.argProvided = FALSE; self->lastCommand = 0; if (self->inputFocus != NULL) { view_ReceiveInputFocus(self->inputFocus); --- 1333,1339 ---- view_LoseInputFocus(self->inputFocus); } self->inputFocus = requestor; ! SetArgProvided(self, FALSE); self->lastCommand = 0; if (self->inputFocus != NULL) { view_ReceiveInputFocus(self->inputFocus); *************** *** 1271,1283 **** if (self->keystate != NULL) { keystate_Reset(self->keystate); } self->keystate = keystate_AddAfter(self->imKeystate, keystate); if (self->init != NULL) self->keystate = init_ModifyKeystate(self->init, self->keystate); if (self->keystate != NULL) { keystate_Reset(self->keystate); } ! self->argState.argProvided = FALSE; self->lastCommand = 0; } --- 1373,1388 ---- if (self->keystate != NULL) { keystate_Reset(self->keystate); } + self->keystate = keystate_AddAfter(self->imKeystate, keystate); + if (self->init != NULL) self->keystate = init_ModifyKeystate(self->init, self->keystate); if (self->keystate != NULL) { keystate_Reset(self->keystate); } ! ! SetArgProvided(self, FALSE); self->lastCommand = 0; } *************** *** 1348,1354 **** self->topLevel = topLevel; self->doRedraw = TRUE; self->argState.argument = 1; ! self->argState.argProvided = FALSE; self->argState.argNext = FALSE; self->argState.argDigit = FALSE; self->lastCommand = 0; --- 1453,1459 ---- self->topLevel = topLevel; self->doRedraw = TRUE; self->argState.argument = 1; ! SetArgProvided(self, FALSE); self->argState.argNext = FALSE; self->argState.argDigit = FALSE; self->lastCommand = 0; *************** *** 1368,1384 **** return FALSE; } ! struct im *im__Create(classID, host) ! struct classheader *classID; ! char *host; { struct im *newIM; unsigned char *logdir; ! newIM = windowsystem_CreateIM(currentWS); ! if (newIM == NULL || ! im_CreateWindow(newIM, host)) ! return NULL; logdir = (unsigned char *)environ_Get("LOGDIRECTORY"); if (logdir) { --- 1473,1535 ---- return FALSE; } + /* It is expected that CreateTransientWindow + will be overridden by our window-server specific + subclass. + If our window server does not support Transient + Windows we will create a top level one instead. */ ! boolean ! im__CreateTransientWindow(self, other) ! struct im *self, *other; ! { ! return im_CreateWindow(self, NULL); ! } ! ! /* It is expected that CreateOverrideWindow ! will be overridden by our window-server specific ! subclass. ! If our window server does not support Override ! Windows we will create a top level one instead. */ ! ! boolean ! im__CreateOverrideWindow(self, other) ! struct im *self, *other; ! { ! return im_CreateWindow(self, NULL); ! } ! ! #define NORMAL_IM_CREATE 0 ! #define TRANSIENT_IM_CREATE 1 ! #define OVERRIDE_IM_CREATE 2 ! ! static struct im * ! DoCreate(classID, host, other, flag) ! struct classheader *classID; ! char *host; ! struct im *other; ! int flag; { struct im *newIM; unsigned char *logdir; ! newIM = windowsystem_CreateIM(currentWS); ! ! switch (flag) { ! case NORMAL_IM_CREATE: ! if (newIM == NULL || ! im_CreateWindow(newIM, host)) ! return NULL; ! break; ! case TRANSIENT_IM_CREATE: ! if (newIM == NULL || ! im_CreateTransientWindow(newIM, other)) ! return NULL; ! break; ! case OVERRIDE_IM_CREATE: ! if (newIM == NULL || ! im_CreateOverrideWindow(newIM, other)) ! return NULL; ! break; ! default: return NULL; ! } logdir = (unsigned char *)environ_Get("LOGDIRECTORY"); if (logdir) { *************** *** 1396,1401 **** --- 1547,1575 ---- return newIM; } + struct im *im__Create(classID, host) + struct classheader *classID; + char *host; + { + return (DoCreate(classID, host, NULL, NORMAL_IM_CREATE)); + } + + /* Just the same as im__Create except we call im_CreateTransientWindow. */ + + struct im *im__CreateTransient(classID, other) + struct classheader *classID; + struct im *other; + { + return (DoCreate(classID, NULL, other, TRANSIENT_IM_CREATE)); + } + + struct im *im__CreateOverride(classID, other) + struct classheader *classID; + struct im *other; + { + return (DoCreate(classID, NULL, other, OVERRIDE_IM_CREATE)); + } + /* im__WhichWS() returns a string for the current window system: "X" or "wm" (Overriden in the subclasses) *************** *** 1439,1445 **** static char workingDirectory[MAXPATHLEN]; static boolean initializeWorkingDirectory = TRUE; ! #ifndef hpux extern char *getwd(); #endif /* hpux */ --- 1613,1619 ---- static char workingDirectory[MAXPATHLEN]; static boolean initializeWorkingDirectory = TRUE; ! #if !defined(hpux) && !defined(M_UNIX) extern char *getwd(); #endif /* hpux */ *************** *** 1481,1486 **** --- 1655,1666 ---- } else #endif /* notdef */ + #ifdef M_UNIX + /* this may not be needed on all systems - + * it's to work around a problem with popen() + */ + (void)getwd(dir); + #endif /* M_UNIX */ return(getwd(dir)); } *************** *** 1546,1552 **** --- 1726,1745 ---- { sigProcs[signalNumber] = proc; sigData[signalNumber] = procdata; + #if POSIX_ENV + { + struct sigaction sa; + sigset_t empty; + + sigemptyset(&empty); + sa.sa_handler = InternalSignal; + sa.sa_mask = empty; + sa.sa_flags = 0; + sigaction(signalNumber, &sa, NULL); + } + #else signal(signalNumber, InternalSignal); + #endif } *************** *** 1802,1807 **** --- 1995,2003 ---- } #endif /* defined(hpux) && HP_OS < 70 */ } /* cleanUpZombies */ + #ifdef M_UNIX + signal(SIGCHLD, DeathInTheFamily); + #endif } /* childDied */ else { *************** *** 1831,1840 **** --- 2027,2052 ---- struct classheader *classID; boolean value; { + #if POSIX_ENV + { + struct sigaction sa; + sigset_t empty; + + sigemptyset(&empty); + if ((cleanUpZombies = value)) /* Insure proper state of signal handler. */ + sa.sa_handler = DeathInTheFamily; + else + sa.sa_handler = SIG_DFL; + sa.sa_mask = empty; + sa.sa_flags = 0; + sigaction(SIGCHLD, &sa, NULL); + } + #else if ((cleanUpZombies = value)) /* Insure proper state of signal handler. */ signal(SIGCHLD, DeathInTheFamily); else signal(SIGCHLD, SIG_DFL); + #endif } void im__AddZombieHandler(classID, pid, function, functionData) *************** *** 2094,2103 **** --- 2306,2341 ---- } } + void + im__CancelMacro(classID) + struct classheader *classID; + { + /* if PendingRelease is not NULL, the macro has completed */ + if ( ! playingRecord || PendingRelease != NULL) return; + + /* remove macro from front of InQ */ + PendingRelease = InQ; + InQ = InQ->next; + + playingRecord = FALSE; + } + /* Code for handling key events for im object (Used to be in keystate). This section deals with the global command argument, usually set by the ^U command. */ + static SetArgProvided(self, value) + struct im *self; + boolean value; + { + if (self->argState.argProvided != value) { + keystate_Reset(self->keystate); + self->argState.argProvided = value; + } + self->argState.argPending = FALSE; + self->argState.cmdpos = 0; + } + struct im_ArgState *im__GetArgState(self) struct im *self; { *************** *** 2133,2138 **** --- 2371,2405 ---- self->argState.argument = arg; } + void im__DisplayArg(self) + struct im *self; + { + char buf[30]; + + struct im_ArgState *as = im_GetArgState(self); + + sprintf(buf, "Arg: %d", as->argument); + message_DisplayString(self, 0, buf); + } + + long im__BumpArg(self, val) + struct im *self; + long val; + { + struct im_ArgState *as = im_GetArgState(self); + long newArg; + + if (! as->argDigit) { + as->argDigit = TRUE; + as->argument = 0; + } + newArg = as->argument * 10 + val; + if (newArg > 65536) + newArg = 65536; + im_ProvideArg(self, newArg); + return newArg; + } + /* These routines deal with the last command variable. */ static long nextCmdValue = 1; /* next value to alloc */ *************** *** 2423,2432 **** keyboardLevel = 0; destroycount = 0; allZombieHandlers = NULL; ! globalKeymap = NULL; ! imMenus = NULL; ! signal(SIGCHLD, DeathInTheFamily); if ((envString = environ_Get("BE2WM")) != NULL) { for (windowsys = knownWindowSystems; (windowsys < knownWindowSystems + (sizeof(knownWindowSystems)/sizeof(knownWindowSystems[0]))) && (NotFound = (strcmp(envString, windowsys->keyName) != 0)); windowsys++); --- 2690,2711 ---- keyboardLevel = 0; destroycount = 0; allZombieHandlers = NULL; ! allowCtrlUCmds = environ_GetProfileSwitch("CtrlUCmds", TRUE); ! ! #if POSIX_ENV ! { ! struct sigaction sa; ! sigset_t empty; ! ! sigemptyset(&empty); ! sa.sa_handler = DeathInTheFamily; ! sa.sa_mask = empty; ! sa.sa_flags = 0; ! sigaction(SIGCHLD, &sa, NULL); ! } ! #else signal(SIGCHLD, DeathInTheFamily); + #endif if ((envString = environ_Get("BE2WM")) != NULL) { for (windowsys = knownWindowSystems; (windowsys < knownWindowSystems + (sizeof(knownWindowSystems)/sizeof(knownWindowSystems[0]))) && (NotFound = (strcmp(envString, windowsys->keyName) != 0)); windowsys++); *************** *** 2457,2465 **** --- 2736,2746 ---- globalUpdateList = updatelist_New(); globalKeymap = keymap_New(); + imMenus = menulist_New(); bind_BindList(imBindings, globalKeymap, imMenus, &im_classinfo); + return TRUE; } *** atk/basics/common/im.ch Wed Sep 26 16:03:14 1990 --- atk/basics/common/im.ch.NEW Tue May 28 18:18:30 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.ch,v 2.15 90/08/11 23:56:21 ajp Exp $ */ /* $ACIS:im.ch 1.4$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidim_H = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.ch,v 2.15 90/08/11 23:56:21 ajp Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.ch,v 2.18 1991/05/28 22:15:27 gk5g Exp $ */ /* $ACIS:im.ch 1.4$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidim_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/im.ch,v 2.18 1991/05/28 22:15:27 gk5g Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ *************** *** 36,44 **** --- 36,49 ---- struct im_ArgState { long argument; /* the current argument */ + long tmpArgument; boolean argProvided; /* true if argument is valid */ boolean argNext; /* if argProvided should be set on next command */ boolean argDigit; /* true if a digit has been seen on this argument */ + boolean argPending; /* true if we are currently trying to process a ^U as a command */ + boolean processCmd; + long cmdpos; + char argcmd[10]; }; struct im_InteractionEvent { *************** *** 70,75 **** --- 75,82 ---- struct atomlist * name, struct atomlist * className ); UnlinkNotification(struct view *unlinkedTree); + Hit (enum view_MouseAction action, long x, long y, long clicks) returns struct view *; + methods: SetView(struct view *toplevel); WhichWS() returns unsigned char *; /* "X" or "wm" */ *************** *** 90,95 **** --- 97,104 ---- /* These routine manipulate late the global last command value. */ GetLastCmd() returns long; /* get it */ SetLastCmd(long cmd); /* set it */ + BumpArg(long digit) returns long; /* shift one place and add in new digit */ + DisplayArg(); /* display it */ SetWindowCursor(struct cursor *cursor) ; ClearCursors(struct cursor * C); ClearCursorList(); *************** *** 115,123 **** --- 124,136 ---- VanishWindow(); /* totally invisible */ HandleRedraw(); CreateWindow(char *host) returns boolean; + CreateTransientWindow(struct im *other) returns boolean; + CreateOverrideWindow(struct im *other) returns boolean; macros: GetInputFocus(self) ((self)->inputFocus) + SupportsTransient(self) (FALSE) + SupportsOverride(self) (FALSE) classprocedures: AllocLastCmd() returns long; /* allocate a value for it */ *************** *** 125,130 **** --- 138,145 ---- InitializeObject(struct im *self) returns boolean; FinalizeObject(struct im *self); Create(char *host) returns struct im *; + CreateTransient(struct im *other) returns struct im *; + CreateOverride(struct im *other) returns struct im *; AddFileHandler(FILE *file, procedure proc, char *procdata, long priority) returns boolean; RemoveFileHandler(FILE *file); AddCanOutHandler(FILE *file, procedure proc, char *procdata, long priority) returns boolean; *************** *** 174,179 **** --- 189,195 ---- RedrawChangedWindows(); SetDefaultServerHost(char *name); SetGeometrySpec(char *value); + CancelMacro(); data: struct atom * programNameAtom; struct im *next; /* Next im allocated object */ *** atk/basics/common/im.doc Fri Feb 2 12:24:37 1990 --- atk/basics/common/im.doc.NEW Thu May 30 18:30:08 1991 *************** *** 1,4 **** ! \begindata{text,3450600} \textdsversion{12} \define{bold menu:[Font~1,Bold~10] --- 1,4 ---- ! \begindata{text,269545804} \textdsversion{12} \define{bold menu:[Font~1,Bold~10] *************** *** 129,140 **** \fixedtext{boolean \bold{im_}CreateWindow }\fixedindent{(struct im *\paramname{im}, char *\paramname{host});} ! \fixedtext{struct im *\bold{im_}Create }\fixedindent{(char *\paramname{host});} \fixedtext{void \bold{im_}DeliverSignals }\fixedindent{();} \fixedtext{void \bold{im_}DispatchPendingInteractionEvents --- 129,146 ---- \fixedtext{boolean \bold{im_}CreateWindow }\fixedindent{(struct im *\paramname{im}, char *\paramname{host});} ! \fixedtext{\fixedtext{boolean \bold{im}_CreateTransientWindow ! \fixedindent{(struct im *\paramname{other})} returns boolean; + boolean \bold{im}_CreateOverrideWindow \fixedindent{(struct im + *\paramname{other})} returns boolean; + }struct im *\bold{im_}Create }\fixedindent{(char *\paramname{host});} + + \fixedtext{void \bold{im_}DeliverSignals }\fixedindent{();} \fixedtext{void \bold{im_}DispatchPendingInteractionEvents *************** *** 444,455 **** } \paragraph{Associating a view with an interaction manager window}\indexi{Interaction manager++Linking to a view} \indexi{ \italic{im_SetView}} ! \example{void im_SetView (im, topLevel) struct im *im; --- 450,528 ---- } + Creating and associating a temporary interaction manager with an existing one + + + struct im *im_CreateTransient(struct im *other); + + struct im *other; + + + \bold{Method Description.} Creates a top level im window that is a transient + for the named im 'other'. The geometry of this new im is relative to the + position of 'other' with one non-obvious, but highly useful aspect: If you set + desired position to (0,0) the given desired height and width will be used to + produce an im which appears in the middle of the 'other' im. The transient + window is autonomous and separately manageable by the window manager in the + same way that other top level im's are. The reason for the existance of this + function was to be able to create a window from inside an application and to + set the geometry precisely. Some window managers may group the transient + window with the top level window and iconify both at the same time when the + 'other' window is. + + + struct im *im_CreateOverride(struct im *other) + + struct im *other; + + + \bold{Method Description. }Creates a child window of 'other' following the + same geometry setting conventions as a transient window. All keystrokes go to + the override window for as long as it is visible. Mouse events outside the + override window are discarded for as long as the override is visible. Since + the override is a child of 'other' it is clipped to the bounds of 'other'. + (An attempt was made to relax this restriction but it proved too hard to + write with the current X ICCCM. (There are missing conventions for stacking + notifications from a window manager.)) The override window is not managed by + the window manager. It is considered part of the 'other' im's window + hierarchy. It is guaranteed to stack in the right order, to iconify and + de-iconify when 'other' does, and to move when 'other' does. The purpose of + this function is allow creation of pop-up messages that are full im's. + + + To make it easy for people to code using the new functions, the im object + defines the CreateOverride and CreateTransient functions but will return + regular top level im's if the window specific server does not actually support + the kind of window being asked for. (For example, supporting overlapping + windows with the wm window server is very hard.) + + + im_SupportsTransients(); + + \bold{Macro Description.} Returns TRUE if the im_CreateOverride function + really will create a transient. + + + im_SupportsOverrides(); + + \bold{Macro Description.} Returns TRUE if the im_CreateOverride function + really will create a pop-up. + + + The im object defines these macros to be FALSE, and allows specific im + subclasses (such as xim) to override the macros. The idea behind the existance + of these predicates is to be able to, in the future, modify frame to use + override windows for dialogue boxes under window servers that support + overrides. + + \paragraph{Associating a view with an interaction manager window}\indexi{Interaction manager++Linking to a view} \indexi{ \italic{im_SetView}} ! \example{ ! void im_SetView (im, topLevel) struct im *im; *************** *** 524,532 **** for any input. } ! \begindata{bp,3246752} ! \enddata{bp,3246752} ! \view{bpv,3246752,51,0,0} \paragraph{Providing an exit for the interaction loop}\indexi{Interaction manager++Exiting the interaction loop} \indexi{ \italic{im_KeyboardProcessor}} --- 597,605 ---- for any input. } ! \begindata{bp,269636064} ! \enddata{bp,269636064} ! \view{bpv,269636064,0,0,0} \paragraph{Providing an exit for the interaction loop}\indexi{Interaction manager++Exiting the interaction loop} \indexi{ \italic{im_KeyboardProcessor}} *************** *** 574,582 **** future. } ! \begindata{bp,3365696} ! \enddata{bp,3365696} ! \view{bpv,3365696,52,0,0} \paragraph{Setting an interaction event}\indexi{Interaction manager++Setting an interaction event} \indexi{ \italic{im_SetInteractionEvent}} --- 647,655 ---- future. } ! \begindata{bp,269556532} ! \enddata{bp,269556532} ! \view{bpv,269556532,1,0,0} \paragraph{Setting an interaction event}\indexi{Interaction manager++Setting an interaction event} \indexi{ \italic{im_SetInteractionEvent}} *************** *** 632,640 **** } ! \begindata{bp,3426120} ! \enddata{bp,3426120} ! \view{bpv,3426120,53,0,0} \subsection{Managing windows and the window manager} --- 705,713 ---- } ! \begindata{bp,269457540} ! \enddata{bp,269457540} ! \view{bpv,269457540,2,0,0} \subsection{Managing windows and the window manager} *************** *** 717,725 **** function. } ! \begindata{bp,3248496} ! \enddata{bp,3248496} ! \view{bpv,3248496,54,0,0} \subsection{Cursors} --- 790,798 ---- function. } ! \begindata{bp,269527100} ! \enddata{bp,269527100} ! \view{bpv,269527100,3,0,0} \subsection{Cursors} *************** *** 764,772 **** local cursors will be restored. ! \begindata{bp,3230960} ! \enddata{bp,3230960} ! \view{bpv,3230960,65,0,0}} \subsection{Directories} --- 837,845 ---- local cursors will be restored. ! \begindata{bp,269457496} ! \enddata{bp,269457496} ! \view{bpv,269457496,4,0,0}} \subsection{Directories} *************** *** 796,804 **** to run considerably faster than would be otherwise possible. } ! \begindata{bp,3199840} ! \enddata{bp,3199840} ! \view{bpv,3199840,55,0,0} \paragraph{Getting a directory}\indexi{Interaction manager++Getting the current directory} \indexi{ \italic{im_GetDirectory}} --- 869,877 ---- to run considerably faster than would be otherwise possible. } ! \begindata{bp,269527056} ! \enddata{bp,269527056} ! \view{bpv,269527056,5,0,0} \paragraph{Getting a directory}\indexi{Interaction manager++Getting the current directory} \indexi{ \italic{im_GetDirectory}} *************** *** 820,828 **** \italic{getwd} subroutine. ! \begindata{bp,3245528} ! \enddata{bp,3245528} ! \view{bpv,3245528,66,0,0}} \subsection{Keyboard and user interaction} --- 893,901 ---- \italic{getwd} subroutine. ! \begindata{bp,269493116} ! \enddata{bp,269493116} ! \view{bpv,269493116,6,0,0}} \subsection{Keyboard and user interaction} *************** *** 935,943 **** as im__ProvideArg(im, 1). } ! \begindata{bp,3187600} ! \enddata{bp,3187600} ! \view{bpv,3187600,56,0,0} \paragraph{Finding if an argument has been provided}\indexi{Interaction manager++Finding if an argument was provided} \indexi{ \italic{im_ArgProvided}} --- 1008,1016 ---- as im__ProvideArg(im, 1). } ! \begindata{bp,269457424} ! \enddata{bp,269457424} ! \view{bpv,269457424,7,0,0} \paragraph{Finding if an argument has been provided}\indexi{Interaction manager++Finding if an argument was provided} \indexi{ \italic{im_ArgProvided}} *************** *** 1013,1021 **** } ! \begindata{bp,1070920} ! \enddata{bp,1070920} ! \view{bpv,1070920,57,0,0} \paragraph{Getting a character}\indexi{Interaction manager++Getting a character} \indexi{ \italic{im_GetCharacter}} --- 1086,1094 ---- } ! \begindata{bp,269457380} ! \enddata{bp,269457380} ! \view{bpv,269457380,8,0,0} \paragraph{Getting a character}\indexi{Interaction manager++Getting a character} \indexi{ \italic{im_GetCharacter}} *************** *** 1037,1045 **** } ! \begindata{bp,3214128} ! \enddata{bp,3214128} ! \view{bpv,3214128,67,0,0} \paragraph{Asking if the user has Interrupted}\indexi{Interaction manager++Getting a character} \italic{\indexi{im_CheckForInterrupt}} --- 1110,1118 ---- } ! \begindata{bp,269457336} ! \enddata{bp,269457336} ! \view{bpv,269457336,9,0,0} \paragraph{Asking if the user has Interrupted}\indexi{Interaction manager++Getting a character} \italic{\indexi{im_CheckForInterrupt}} *************** *** 1117,1125 **** by \italic{im_GetWriteID}. } ! \begindata{bp,2313672} ! \enddata{bp,2313672} ! \view{bpv,2313672,58,0,0} \paragraph{Setting a program name}\indexi{Interaction manager++Setting a program name} \indexi{ \italic{im_SetProgramName}} --- 1190,1198 ---- by \italic{im_GetWriteID}. } ! \begindata{bp,269526984} ! \enddata{bp,269526984} ! \view{bpv,269526984,10,0,0} \paragraph{Setting a program name}\indexi{Interaction manager++Setting a program name} \indexi{ \italic{im_SetProgramName}} *************** *** 1195,1203 **** the cut buffer. } ! \begindata{bp,3237984} ! \enddata{bp,3237984} ! \view{bpv,3237984,59,0,0} \paragraph{Closing from the cut buffer}\indexi{Interaction manager++Closing a file from the cut buffer} \indexi{ \italic{im_CloseFromCutBuffer}} --- 1268,1276 ---- the cut buffer. } ! \begindata{bp,269492928} ! \enddata{bp,269492928} ! \view{bpv,269492928,11,0,0} \paragraph{Closing from the cut buffer}\indexi{Interaction manager++Closing a file from the cut buffer} \indexi{ \italic{im_CloseFromCutBuffer}} *************** *** 1283,1291 **** from a series of ^K commands to the cut buffer. } ! \begindata{bp,3044560} ! \enddata{bp,3044560} ! \view{bpv,3044560,60,0,0} \subsection{Attributes} --- 1356,1364 ---- from a series of ^K commands to the cut buffer. } ! \begindata{bp,269492884} ! \enddata{bp,269492884} ! \view{bpv,269492884,12,0,0} \subsection{Attributes} *************** *** 1363,1371 **** im_SetPreferedDimensions call. } ! \begindata{bp,3241272} ! \enddata{bp,3241272} ! \view{bpv,3241272,61,0,0} \paragraph{Setting the last used interaction manager}\indexi{Interaction manager++Setting the last used manager} \indexi{ \italic{im_SetLastUsed}} --- 1436,1444 ---- im_SetPreferedDimensions call. } ! \begindata{bp,269492840} ! \enddata{bp,269492840} ! \view{bpv,269492840,13,0,0} \paragraph{Setting the last used interaction manager}\indexi{Interaction manager++Setting the last used manager} \indexi{ \italic{im_SetLastUsed}} *************** *** 1446,1454 **** \bold{Usage.} See im_GetLastCmd and im_AllocLastCmd.} ! \begindata{bp,3250072} ! \enddata{bp,3250072} ! \view{bpv,3250072,62,0,0} \paragraph{Setting the title}\indexi{Interaction manager++Allocate the last command} \indexi{ \italic{im_SetTitle}} --- 1519,1527 ---- \bold{Usage.} See im_GetLastCmd and im_AllocLastCmd.} ! \begindata{bp,269492796} ! \enddata{bp,269492796} ! \view{bpv,269492796,14,0,0} \paragraph{Setting the title}\indexi{Interaction manager++Allocate the last command} \indexi{ \italic{im_SetTitle}} *************** *** 1518,1526 **** command was of your new particular command type. } ! \begindata{bp,3218744} ! \enddata{bp,3218744} ! \view{bpv,3218744,63,0,0} \paragraph{Adding an arbitrary file handler}\indexi{Interaction manager++Adding a file handle} \indexi{ \italic{im_AddFileHandler}} --- 1591,1599 ---- command was of your new particular command type. } ! \begindata{bp,269492752} ! \enddata{bp,269492752} ! \view{bpv,269492752,15,0,0} \paragraph{Adding an arbitrary file handler}\indexi{Interaction manager++Adding a file handle} \indexi{ \italic{im_AddFileHandler}} *************** *** 1593,1601 **** } ! \begindata{bp,3216496} ! \enddata{bp,3216496} ! \view{bpv,3216496,64,0,0} \paragraph{Adding a "can-out" handler}\indexi{Interaction manager++Adding a file handle} \indexi{ \italic{im_AddCanOutHandler}} --- 1666,1674 ---- } ! \begindata{bp,269536952} ! \enddata{bp,269536952} ! \view{bpv,269536952,16,0,0} \paragraph{Adding a "can-out" handler}\indexi{Interaction manager++Adding a file handle} \indexi{ \italic{im_AddCanOutHandler}} *************** *** 1681,1684 **** executing any non-reentrant code (like \italic{malloc} or \italic{free}) when your \italic{proc} routine is called. ! }\enddata{text,3450600} --- 1754,1757 ---- executing any non-reentrant code (like \italic{malloc} or \italic{free}) when your \italic{proc} routine is called. ! }\enddata{text,269545804} *** atk/basics/common/init.c Wed Sep 26 16:03:17 1990 --- atk/basics/common/init.c.NEW Wed Apr 3 21:16:23 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/init.c,v 2.11 90/08/11 23:46:35 ajp Exp $ */ /* $ACIS:init.c 1.5$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/init.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/init.c,v 2.11 90/08/11 23:46:35 ajp Exp $"; #endif /* lint */ /* init.c --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/init.c,v 2.14 91/02/12 17:12:45 gk5g Exp $ */ /* $ACIS:init.c 1.5$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/init.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/init.c,v 2.14 91/02/12 17:12:45 gk5g Exp $"; #endif /* lint */ /* init.c *************** *** 14,26 **** * Read a user's init file to bind keys and menus. */ #include #include #include - #include /* sys/file.h */ - #include - #include #include #include #include --- 14,25 ---- * Read a user's init file to bind keys and menus. */ + #include /* sys/file.h */ + #include #include #include #include #include #include #include *************** *** 27,34 **** #include #include #include - extern char *index(); char *GetToken(); void ErrorMsg(); --- 26,33 ---- #include #include #include + #include char *GetToken(); void ErrorMsg(); *************** *** 299,305 **** boolean forceLoad; { ! char *extension, *type, *attributes; extension = GetToken(args); if (extension == NULL) { --- 298,304 ---- boolean forceLoad; { ! char *extension, *type, *attributes, *existingAttributes; extension = GetToken(args); if (extension == NULL) { *************** *** 313,322 **** } attributes = GetToken(args); if (forceLoad && (class_Load(type) == NULL)) ErrorMsg("Could not load class %s in addfiletype command for extension %s.\n", type, extension); ! else ! filetype_AddEntry(extension, type, attributes); } /* Call the function associated with a proctable command with add-hoc --- 312,325 ---- } attributes = GetToken(args); + existingAttributes = GetToken(args); + if (forceLoad && (class_Load(type) == NULL)) ErrorMsg("Could not load class %s in addfiletype command for extension %s.\n", type, extension); ! else { ! filetype_AddEntry(extension, type, attributes); ! filetype_AddExistingAttributes(extension, type, existingAttributes); ! } } /* Call the function associated with a proctable command with add-hoc *************** *** 516,521 **** --- 519,537 ---- return returnChar; } + static struct keys *GetKeyFromKeystate(self, keystate) + struct init *self; + struct keystate *keystate; + { + struct keymap *keymap = keystate->orgMap; + struct keys *keys; + + for (keys = self->keys; keys != NULL && keys->keymap != keymap; keys = keys->next) { + } + + return keys; + } + struct keystate *init__ModifyKeystate(self, keystate) struct init *self; struct keystate *keystate; *************** *** 524,529 **** --- 540,546 ---- struct keys *keys; struct keystate *traverse, **previous; struct keystateList *freeItem, *next; + boolean addKeymap; for (freeItem = self->usedKeystates; freeItem != NULL; freeItem = next) { next = freeItem->next; *************** *** 533,542 **** self->usedKeystates = NULL; for (keys = self->keys; keys != NULL; keys = keys->next) { previous = &keystate; ! for (traverse = keystate; traverse != NULL; traverse = traverse->next) { ! if (keys->inherit ? ! class_IsTypeByName(class_GetTypeName(traverse->object), keys->class) : ! (strcmp(class_GetTypeName(traverse->object), keys->class) == 0)) { if (freeKeystates == NULL) { freeItem = (struct keystateList *) malloc(sizeof(struct keystateList)); freeItem->keystate = keystate_Create(traverse->object, keys->keymap); --- 550,570 ---- self->usedKeystates = NULL; for (keys = self->keys; keys != NULL; keys = keys->next) { previous = &keystate; ! for (traverse = keystate; traverse != NULL; traverse = traverse->next) { ! if (keys->inherit) { ! addKeymap = class_IsTypeByName(class_GetTypeName(traverse->object), keys->class); ! ! if (addKeymap) { ! struct keys *k = GetKeyFromKeystate(self, traverse); ! ! addKeymap = (k == NULL || ! class_IsTypeByName(k->class, keys->class)); ! } ! } ! else { ! addKeymap = strcmp(class_GetTypeName(traverse->object), keys->class) == 0; ! } ! ! if (addKeymap) { if (freeKeystates == NULL) { freeItem = (struct keystateList *) malloc(sizeof(struct keystateList)); freeItem->keystate = keystate_Create(traverse->object, keys->keymap); *************** *** 548,558 **** freeItem->keystate->orgMap = keys->keymap; freeItem->keystate->curMap = keys->keymap; keystate_Reset(freeItem->keystate); ! } freeItem->next = self->usedKeystates; self->usedKeystates = freeItem; *previous = freeItem->keystate; ! freeItem->keystate->next = traverse; } previous = &traverse->next; } --- 576,588 ---- freeItem->keystate->orgMap = keys->keymap; freeItem->keystate->curMap = keys->keymap; keystate_Reset(freeItem->keystate); ! } freeItem->next = self->usedKeystates; self->usedKeystates = freeItem; *previous = freeItem->keystate; ! freeItem->keystate->next = traverse; ! /* Don't need to attempt to add this keystate again */ ! break; } previous = &traverse->next; } *************** *** 600,606 **** freeMenulists = freeItem; } self->usedMenus = NULL; ! for (menus = self->menus; menus != NULL; menus = menus->next) if ((thisObject = CheckML(menulist, menus->class, menus->inherit)) != NULL) { if (freeMenulists == NULL) { freeItem = (struct mlList *) malloc(sizeof(struct mlList)); --- 630,636 ---- freeMenulists = freeItem; } self->usedMenus = NULL; ! for (menus = self->menus; menus != NULL; menus = menus->next) { if ((thisObject = CheckML(menulist, menus->class, menus->inherit)) != NULL) { if (freeMenulists == NULL) { freeItem = (struct mlList *) malloc(sizeof(struct mlList)); *************** *** 616,623 **** freeItem->next = self->usedMenus; self->usedMenus = freeItem; menulist_ChainAfterML(freeItem->menulist, topMenulist, (long) topMenulist); ! topMenulist = freeItem->menulist; ! } return topMenulist; } --- 646,654 ---- freeItem->next = self->usedMenus; self->usedMenus = freeItem; menulist_ChainAfterML(freeItem->menulist, topMenulist, (long) topMenulist); ! topMenulist = freeItem->menulist; ! } ! } return topMenulist; } *** atk/basics/common/menulist.doc Wed Nov 22 11:51:05 1989 --- atk/basics/common/menulist.doc.NEW Wed Feb 13 16:49:03 1991 *************** *** 1,4 **** ! \begindata{text,271124236} \textdsversion{12} \template{be2guide} \define{bold --- 1,4 ---- ! \begindata{text,269045056} \textdsversion{12} \template{be2guide} \define{bold *************** *** 61,66 **** --- 61,67 ---- *\paramname{menuProc}, long \paramname{functionData}, long \paramname{mask});} + \fixedtext{void \bold{menulist_}ChainAfterML }\fixedindent{(struct menulist *\paramname{menulist}, struct menulist *\paramname{chainee}, long \paramname{key});} *************** *** 238,243 **** --- 239,245 ---- + In general, if you change the mask on a menulist, you should repost it (SetMask returns a boolean, which is TRUE if the mask changes, to facilitate this). *************** *** 304,312 **** ! \begindata{bp,270664744} ! \enddata{bp,270664744} ! \view{bpv,270664744,203,0,0} \subsection{Creating menu lists} --- 306,314 ---- ! \begindata{bp,269060760} ! \enddata{bp,269060760} ! \view{bpv,269060760,0,0,0} \subsection{Creating menu lists} *************** *** 378,386 **** should call \italic{menulist_Create}. } ! \begindata{bp,271163444} ! \enddata{bp,271163444} ! \view{bpv,271163444,204,0,0} \subsection{Menu list versions} --- 380,388 ---- should call \italic{menulist_Create}. } ! \begindata{bp,269142056} ! \enddata{bp,269142056} ! \view{bpv,269142056,1,0,0} \subsection{Menu list versions} *************** *** 429,437 **** called through the interaction manager. } ! \begindata{bp,271335940} ! \enddata{bp,271335940} ! \view{bpv,271335940,205,0,0} \subsection{Copying a menu list} --- 431,439 ---- called through the interaction manager. } ! \begindata{bp,269059192} ! \enddata{bp,269059192} ! \view{bpv,269059192,2,0,0} \subsection{Copying a menu list} *************** *** 491,499 **** helloworld class, \italic{hwmlist}. } ! \begindata{bp,271294652} ! \enddata{bp,271294652} ! \view{bpv,271294652,206,0,0} \subsection{Linking views and menu lists} --- 493,501 ---- helloworld class, \italic{hwmlist}. } ! \begindata{bp,269059120} ! \enddata{bp,269059120} ! \view{bpv,269059120,3,0,0} \subsection{Linking views and menu lists} *************** *** 548,556 **** associates \italic{hw->mlist}, the menu list of new instance with the new instance. }\ ! \begindata{bp,271294608} ! \enddata{bp,271294608} ! \view{bpv,271294608,207,0,0} \subsection{Adding and deleting items} --- 550,558 ---- associates \italic{hw->mlist}, the menu list of new instance with the new instance. }\ ! \begindata{bp,269059052} ! \enddata{bp,269059052} ! \view{bpv,269059052,4,0,0} \subsection{Adding and deleting items} *************** *** 626,634 **** } }\ ! \begindata{bp,271285568} ! \enddata{bp,271285568} ! \view{bpv,271285568,208,0,0} \paragraph{Clearing a menu list} \indexi{ \italic{menulist_ClearML}} --- 628,636 ---- } }\ ! \begindata{bp,269058984} ! \enddata{bp,269058984} ! \view{bpv,269058984,5,0,0} \paragraph{Clearing a menu list} \indexi{ \italic{menulist_ClearML}} *************** *** 672,680 **** \leftindent{\bold{Method description.} Deletes an item from a menu list.} ! \begindata{bp,271294564} ! \enddata{bp,271294564} ! \view{bpv,271294564,209,0,0} \subsection{Menu list hierarchy} --- 674,682 ---- \leftindent{\bold{Method description.} Deletes an item from a menu list.} ! \begindata{bp,269058916} ! \enddata{bp,269058916} ! \view{bpv,269058916,6,0,0} \subsection{Menu list hierarchy} *************** *** 697,703 **** } ! \paragraph{Assigning the parent's menus precedence over the child's menus} \indexi{ \italic{menulist_ChainBeforeML}}\indexi{Menulist++Precedence} --- 699,705 ---- } ! \paragraph{Assigning the child's menus precedence over the parent's menus} \indexi{ \italic{menulist_ChainBeforeML}}\indexi{Menulist++Precedence} *************** *** 746,755 **** } ! \begindata{bp,271294520} ! \enddata{bp,271294520} ! \view{bpv,271294520,210,0,0} ! \paragraph{Assigning the child's menus precedence over the parent's menus} \indexi{Menulist++Precedence} \indexi{ \italic{menulist_ChainAfterML}} --- 748,757 ---- } ! \begindata{bp,269058848} ! \enddata{bp,269058848} ! \view{bpv,269058848,7,0,0} ! \paragraph{Assigning the parent's menus precedence over the child's menus} \indexi{Menulist++Precedence} \indexi{ \italic{menulist_ChainAfterML}} *************** *** 839,847 **** }\ ! \begindata{bp,271294476} ! \enddata{bp,271294476} ! \view{bpv,271294476,211,0,0} \paragraph{Getting the next menu item} \indexi{ \italic{menulist_NextME}} --- 841,849 ---- }\ ! \begindata{bp,269058776} ! \enddata{bp,269058776} ! \view{bpv,269058776,8,0,0} \paragraph{Getting the next menu item} \indexi{ \italic{menulist_NextME}} *************** *** 924,932 **** the caller. }\ ! \begindata{bp,270426976} ! \enddata{bp,270426976} ! \view{bpv,270426976,212,0,0} \paragraph{Rewinding the menu list} \indexi{ \italic{menulist_RewindML}} --- 926,934 ---- the caller. }\ ! \begindata{bp,269129348} ! \enddata{bp,269129348} ! \view{bpv,269129348,9,0,0} \paragraph{Rewinding the menu list} \indexi{ \italic{menulist_RewindML}} *************** *** 994,997 **** ! \enddata{text,271124236} --- 996,999 ---- ! \enddata{text,269045056} *** atk/basics/common/message.c Wed Sep 26 16:03:28 1990 --- atk/basics/common/message.c.NEW Tue Apr 2 18:15:51 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.c,v 2.6 90/08/11 23:13:39 ajp Exp $ */ /* $ACIS:message.c 1.2$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.c,v 2.6 90/08/11 23:13:39 ajp Exp $"; #endif /* lint */ /* message.c --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.c,v 2.7 91/04/02 16:52:49 susan Exp $ */ /* $ACIS:message.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.c,v 2.7 91/04/02 16:52:49 susan Exp $"; #endif /* lint */ /* message.c *************** *** 65,70 **** --- 65,94 ---- return -1; } return msghandler_AskForString(handler, priority, prompt, defaultString, buffer, bufferSize); + } + + int message__AskForPasswd(classID, view, priority, prompt, defaultString, buffer, bufferSize) + struct classheader *classID; + struct view *view; + int priority; + char *prompt, *defaultString, *buffer; + int bufferSize; + { + + struct msghandler *handler; + + if (view == NULL) { + view = (struct view *) im_GetLastUsed(); + if (view == NULL) + return -1; + } + + handler = (struct msghandler *) view_WantHandler(view, "message"); + + if (handler == NULL) { + return -1; + } + return msghandler_AskForPasswd(handler, priority, prompt, defaultString, buffer, bufferSize); } int message__AskForStringCompleted(classID, view, priority, prompt, defaultString, buffer, bufferSize, keystate, completionProc, helpProc, functionData, flags) *** atk/basics/common/message.ch Wed Sep 26 16:03:29 1990 --- atk/basics/common/message.ch.NEW Tue Apr 2 18:15:52 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.ch,v 2.8 90/08/11 23:12:04 ajp Exp $ */ /* $ACIS:message.ch 1.5$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidmessage_H = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.ch,v 2.8 90/08/11 23:12:04 ajp Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* message.H --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.ch,v 2.10 91/04/02 16:53:27 susan Exp $ */ /* $ACIS:message.ch 1.5$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidmessage_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/message.ch,v 2.10 91/04/02 16:53:27 susan Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* message.H *************** *** 53,58 **** --- 53,59 ---- classprocedures: DisplayString(struct view *view, int priority, char *string) returns int; AskForString(struct view *view, int priority, char *prompt, char *defaultString, char *buffer, int bufferSize) returns int; + AskForPasswd(struct view *view, int priority, char *prompt, char *defaultString, char *buffer, int bufferSize) returns int; AskForStringCompleted(struct view *view, int priority, char *prompt, char *defaultString, char *buffer, int bufferSize, struct keymap *keystate, procedure completionProc, procedure helpProc, long functionData, int flags) returns int; MultipleChoiceQuestion(struct view *view, int priority, char *prompt, long defaultChoice, long *result, char **choices, char *abbrevKeys) returns int; *** atk/basics/common/msghndlr.c Wed Sep 26 16:03:30 1990 --- atk/basics/common/msghndlr.c.NEW Tue Apr 2 18:15:53 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.c,v 2.9 90/08/12 00:07:43 ajp Exp $ */ /* $ACIS:msghndlr.c 1.2$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.c,v 2.9 90/08/12 00:07:43 ajp Exp $"; #endif /* lint */ /* Complete bogosity. */ --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.c,v 2.10 91/04/02 16:53:14 susan Exp $ */ /* $ACIS:msghndlr.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.c,v 2.10 91/04/02 16:53:14 susan Exp $"; #endif /* lint */ /* Complete bogosity. */ *************** *** 30,35 **** --- 30,44 ---- int bufferSize; { return -1; + } + + int msghandler__AskForPasswd(self, priority, prompt, defaultString, buffer, bufferSize) + struct msghandler *self; + int priority; + char *prompt, *defaultString, *buffer; + int bufferSize; + { + return msghandler_AskForString(self,priority,prompt,defaultString,buffer,bufferSize); } int msghandler__AskForStringCompleted(self, priority, prompt, defaultString, buffer, bufferSize, keystate, completionProc, helpProc, functionData, flags) *** atk/basics/common/msghndlr.ch Wed Nov 22 11:50:08 1989 --- atk/basics/common/msghndlr.ch.NEW Tue Apr 2 18:15:54 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/msghndlr.ch,v 2.7 89/06/16 11:57:51 wjh Exp $ */ /* $ACIS:msghndlr.ch 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/msghndlr.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidmsghandler_H = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/msghndlr.ch,v 2.7 89/06/16 11:57:51 wjh Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* msghndlr.H --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.ch,v 2.8 91/04/02 16:53:36 susan Exp $ */ /* $ACIS:msghndlr.ch 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidmsghandler_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/msghndlr.ch,v 2.8 91/04/02 16:53:36 susan Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* msghndlr.H *************** *** 49,54 **** --- 49,55 ---- methods: DisplayString(int priority, char *string) returns int; AskForString(int priority, char *prompt, char *defaultString, char *buffer, int bufferSize) returns int; + AskForPasswd(int priority, char *prompt, char *defaultString, char *buffer, int bufferSize) returns int; AskForStringCompleted(int priority, char *prompt, char *defaultString, char *buffer, int bufferSize, struct keystate *keystate, procedure completionProc, procedure helpProc, long functionData, int flags) returns int; MultipleChoiceQuestion(int priority, char *prompt, long defaultChoice, long *result, char **choices, char *abbrevKeys) returns int; *** atk/basics/common/observe.c Wed Nov 22 11:49:00 1989 --- atk/basics/common/observe.c.NEW Fri Dec 14 16:45:07 1990 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/observe.c,v 2.8 89/06/23 16:46:59 wjh Exp $ */ /* $ACIS:observe.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/observe.c,v $ */ #ifndef lint ! char *observe_rcsid = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/observe.c,v 2.8 89/06/23 16:46:59 wjh Exp $"; #endif /* lint */ #include --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/observe.c,v 2.9 90/12/14 14:58:43 ajp Exp $ */ /* $ACIS:observe.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/observe.c,v $ */ #ifndef lint ! char *observe_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/observe.c,v 2.9 90/12/14 14:58:43 ajp Exp $"; #endif /* lint */ #include *************** *** 116,123 **** register int i; if ((i = FindObserver(self, observer)) != -1) { ! while (i++ < self->nObservers) self->observers[i - 1] = self->observers[i]; self->nObservers -= 1; } } --- 116,124 ---- register int i; if ((i = FindObserver(self, observer)) != -1) { ! while (++i < self->nObservers) { self->observers[i - 1] = self->observers[i]; + } self->nObservers -= 1; } } *************** *** 128,136 **** register struct observable **observers; register int i; ! ! for (i = 0, observers = self->observers; i < self->nObservers; i++, observers++) ! observable_ObservedChanged(*observers, self, value); } void observable__ObservedChanged(self, changed, value) --- 129,142 ---- register struct observable **observers; register int i; ! /* ! We go backwards since objects may be removed from this list ! as we go along. ! */ ! ! for (i = self->nObservers - 1; i >= 0; i--) { ! observable_ObservedChanged(self->observers[i], self, value); ! } } void observable__ObservedChanged(self, changed, value) *** atk/basics/common/pixelimg.c Wed Sep 26 16:03:35 1990 --- atk/basics/common/pixelimg.c.NEW Mon Mar 4 13:18:27 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.c,v 2.10 90/08/11 20:41:40 ajp Exp $ */ /* $ACIS:pixelimg.c 1.7$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.c,v $ */ #ifndef lint ! char *pixelimage_rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.c,v 2.10 90/08/11 20:41:40 ajp Exp $"; #endif /* lint */ --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.c,v 2.10 90/08/11 20:41:40 ajp Exp $ */ /* $ACIS:pixelimg.c 1.7$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.c,v $ */ #ifndef lint ! char *pixelimage_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.c,v 2.10 90/08/11 20:41:40 ajp Exp $"; #endif /* lint */ *** atk/basics/common/pixelimg.ch Wed Nov 22 11:50:13 1989 --- atk/basics/common/pixelimg.ch.NEW Mon Mar 4 13:18:32 1991 *************** *** 2,10 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/pixelimg.ch,v 2.6 89/02/20 12:27:09 ghoti Exp $ */ /* $ACIS:pixelimg.ch 1.5$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/pixelimg.ch,v $ */ /* * pixelimg.H --- 2,10 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.ch,v 2.6 89/02/20 12:27:09 ghoti Exp $ */ /* $ACIS:pixelimg.ch 1.5$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.ch,v $ */ /* * pixelimg.H *************** *** 11,17 **** */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/pixelimg.ch,v 2.6 89/02/20 12:27:09 ghoti Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* --- 11,17 ---- */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/pixelimg.ch,v 2.6 89/02/20 12:27:09 ghoti Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* *** atk/basics/common/proctbl.c Wed Nov 22 11:49:08 1989 --- atk/basics/common/proctbl.c.NEW Tue Apr 2 18:15:56 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/proctbl.c,v 2.9 89/05/21 22:57:53 wjh Exp $ */ /* $ACIS:proctbl.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/proctbl.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/basics/common/RCS/proctbl.c,v 2.9 89/05/21 22:57:53 wjh Exp $"; #endif /* lint */ /* proctbl.c -- A module that manages a mapping from strings to procedure pointers. --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.c,v 2.9 89/05/21 22:57:53 wjh Exp $ */ /* $ACIS:proctbl.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.c,v 2.9 89/05/21 22:57:53 wjh Exp $"; #endif /* lint */ /* proctbl.c -- A module that manages a mapping from strings to procedure pointers. *** atk/basics/common/proctbl.ch Wed Sep 26 16:03:37 1990 --- atk/basics/common/proctbl.ch.NEW Wed Mar 27 17:53:35 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.ch,v 2.10 90/08/11 20:03:44 ajp Exp $ */ /* $ACIS:proctbl.ch 1.2$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidproctable_H = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.ch,v 2.10 90/08/11 20:03:44 ajp Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* proctbl.ch -- A module that manages a mapping from strings to procedure pointers. --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.ch,v 2.11 91/03/27 17:48:41 gk5g Exp $ */ /* $ACIS:proctbl.ch 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidproctable_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/proctbl.ch,v 2.11 91/03/27 17:48:41 gk5g Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ /* proctbl.ch -- A module that manages a mapping from strings to procedure pointers. *************** *** 24,30 **** proctable_NessMarker, /* object of type nessmark */ proctable_StaticString, /* returns a pointer to a string which must NOT be freed by the recipient */ ! proctable_DisposeString, /* returns a pointer to a string which MUST be freed by recipient */ }; --- 24,30 ---- proctable_NessMarker, /* object of type nessmark */ proctable_StaticString, /* returns a pointer to a string which must NOT be freed by the recipient */ ! proctable_DisposeString /* returns a pointer to a string which MUST be freed by recipient */ }; *** atk/basics/common/profile.c Wed Sep 26 16:03:38 1990 --- atk/basics/common/profile.c.NEW Tue Apr 2 18:15:57 1991 *************** *** 18,24 **** #endif /* #ifndef SYSV */ #endif /* #ifdef AIX */ ! #if (!defined(AIX) && !defined(_IBMR2) && !defined(HP300_ENV)) #include #endif /* (!defined(AIX) && !defined(_IBMR2) && !defined(HP300_ENV)) */ --- 18,24 ---- #endif /* #ifndef SYSV */ #endif /* #ifdef AIX */ ! #if (!defined(AIX) && !defined(_IBMR2) && !defined(HP300_ENV) && !defined(M_UNIX)) #include #endif /* (!defined(AIX) && !defined(_IBMR2) && !defined(HP300_ENV)) */ *** atk/basics/common/region.c Mon Aug 6 11:03:10 1990 --- atk/basics/common/region.c.NEW Mon May 20 17:31:24 1991 *************** *** 4,15 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/region.c,v 2.6 90/05/09 14:05:07 ajp Exp $ */ /* $ACIS:region.c 1.2$ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/region.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/region.c,v 2.6 90/05/09 14:05:07 ajp Exp $"; #endif /* lint */ #include --- 4,15 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/region.c,v 2.6 1990/05/09 14:05:07 ajp Exp $ */ /* $ACIS:region.c 1.2$ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/region.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/basics/common/RCS/region.c,v 2.6 1990/05/09 14:05:07 ajp Exp $"; #endif /* lint */ #include *** atk/basics/common/path.ch Sun May 12 21:11:26 1991 --- atk/basics/common/path.ch.NEW Fri Dec 14 16:45:10 1990 *************** *** 0 **** --- 1,49 ---- + /* + The path class is for caching information about a pathname -- + whether or not it names a directory, and if so, what the + directories and files are that it contains. + + The information returned by + IsDirectory, GetFiles, GetDirs, GetNumFiles and GetNumDirs + is only as recent as the last call to Scan. Scan will stat the + directory, and re-read it only if necessary. + */ + + class path[path] : observable[observe] { + classprocedures: + InitializeObject(struct path *self) returns boolean; + FinalizeObject(struct path *self); + Create(char *filepath) returns struct path *; + TruncatePath(char *filepath, char *resultPath, long limit, boolean tryHome) returns char *; + FreeTruncatedPaths(); + InputTruncatedPathCache(FILE *fp); + OutputTruncatedPathCache(FILE *fp); + ModifyToParentDirectory(char *filepath, boolean isDirectory) returns boolean; + UnfoldFileName(char *fromString, char *toString, char *baseName) returns char *; + methods: + Scan(boolean statEverything) returns boolean; + ReleaseFiles(char **filelist); + ReleaseDirs(char **dirlist); + Input(FILE *fp); + Output(FILE *fp); + IsDirectory() returns boolean; + GetFiles() returns char **; + GetDirs() returns char **; + GetNumFiles() returns long; + GetNumDirs() returns long; + GetTruncatedPath() returns char *; + macromethods: + GetPath() ((self)->filepath) + data: + char *filepath; + char *truncatedPath; + time_t changetime; + boolean haveScanned; + boolean knowIsDir; + boolean mayBeWrong; /* if the last scan didn't stat everything */ + boolean isDir; + char **files; + char **dirs; + long numFiles; + long numDirs; + }; *** atk/basics/common/path.c Thu May 30 19:39:44 1991 --- atk/basics/common/path.c.NEW Tue Apr 2 18:15:59 1991 *************** *** 0 **** --- 1,978 ---- + #include + #include + #include + + #include + #include + + #include + #include + #include + #include + #include + #include + + #include + + #include + + struct homestruct { + char fullPath[MAXPATHLEN]; + char shortPath[MAXPATHLEN]; + long fullLength; + long shortLength; + struct homestruct *next; + }; + + static struct homestruct *homes = NULL; + + #define INITIALCHUNK 30 /* files */ + + static void FreeList(list) + char **list; + { + long i; + + if (list != NULL) { + for (i=0; list[i] != NULL; i++) { + free(list[i]); + } + free(list); + } + } /* path__FreeList */ + + static void FreeFilesAndDirs(self) + struct path *self; + { + FreeList(self->files); + FreeList(self->dirs); + self->files = NULL; + self->dirs = NULL; + } /* FreeFilesAndDirs */ + + static void SetPath(self, filepath) + struct path *self; + char *filepath; + { + if (self->filepath != NULL) { + free(self->filepath); + } + + if (self->truncatedPath != NULL) { + free(self->truncatedPath); + self->truncatedPath = NULL; + } + + FreeFilesAndDirs(self); + + if (filepath != NULL) { + /* SHOULD CACHE THESE THINGS */ + self->filepath = (char *) malloc(strlen(filepath) + 1); + strcpy(self->filepath, filepath); + } + else { + self->filepath = NULL; + } + + self->haveScanned = FALSE; + self->knowIsDir = FALSE; + + } /* SetPath */ + + void path__InputTruncatedPathCache(c, fp) + struct classheader *c; + FILE *fp; + { + char lens[MAXPATHLEN]; + char fpath[MAXPATHLEN]; + char spath[MAXPATHLEN]; + long flen; + long slen; + struct homestruct *aHome; + struct homestruct *newHome; + struct homestruct *endHome = NULL; + struct homestruct *inputHomes = NULL; + boolean gotHome; + + fgets(lens, MAXPATHLEN, fp); + while (strncmp(lens, "no", 2) != 0) { + sscanf(lens, "fullpathlen: %d shortpathlen: %d\n", &flen, &slen); + fgets(fpath, MAXPATHLEN, fp); + fgets(spath, MAXPATHLEN, fp); + fpath[flen] = '\0'; + spath[slen] = '\0'; + gotHome = FALSE; + for (aHome = homes; aHome != NULL; aHome = aHome->next) { + if (strcmp(aHome->fullPath, fpath) == 0) { + gotHome = TRUE; + break; + } + } + if (!gotHome) { + newHome = (struct homestruct *) malloc(sizeof(struct homestruct)); + strcpy(newHome->fullPath, fpath); + strcpy(newHome->shortPath, spath); + newHome->fullLength = flen; + newHome->shortLength = slen; + + if (inputHomes == NULL) { + endHome = newHome; + } + newHome->next = inputHomes; + inputHomes = newHome; + } + fgets(lens, MAXPATHLEN, fp); + } + + if (endHome != NULL) { + endHome->next = homes; + } + homes = inputHomes; + + } /* path__InputTruncatedPathCache */ + + void path__OutputTruncatedPathCache(c, fp) + struct classheader *c; + FILE *fp; + { + struct homestruct *aHome; + + for (aHome = homes; aHome != NULL; aHome = aHome->next) { + fprintf(fp, "fullpathlen: %d shortpathlen: %d\n", aHome->fullLength, aHome->shortLength); + fprintf(fp, "%s\n%s\n", aHome->fullPath, aHome->shortPath); + } + fprintf(fp, "no more home directories\n"); + } /* path__OutputTruncatedPathCache */ + + boolean path__InitializeObject(c, self) + struct classheader *c; + struct path *self; + { + self->filepath = NULL; + self->truncatedPath = NULL; + self->files = NULL; + self->dirs = NULL; + self->haveScanned = FALSE; + self->knowIsDir = FALSE; + self->mayBeWrong = TRUE; + self->numFiles = -1; + self->numDirs = -1; + self->changetime = 0; + + return TRUE; + } /* path__InitializeObject */ + + struct path *path__Create(c, filepath) + struct classheader *c; + char *filepath; + { + struct path *self = path_New(); + + SetPath(self, filepath); + + return self; + } /* path__Create */ + + + /* FoldName -- remove all "." and ".." components from a file name + modifies the buffer passed to it + Rules: + buffer is => use this string + / => / + . => . + .. => .. + empty => . + x => x + buffer starts use this start + /.. => / + x/.. => . + ./.. => .. + .. => .. + ../.. => ../.. (any number of ../) + x/y => x/y + buffer continues replace with + /./ => / + // => / + /x/../ => / + Does not know about ~ + */ + static void FoldName (path) + register char *path; /* path to fold */ + { + char *pStart, /* points to first char of a component */ + *pEnd; /* points to first char following + component */ + register char *dest; + int len; + + if (path == NULL) + return; + dest = path; + pEnd = (*path == '/' ? path + 1 : path); + for (;;) { + pStart = pEnd; + pEnd = index (pStart, '/'); + if (pEnd == NULL) + pEnd = pStart + strlen (pStart); + len = pEnd - pStart; + if (len == 0) { /* ignore empty components, but preserve trailing /'s. */ + if (*pEnd == '\0') + *dest++ = '/'; + } + else if (len == 1 && *pStart == '.' && pStart[1] == '/') + {} /* ignore single dots */ + else if (len == 2 && pStart[0] == '.' && pStart[1] == '.' && pStart[2] == '/') { + switch (dest - path) { + case 0: /* /.. => / and .. => .. */ + if (*path != '/') + *dest++ = '.', *dest++ = '.'; + break; + case 1: /* ./.. => .. and x/.. => . */ + if (*path == '.') + *dest++ = '.'; + else *path = '.'; + break; + case 2: /* ../.. => ../.. and x/.. => . */ + if (strncmp(path, "..", 2)==0) + *dest++ = '/', *dest++ = '.', *dest++ = '.'; + else *path = '.', dest = path+1; + break; + default: /* y/x/..=>y x/..=>. /x/..=>/ ../../..=>../../.. */ + if (strncmp(dest-3, "/..", 3)==0) + *dest++ = '/', *dest++ = '.', *dest++ = '.'; + else { /* this is the principal case for .. */ + while (dest > path && *--dest != '/') {} + if (dest == path && *path != '/') + *dest++ = '.'; + } + break; + } + } + else { + if (dest>path || *path == '/') + *dest++ = '/'; + strncpy (dest, pStart, len); + dest += len; + } + if (*pEnd++ == 0) + break; + } + if (dest==path) /* inital path was / . or empty */ + *dest++ = (*path == '/' ? '/' : '.'); + *dest++ = 0; + } + + static long SetNewHome(shortPathName, name, cell, dir, dirlen) + char *shortPathName; + char *name; + char *cell; + char *dir; + long dirlen; + { + struct homestruct *newHome; + long addedLen = 1; + + newHome = (struct homestruct *) malloc(sizeof(struct homestruct)); + newHome->next = homes; + homes = newHome; + strcpy(newHome->fullPath, dir); + newHome->fullLength = dirlen; + + strcpy(shortPathName, "~"); + if (name != NULL) { + strcat(shortPathName, name); + addedLen += strlen(name); + } + #ifdef AFS_ENV + if (cell != NULL) { + strcat(shortPathName, "@"); + strcat(shortPathName, cell); + addedLen += strlen(cell) + 1; + } + #endif /* AFS_ENV */ + strcpy(newHome->shortPath, shortPathName); + newHome->shortLength = strlen(shortPathName); + + return addedLen; + } + + /* + * Truncates a path so that the end is visible. + * (Initial code stolen from frame.c). + * + * If result is NULL the returned value must be freed. + * + * Also, call FreeTruncatedPaths() to free up the cached entries. + */ + + char *path__TruncatePath(c, frompath, result, limit, tryHome) + struct classheader *c; + char *frompath; + char *result; + long limit; + boolean tryHome; + { + char shorter[MAXPATHLEN]; + char foldedpath[MAXPATHLEN]; + char *path; + int len, maxLen; + static long lastUID = -1; + static char passwdName[100]; + static char passwdDir[MAXPATHLEN]; + static int passwdDirLen; + static char cellPasswdName[100]; + static char cellPasswdDir[MAXPATHLEN]; + static int cellPasswdDirLen; + static boolean gotBaseInfo = FALSE; + #ifdef AFS_ENV + static char lastCellName[MAXPATHLEN]; + static char thisCell[MAXPATHLEN]; + #endif /* AFS_ENV */ + + if (frompath == NULL) { + return NULL; + } + + if (! gotBaseInfo) { + char *homeDir = environ_GetHome(NULL); + char shortName[10]; + + if (homeDir != NULL) { + SetNewHome(shortName, NULL, NULL, homeDir, strlen(homeDir)); + } + #ifdef AFS_ENV + thisCell[0] = '\0'; + GetCurrentWSCell(thisCell, MAXPATHLEN); + #endif /* AFS_ENV */ + gotBaseInfo = TRUE; + } + + strcpy(foldedpath, frompath); + FoldName(foldedpath); + path = foldedpath; + + maxLen = limit; + shorter[0] = '\0'; + + if (tryHome && path[0] == '/' && path[1] != '\0') { + char tmpPath[MAXPATHLEN]; + struct passwd *passwd; + struct stat buf; + char *slash; + struct homestruct *aHome; + boolean hitCache = FALSE; + #ifdef AFS_ENV + boolean gotCell; + char cellName[MAXPATHLEN]; + #endif /* AFS_ENV */ + + + for (aHome = homes; aHome != NULL; aHome = aHome->next) { + if (strncmp(aHome->fullPath, path, aHome->fullLength) == 0 && (path[aHome->fullLength] == '/' || path[aHome->fullLength] == '\0')) { + strcpy(shorter, aHome->shortPath); + maxLen -= aHome->shortLength; + path += aHome->fullLength; + hitCache = TRUE; + break; + } + } + + if (!hitCache) { + + strcpy(tmpPath, path); + + #ifdef AFS_ENV + gotCell = !GetCellFromFileName(tmpPath, cellName, MAXPATHLEN); + #endif /* AFS_ENV */ + + len = strlen(tmpPath); + slash = &tmpPath[len]; + while (len > 1 && tmpPath[len-1] == '/') { + slash--; + len--; + } + + if (len > 0) { + /* Have more than the root directory */ + *slash = '\0'; + if (stat(tmpPath, &buf) == 0) { + if (buf.st_uid != lastUID + #ifdef AFS_ENV + || strcmp(cellName, lastCellName) != 0 + #endif /* AFS_ENV */ + ) { + passwd = getpwuid(buf.st_uid); + if (passwd != NULL) { + strcpy(passwdDir, passwd->pw_dir); + strcpy(passwdName, passwd->pw_name); + passwdDirLen = strlen(passwdDir); + } + else { + passwdName[0] = '\0'; + } + #ifdef AFS_ENV + if (gotCell) { + struct passwd *cellpasswd; + + cellpasswd = getcpwuid(buf.st_uid, cellName); + if (cellpasswd != NULL) { + strcpy(cellPasswdDir, cellpasswd->pw_dir); + strcpy(cellPasswdName, cellpasswd->pw_name); + cellPasswdDirLen = strlen(cellPasswdDir); + } + else { + cellPasswdName[0] = '\0'; + } + } + strcpy(lastCellName, cellName); + #endif /* AFS_ENV */ + lastUID = buf.st_uid; + } + + if (passwdName[0]!= '\0' && strncmp(tmpPath, passwdDir, passwdDirLen) == 0 && (tmpPath[passwdDirLen] == '/' || tmpPath[passwdDirLen] == '\0')) { + maxLen -= SetNewHome(shorter, passwdName, NULL, passwdDir, passwdDirLen); + path += passwdDirLen; + } + #ifdef AFS_ENV + else if (cellPasswdName[0] != '\0' && strncmp(tmpPath, cellPasswdDir, cellPasswdDirLen) == 0 && (tmpPath[cellPasswdDirLen] == '/' || tmpPath[cellPasswdDirLen] == '\0')) { + maxLen -= SetNewHome(shorter, cellPasswdName, cellName, cellPasswdDir, cellPasswdDirLen); + path += cellPasswdDirLen; + } + #endif /* AFS_ENV */ + } + } + } + } + + /* put the result together */ + + len = strlen(path); + if (len > maxLen) { + char *partialName; + + if (result == NULL) { + result = (char *) malloc(limit + 1); + if (result == NULL) return NULL; + } + + maxLen -= sizeof("---") - 1; + partialName = index(path + (len - maxLen), '/'); + if (partialName == NULL) { + partialName = path + (len - maxLen); + } + else { + ++partialName; /* Skip slash... */ + } + strcpy(result, "---"); + strcat(result, partialName); + } + else { + if (result == NULL) { + result = (char *) malloc(strlen(shorter) + len + 1); + if (result == NULL) return NULL; + } + strcpy(result, shorter); + strcat(result, path); + } + + return result; + } /* path__TruncatePath */ + + void path__FreeTruncatedPaths(c) + struct classheader *c; + { + struct homestruct *home; + struct homestruct *nexthome; + + home = homes; + while (home != NULL) { + nexthome = home->next; + free(home); + home = nexthome; + } + homes = NULL; + } /* path__FreeTruncatedPaths */ + + boolean path__ModifyToParentDirectory(c, path, isDirectory) + struct classheader *c; + char *path; + boolean isDirectory; + { + long len = strlen(path); + + if (isDirectory) { + while (len > 1 && path[len-1] == '/') { + len--; + } + } + + while (len > 0 && path[len-1] != '/') { + len--; + } + + path[len] = '\0'; + + return (len > 0); + } /* path__ModifyToParentDirectory */ + + static void *HandleCellTwiddle(fromString, toString) + char *fromString; + char *toString; + { + char *home; + struct passwd *passwd; + long p; + + if (fromString[1] == '\0' || fromString[1] == '/') { + p = 1; + home = environ_Get("HOME"); + if (home == NULL) { + /* Current user */ + passwd = getpwuid(getuid()); + if (passwd != NULL) { + home = passwd->pw_dir; + } + if (home == NULL) { + p = 0; + } + } + } + else { + long pos; + char name[MAXPATHLEN]; + long endpos; + char cellName[MAXPATHLEN]; + char *cn = cellName; + + for (pos = 1; fromString[pos] != '\0' && fromString[pos] != '/'; pos++) { + #ifdef AFS_ENV + if (fromString[pos] == '@') { + + for (endpos = pos + 1; fromString[endpos] != '\0' && fromString[endpos] != '/'; endpos++) { + *cn++ = fromString[endpos]; + } + *cn = '\0'; + break; + } + #endif /* AFS_ENV */ + } + + strncpy(name, &fromString[1], pos - 1); + name[pos -1] = '\0'; + if (cn == cellName) { + passwd = getpwnam(name); + #ifdef AFS_ENV + if (passwd == NULL) { + passwd = getvpwnam(name); + } + #endif /* AFS_ENV */ + p = pos; + } + else { + #ifdef AFS_ENV + passwd = getcpwnam(name, cellName); + p = endpos; + #endif /*AFS_ENV */ + } + + if (passwd != NULL) { + home = passwd->pw_dir; + } + } + strcpy(toString, home); + strcat(toString, &fromString[p]); + } + + static void HandleRelativeFileName(fromString, toString, basefile) + char *fromString; + char *toString; + char *basefile; + { + register char *slash; + + if (basefile == NULL) basefile = ""; + + if (*basefile != '/' && im_GetDirectory(toString) != NULL) + strcat (toString, "/"); + else + toString[0] = '\0'; /* ??? discard error message if getwd==NULL */ + + strcat (toString, basefile); + slash = rindex(toString, '/'); + if (slash==NULL) { + slash = &toString[strlen(toString)]; + *slash = '/'; + } + *++slash = '\0'; + strcat(toString, fromString); + } + + /* + Returns either fromString or toString depending on + if the file name needs to be unfolded. + */ + + char *path__UnfoldFileName(c, fromString, toString, basefile) + struct classheader *c; + char *fromString; + char *toString; + char *basefile; + { + char *fs = fromString; + + while (isspace(*fs)) + fs++; + + if (*fs == '/') { + strcpy(toString, fs); + } + else if (*fs == '~') { + HandleCellTwiddle(fs, toString); + } + else { + HandleRelativeFileName(fs, toString, basefile); + } + + FoldName(toString); + + return toString; + } /* path__UnfoldFileName */ + + void path__ReleaseFiles(self, files) + struct path *self; + char **files; + { + } /* path__ReleaseFiles */ + + void path__ReleaseDirs(self, dirs) + struct path *self; + char **dirs; + { + } /* path__ReleaseDirs */ + + void path__FinalizeObject(c, self) + struct classheader *c; + struct path *self; + { + if (self->filepath != NULL) { + free(self->filepath); + } + if (self->truncatedPath != NULL) { + free(self->truncatedPath); + } + + FreeFilesAndDirs(self); + path_NotifyObservers(self, observable_OBJECTDESTROYED); + + return; + } /* path__FinalizeObject */ + + int CompareFileNames(a, b) + char **a; + char **b; + { + /* this puts .files before all others */ + + if (**a == '.') { + return (**b == '.') ? strcmp(*a, *b) : -1; + } + else { + return (**b == '.') ? 1 : strcmp(*a, *b); + } + } /* CompareFileNames */ + + boolean path__Scan(self, statEverything) + struct path *self; + boolean statEverything; + { + char dirbuf[MAXPATHLEN]; + char fullName[MAXPATHLEN]; + char *filePart; + struct stat statBuf; + DIR *thisDir; + struct direct *dirEntry; + long filesalloced; + long dirsalloced; + long nextfile; + long nextdir; + long len; + boolean noProblems = FALSE; + #ifdef AFS_ENV + boolean inVICE = FALSE; + boolean statIsSillyMakeThemDirs = FALSE; + boolean statIsSillyMakeThemFiles = FALSE; + #endif /* AFS_ENV */ + + if (self->filepath == NULL || (stat(self->filepath, &statBuf) != 0)) { + FreeFilesAndDirs(self); + } + else if ((statBuf.st_ctime > self->changetime) || (self->mayBeWrong && statEverything)) { + time_t changetime; + + /* We're going to (re)scan the path */ + FreeFilesAndDirs(self); + changetime = statBuf.st_ctime; + /* + Since it's not impossible for isDir to be wrong, + it's safer to recompute it. + */ + self->isDir = (statBuf.st_mode & S_IFMT) == S_IFDIR; + self->knowIsDir = TRUE; + if (!self->isDir) { + self->mayBeWrong = FALSE; + noProblems = TRUE; + } + else { + self->mayBeWrong = !statEverything; + strcpy(dirbuf, self->filepath); + + if ((thisDir = opendir(dirbuf)) != NULL) { + noProblems = TRUE; + self->haveScanned = TRUE; + + strcpy(fullName, dirbuf); + len = strlen(fullName); + if (len == 0 || fullName[len - 1] != '/') { + fullName[len] = '/'; + len++; + } + + #ifdef AFS_ENV + inVICE = IsOnVice(thisDir->dd_fd); + statIsSillyMakeThemDirs = + (strcmp(fullName, "/usr/") == 0) || + (strcmp(fullName, "/afs/") == 0); + statIsSillyMakeThemFiles = strcmp(fullName, "/etc/") == 0; + #endif /* AFS_ENV */ + + filePart = &fullName[len]; + while ((dirEntry = readdir(thisDir)) != NULL) { + boolean isdirectory = FALSE; + char *name = dirEntry->d_name; + + #ifdef AFS_ENV /* Use the wonderous VICE hack ... */ + if (statIsSillyMakeThemDirs) { + isdirectory = TRUE; + } + else if (statIsSillyMakeThemFiles) { + isdirectory = FALSE; + } + else if (inVICE && !statEverything) { + if ((dirEntry->d_ino % 2) == 1) { + isdirectory = TRUE; + } + } + else + #endif /* AFS_ENV */ + { + strcpy(filePart, name); + stat(fullName, &statBuf); + if ((statBuf.st_mode & S_IFMT) == S_IFDIR) { + isdirectory = TRUE; + } + } + if (isdirectory) { + if (strcmp(name, ".") != 0 && strcmp(name, "..") != 0) { + if (self->dirs == NULL) { + self->dirs = (char **) malloc(INITIALCHUNK * sizeof(char *)); + dirsalloced = INITIALCHUNK; + nextdir = 0; + } + else if (nextdir >= dirsalloced) { + dirsalloced *= 2; + self->dirs = (char **) realloc(self->dirs, dirsalloced * sizeof(char *)); + } + self->dirs[nextdir] = (char *) malloc(strlen(name) + 1); + strcpy(self->dirs[nextdir], name); + nextdir++; + } + } + else { + if (self->files == NULL) { + self->files = (char **) malloc(INITIALCHUNK * sizeof(char *)); + filesalloced = INITIALCHUNK; + nextfile = 0; + } + else if (nextfile >= filesalloced) { + filesalloced *= 2; + self->files = (char **) realloc(self->files, filesalloced * sizeof(char *)); + } + self->files[nextfile] = (char *) malloc(strlen(name) + 1); + strcpy(self->files[nextfile], name); + nextfile++; + } + } + + closedir(thisDir); + self->numDirs = nextdir; + self->numFiles = nextfile; + + /* null terminate both lists and sort them */ + if (self->dirs != NULL) { + if (nextdir >= dirsalloced) { + dirsalloced++; + self->dirs = (char **) realloc(self->dirs, dirsalloced * sizeof(char *)); + } + self->dirs[nextdir] = 0; + qsort(self->dirs, nextdir, sizeof(char *), CompareFileNames); + } + + if (self->files != NULL) { + if (nextfile >= filesalloced) { + filesalloced++; + self->files = (char **) realloc(self->files, filesalloced * sizeof(char *)); + } + self->files[nextfile] = 0; + qsort(self->files, nextfile, sizeof(char *), CompareFileNames); + } + } + } + path_NotifyObservers(self, observable_OBJECTCHANGED); + + if (noProblems) { + self->changetime = changetime; + } + } + else { + noProblems = TRUE; + } + + return noProblems; + } /* path__Scan */ + + void path__Input(self, fp) + struct path *self; + FILE *fp; + { + char path[MAXPATHLEN]; + long len; + boolean knowIsDir; + boolean isDir; + + fgets(path, MAXPATHLEN, fp); + if (strncmp(path, "no", 2) != 0) { + knowIsDir = TRUE; + sscanf(path, "is directory: %d\n", &isDir); + } + else { + knowIsDir = FALSE; + } + + fgets(path, MAXPATHLEN, fp); + if (strncmp(path, "no", 2) != 0) { + len = strlen(path); + if (path[len-1] == '\n') { + path[len-1] = '\0'; + } + SetPath(self, &path[strlen("path: ")]); + } + + /* SetPath alters knowIsDir */ + self->knowIsDir = knowIsDir; + self->isDir = isDir; + + fgets(path, MAXPATHLEN, fp); + if (strncmp(path, "no", 2) != 0) { + long tlen; + + len = strlen(path); + if (path[len-1] == '\n') { + path[len-1] = '\0'; + } + tlen = strlen("truncated path: "); + self->truncatedPath = (char *) malloc(len + 1 - tlen); + strcpy(self->truncatedPath, &path[tlen]); + } + else { + self->truncatedPath = NULL; + } + + } /* path__Input */ + + void path__Output(self, fp) + struct path *self; + FILE *fp; + { + if (self->knowIsDir) { + fprintf(fp, "is directory: %d\n", self->isDir); + } + else { + fprintf(fp, "no directory information\n"); + } + + if (self->filepath != NULL) { + fprintf(fp, "path: %s\n", self->filepath); + } + else { + fprintf(fp, "no path\n"); + } + + if (self->truncatedPath != NULL) { + fprintf(fp, "truncated path: %s\n", self->truncatedPath); + } + else { + fprintf(fp, "no truncated path\n"); + } + + } /* path__Output */ + + boolean path__IsDirectory(self) + struct path *self; + { + if (!self->knowIsDir) { + struct stat statBuf; + + self->knowIsDir = TRUE; + self->isDir = FALSE; + if (stat(self->filepath, &statBuf) == 0 && + (statBuf.st_mode & S_IFMT) == S_IFDIR) { + self->isDir = TRUE; + } + } + return self->isDir; + } /* path__IsDirectory */ + + char **path__GetFiles(self) + struct path *self; + { + if (!self->haveScanned) { + path_Scan(self, FALSE); + } + return self->files; + } /* path__GetFiles */ + + char **path__GetDirs(self) + struct path *self; + { + if (!self->haveScanned) { + path_Scan(self, FALSE); + } + return self->dirs; + } /* path__GetDirs */ + + long path__GetNumFiles(self) + struct path *self; + { + if (!self->haveScanned) { + path_Scan(self, FALSE); + } + return self->numFiles; + } /* path__GetNumFiles */ + + long path__GetNumDirs(self) + struct path *self; + { + if (!self->haveScanned) { + path_Scan(self, FALSE); + } + return self->numDirs; + } /* path__GetNumDirs */ + + char *path__GetTruncatedPath(self) + struct path *self; + { + if (self->truncatedPath == NULL && self->filepath != NULL) { + self->truncatedPath = path_TruncatePath(self->filepath, NULL, MAXPATHLEN, TRUE); + } + return self->truncatedPath; + } /* path__GetTruncatedPath */ *** atk/basics/lib/Imakefile Fri Aug 3 16:25:59 1990 --- atk/basics/lib/Imakefile.NEW Tue Apr 2 18:16:02 1991 *************** *** 9,20 **** ../common/init.o ../common/keymap.o ../common/keyrec.o ../common/keystate.o \ ../common/lwpstubs.o ../common/menulist.o ../common/message.o \ ../common/msghndlr.o ../common/namespc.o ../common/observe.o \ ! ../common/physical.o ../common/pixelimg.o ../common/point.o \ ../common/proctbl.o ../common/profile.o ../common/rect.o ../common/region.o \ ../common/rm.o ../common/updlist.o ../common/view.o ../common/winsys.o #ifdef X11_ENV ! X11OBJS = ../x/xinit.o ../x/xws.o ../x/xim.o ../x/xcursor.o ../x/xfontd.o ../x/xgraphic.o #endif /* X11_ENV */ #ifdef WM_ENV --- 9,20 ---- ../common/init.o ../common/keymap.o ../common/keyrec.o ../common/keystate.o \ ../common/lwpstubs.o ../common/menulist.o ../common/message.o \ ../common/msghndlr.o ../common/namespc.o ../common/observe.o \ ! ../common/path.o ../common/physical.o ../common/pixelimg.o ../common/point.o \ ../common/proctbl.o ../common/profile.o ../common/rect.o ../common/region.o \ ../common/rm.o ../common/updlist.o ../common/view.o ../common/winsys.o #ifdef X11_ENV ! X11OBJS = ../x/xinit.o ../x/xws.o ../x/xim.o ../x/xcursor.o ../x/xfontd.o ../x/xgraphic.o ../x/menubar.o #endif /* X11_ENV */ #ifdef WM_ENV *** atk/bush/bushv.c Mon Aug 6 11:03:26 1990 --- atk/bush/bushv.c.NEW Wed Apr 3 21:16:35 1991 *************** *** 4,10 **** \* ********************************************************************** */ #ifndef lint ! static char *rcsidbushv_c = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/bush/RCS/bushv.c,v 1.52 90/05/12 17:29:41 gk5g Exp $"; #endif /** SPECIFICATION -- External Facility Suite ********************************* --- 4,10 ---- \* ********************************************************************** */ #ifndef lint ! static char *rcsidbushv_c = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/bush/RCS/bushv.c,v 1.55 91/04/02 16:54:18 susan Exp $"; #endif /** SPECIFICATION -- External Facility Suite ********************************* *************** *** 646,652 **** --- 646,654 ---- suite_HighlightTitle(suite); PostCursor(self,Cursor_Wait); HandleChangeDir(self,DirPath(CurrNode)); + #ifndef hp9000s800 /* The SIGALRM causes trouble on the hp800. */ sleep(1); + #endif /* hp9000s800 */ bushv_RetractCursor(self,Cursor); sprintf(msg,"Working directory changed to '%s'", DirPath(CurrNode)); *************** *** 1019,1025 **** mask &= (~bushv_EntryMenus & ~bushv_RWEntryMenus); menulist_SetMask(Menulist,mask); if(menulist) ! menulist_ChainBeforeML(Menulist,menulist,NULL); super_PostMenus(self,Menulist); OUT(bushv_PostMenus); } --- 1021,1027 ---- mask &= (~bushv_EntryMenus & ~bushv_RWEntryMenus); menulist_SetMask(Menulist,mask); if(menulist) ! menulist_ChainAfterML(Menulist,menulist,NULL); super_PostMenus(self,Menulist); OUT(bushv_PostMenus); } *************** *** 1446,1452 **** --- 1448,1456 ---- else if((tag & S_IFMT) == S_IFDIR) tags[0] = 'd'; else if((tag & S_IFMT) == S_IFCHR) tags[0] = 'c'; else if((tag & S_IFMT) == S_IFBLK) tags[0] = 'b'; + #ifdef S_IFLNK else if((tag & S_IFMT) == S_IFLNK) tags[0] = 'l'; + #endif #ifdef S_IFIFO else if((tag & S_IFMT) == S_IFIFO) tags[0] = '?'; #endif /* #ifdef S_IFIFO */ *** atk/bush/bush.c Fri Dec 21 14:53:49 1990 --- atk/bush/bush.c.NEW Wed Apr 3 21:16:39 1991 *************** *** 4,10 **** \* ********************************************************************** */ #ifndef lint ! static char *rcsidbush_c = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/bush/RCS/bush.c,v 1.21 90/09/20 12:40:04 gk5g Exp $"; #endif /** SPECIFICATION -- External Facility Suite ********************************* --- 4,10 ---- \* ********************************************************************** */ #ifndef lint ! static char *rcsidbush_c = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/bush/RCS/bush.c,v 1.23 91/04/02 16:54:08 susan Exp $"; #endif /** SPECIFICATION -- External Facility Suite ********************************* *************** *** 444,449 **** --- 444,450 ---- else { if((stats.st_mode & S_IFMT) == S_IFDIR) DirEntryType(tn,i).dir = TRUE; + #ifdef S_IFLNK else if((stats.st_mode & S_IFMT) == S_IFLNK) { DirEntryType(tn,i).soft_link = TRUE; if(cc = readlink(fullEntryName,buf,MAXPATHLEN)) { *************** *** 457,462 **** --- 458,464 ---- else DirEntryType(tn,i).file = TRUE; } } + #endif /* S_IFLNK */ else DirEntryType(tn,i).file = TRUE; AllocNameSpace(getname(self,stats.st_uid,getcell(self,fullEntryName)), &DirEntryOwner(tn,i)); *************** *** 740,748 **** int pid = 0, status = 0; if((pid = osi_vfork()) == 0) { ! #if !SY_AIX12 extern getpid(); ! #endif /* SY_AIX12 */ register int fd; setpgrp(0,pid = getpid()); --- 742,750 ---- int pid = 0, status = 0; if((pid = osi_vfork()) == 0) { ! #if !SY_AIX12 && !hpux extern getpid(); ! #endif /* SY_AIX12 && !hpux */ register int fd; setpgrp(0,pid = getpid()); *** atk/bush/bush.h Mon Aug 6 11:03:39 1990 --- atk/bush/bush.h.NEW Wed Apr 3 21:16:40 1991 *************** *** 7,17 **** /* $Source $ */ #ifndef lint ! static char *rcsidbush_h = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/bush/RCS/bush.h,v 1.4 90/04/27 12:11:34 gk5g Exp $"; #endif /* $Log: bush.h,v $ * Revision 1.4 90/04/27 12:11:34 gk5g * Sweeping revisions including: (1) reformated, (2) added editing capability while viewing a file, (3) cleaned up unused variables, (4) additional information added to the ControlPanel (sort, detail, editor). * --- 7,20 ---- /* $Source $ */ #ifndef lint ! static char *rcsidbush_h = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/bush/RCS/bush.h,v 1.5 91/04/02 16:54:02 susan Exp $"; #endif /* $Log: bush.h,v $ + * Revision 1.5 91/04/02 16:54:02 susan + * added SCO Unix support + * * Revision 1.4 90/04/27 12:11:34 gk5g * Sweeping revisions including: (1) reformated, (2) added editing capability while viewing a file, (3) cleaned up unused variables, (4) additional information added to the ControlPanel (sort, detail, editor). * *************** *** 67,73 **** --- 70,81 ---- #include #include #include + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include #ifdef AFS_ENV #include /*getv*(), getc*() routine family*/ *** atk/champ/Imakefile Wed Nov 22 11:53:38 1989 --- atk/champ/Imakefile.NEW Wed Apr 3 21:16:48 1991 *************** *** 30,38 **** NormalObjectRule() NormalATKRule() ! ProgramTarget(chump, ${CHUMPOBJS}, ${LIBS}, ) ! DynamicMultiObject(champ.do, ${CHAMPOBJS}, ${LIBS},) DynamicMultiObject(monthv.do, monthv.o, $(UTILLIB),) InstallProgram(chump, ${DESTDIR}/bin/) InstallClassFiles($(DOBJS), $(IHFILES)) --- 30,39 ---- NormalObjectRule() NormalATKRule() ! ProgramTarget(chump, ${CHUMPOBJS}, ${LIBS}, ${NETLIBS}) ! DynamicMultiObject(champ.do, ${CHAMPOBJS}, ${LIBS},${NETLIBS}) DynamicMultiObject(monthv.do, monthv.o, $(UTILLIB),) + DynamicObject(chlist, , ${SUPLIBS}) InstallProgram(chump, ${DESTDIR}/bin/) InstallClassFiles($(DOBJS), $(IHFILES)) *** atk/champ/chump.c Fri Dec 21 14:53:54 1990 --- atk/champ/chump.c.NEW Wed Feb 13 16:49:16 1991 *************** *** 3,13 **** * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ #include /* time.h */ ! #include "stdio.h" ! #include "champ.h" ! #include "ctype.h" - extern char *index(); extern int errno; static char *Weekdays[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; --- 3,12 ---- * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ #include /* time.h */ ! #include ! #include ! #include extern int errno; static char *Weekdays[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; *** atk/chart/Imakefile Wed Nov 22 11:53:55 1989 --- atk/chart/Imakefile.NEW Thu Apr 4 17:40:42 1991 *************** *** 23,29 **** DependTarget() DynamicObject(chartpie, , -lm) ! DynamicMultiObject(chartv.do, chartv.o chartp.o, ,-lm) InstallClassFiles($(DOBJS),$(IHFILES)) InstallLink(runapp, ${DESTDIR}/bin/chart) --- 23,29 ---- DependTarget() DynamicObject(chartpie, , -lm) ! DynamicMultiObject(chartv.do, chartv.o chartp.o, ,-lm ${SUPLIBS}) InstallClassFiles($(DOBJS),$(IHFILES)) InstallLink(runapp, ${DESTDIR}/bin/chart) *** atk/chart/chartobj.c Wed Nov 22 11:54:29 1989 --- atk/chart/chartobj.c.NEW Mon Dec 17 14:45:14 1990 *************** *** 4,10 **** \* ********************************************************************** */ #ifndef lint ! static char *rcsidchartobj = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/chart/RCS/chartobj.c,v 1.11 89/09/07 16:50:35 tom Exp $"; #endif /** SPECIFICATION -- External Facility Suite ********************************* --- 4,10 ---- \* ********************************************************************** */ #ifndef lint ! static char *rcsidchartobj = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/chart/RCS/chartobj.c,v 1.12 90/12/17 14:14:01 gk5g Exp $"; #endif /** SPECIFICATION -- External Facility Suite ********************************* *************** *** 593,599 **** if ( excess = (ChartWidth - (width * count)) / 2 ) excess = count / excess; DEBUGdt(width,width); ! if ( chart_ItemValueGreatest( Chart ) % ScaleTick ) high_adjust = (ScaleTick - (chart_ItemValueGreatest( Chart ) % ScaleTick)) * PixelsPerUnit; DEBUGdt(HighAdjust,high_adjust); if ( chart_ItemValueLeast( Chart) < 0 ) --- 593,599 ---- if ( excess = (ChartWidth - (width * count)) / 2 ) excess = count / excess; DEBUGdt(width,width); ! if ( (ScaleTick > 0) && (chart_ItemValueGreatest( Chart ) % ScaleTick ) ) high_adjust = (ScaleTick - (chart_ItemValueGreatest( Chart ) % ScaleTick)) * PixelsPerUnit; DEBUGdt(HighAdjust,high_adjust); if ( chart_ItemValueLeast( Chart) < 0 ) *************** *** 600,606 **** { low_adjust = abs(chart_ItemValueLeast( Chart ) * PixelsPerUnit); ChartBaseLine = ChartBottom - low_adjust; ! if ( chart_ItemValueLeast( Chart ) % ScaleTick ) low_adjust += (ScaleTick + (chart_ItemValueLeast( Chart ) % ScaleTick)) * PixelsPerUnit; } DEBUGdt(LowAdjust,low_adjust); --- 600,606 ---- { low_adjust = abs(chart_ItemValueLeast( Chart ) * PixelsPerUnit); ChartBaseLine = ChartBottom - low_adjust; ! if ( (ScaleTick > 0) && (chart_ItemValueLeast( Chart ) % ScaleTick ) ) low_adjust += (ScaleTick + (chart_ItemValueLeast( Chart ) % ScaleTick)) * PixelsPerUnit; } DEBUGdt(LowAdjust,low_adjust); *************** *** 610,617 **** DEBUGdt(Value,chart_ItemAttribute( Chart, ShadowItem(shadow), chart_ItemValue(0) )); if ( (y = (ChartBottom - (chart_ItemAttribute( Chart, ShadowItem(shadow), chart_ItemValue(0) ) * ! PixelsPerUnit)) + high_adjust - low_adjust) > ChartBottom ) ! y = ChartBottom; ShadowY(shadow) = y; ShadowTop(shadow) = y - 5; fudge = (excess) ? ((i % excess) ? 0 : 1) : 0; --- 610,617 ---- DEBUGdt(Value,chart_ItemAttribute( Chart, ShadowItem(shadow), chart_ItemValue(0) )); if ( (y = (ChartBottom - (chart_ItemAttribute( Chart, ShadowItem(shadow), chart_ItemValue(0) ) * ! PixelsPerUnit)) + high_adjust - low_adjust) > ChartBottom - 2 ) ! y = ChartBottom - 2; ShadowY(shadow) = y; ShadowTop(shadow) = y - 5; fudge = (excess) ? ((i % excess) ? 0 : 1) : 0; *************** *** 783,789 **** register struct chartobj *self; { register long value, Y, adjust; ! register float y, y_increment, half_y_increment; char value_string[25]; IN(Draw_Left_Scale); /*=== NEEDS WORK ===*/ --- 783,790 ---- register struct chartobj *self; { register long value, Y, adjust; ! register float y, y_increment; ! long half_y_increment; char value_string[25]; IN(Draw_Left_Scale); /*=== NEEDS WORK ===*/ *************** *** 796,813 **** chartobj_DrawLineTo( self, LeftScaleBarX, LeftScaleBottom ); chartobj_MoveTo( self, LeftScaleBarX, LeftScaleTop ); chartobj_DrawLineTo( self, LeftScaleRight, LeftScaleTop ); - chartobj_FillTrapezoid( self, LeftScaleRight, LeftScaleTop, ChartWidth, - LeftScaleRight, LeftScaleTop, ChartWidth, DottedGraphic ); chartobj_MoveTo( self, LeftScaleBarX, LeftScaleBottom ); chartobj_DrawLineTo( self, LeftScaleRight, LeftScaleBottom ); ! chartobj_FillTrapezoid( self, LeftScaleRight, LeftScaleBottom, ChartWidth, ! LeftScaleRight, LeftScaleBottom, ChartWidth, DottedGraphic ); ! if ( adjust = (value = chart_ItemValueLeast( Chart)) % ScaleTick ) value -= ScaleTick + adjust; sprintf( value_string, "%d", value ); chartobj_MoveTo( self, LeftScaleBarX-5, LeftScaleBottom ); chartobj_DrawString( self, value_string, RightBottom ); ! if ( adjust = (value = chart_ItemValueGreatest( Chart)) % ScaleTick ) value += ScaleTick - adjust; sprintf( value_string, "%d", value ); chartobj_MoveTo( self, LeftScaleBarX-5, LeftScaleTop ); --- 797,816 ---- chartobj_DrawLineTo( self, LeftScaleBarX, LeftScaleBottom ); chartobj_MoveTo( self, LeftScaleBarX, LeftScaleTop ); chartobj_DrawLineTo( self, LeftScaleRight, LeftScaleTop ); chartobj_MoveTo( self, LeftScaleBarX, LeftScaleBottom ); chartobj_DrawLineTo( self, LeftScaleRight, LeftScaleBottom ); ! chartobj_SetLineDash( self, "\001\004", 0, graphic_LineOnOffDash); ! chartobj_MoveTo( self, LeftScaleRight, LeftScaleTop ); ! chartobj_DrawLineTo( self, LeftScaleRight+ChartWidth, LeftScaleTop ); ! chartobj_MoveTo( self, LeftScaleRight, LeftScaleBottom ); ! chartobj_DrawLineTo( self, LeftScaleRight+ChartWidth, LeftScaleBottom ); ! chartobj_SetLineDash( self, NULL, 0, graphic_LineSolid); ! if ( (ScaleTick > 0) && (adjust = (value = chart_ItemValueLeast(Chart)) % ScaleTick ) ) value -= ScaleTick + adjust; sprintf( value_string, "%d", value ); chartobj_MoveTo( self, LeftScaleBarX-5, LeftScaleBottom ); chartobj_DrawString( self, value_string, RightBottom ); ! if ( (ScaleTick > 0) && (adjust = (value = chart_ItemValueGreatest(Chart)) % ScaleTick ) ) value += ScaleTick - adjust; sprintf( value_string, "%d", value ); chartobj_MoveTo( self, LeftScaleBarX-5, LeftScaleTop ); *************** *** 818,829 **** Y = y = LeftScaleTop + y_increment; chartobj_MoveTo( self, LeftScaleBarX, Y - half_y_increment ); chartobj_DrawLineTo( self, LeftScaleRight - 5, Y - half_y_increment ); ! while ( y < (LeftScaleBottom - y_increment) ) { chartobj_MoveTo( self, LeftScaleBarX, Y ); chartobj_DrawLineTo( self, LeftScaleRight, Y ); ! chartobj_FillTrapezoid( self, LeftScaleRight, Y, ChartWidth, ! LeftScaleRight, Y, ChartWidth, DottedGraphic ); chartobj_MoveTo( self, LeftScaleBarX, Y + half_y_increment ); chartobj_DrawLineTo( self, LeftScaleRight - 5, Y + half_y_increment ); value -= ScaleTick; --- 821,834 ---- Y = y = LeftScaleTop + y_increment; chartobj_MoveTo( self, LeftScaleBarX, Y - half_y_increment ); chartobj_DrawLineTo( self, LeftScaleRight - 5, Y - half_y_increment ); ! while ( Y < (LeftScaleBottom - half_y_increment) ) { chartobj_MoveTo( self, LeftScaleBarX, Y ); chartobj_DrawLineTo( self, LeftScaleRight, Y ); ! chartobj_SetLineDash( self, "\001\004", 0, graphic_LineOnOffDash); ! chartobj_MoveTo( self, LeftScaleRight, Y ); ! chartobj_DrawLineTo( self, LeftScaleRight+ChartWidth, Y ); ! chartobj_SetLineDash( self, NULL, 0, graphic_LineSolid); chartobj_MoveTo( self, LeftScaleBarX, Y + half_y_increment ); chartobj_DrawLineTo( self, LeftScaleRight - 5, Y + half_y_increment ); value -= ScaleTick; *************** *** 855,872 **** Prepare_Vertical_Scale( self ) register struct chartobj *self; { ! register long tick = 10; IN(Prepare_Vertical_Scale); DEBUGdt(Value Span,chart_ItemValueSpan( Chart )); ! while ( (chart_ItemValueSpan( Chart ) / tick) > tick ) ! {tick *= 10; DEBUGdt(Tick_1,tick);} ! if ( (chart_ItemValueSpan( Chart ) - tick) <= tick ) ! tick /= 10; ! DEBUGdt(Tick_2,tick); ! while ( (PixelsPerUnit * tick) < 20 ) ! {tick *= 10; DEBUGdt(Tick_3,tick);} ! ScaleTick = tick; DEBUGdt(ScaleTick,ScaleTick); OUT(Prepare_Vertical_Scale); } --- 860,890 ---- Prepare_Vertical_Scale( self ) register struct chartobj *self; { ! long ValueSpanScale = 1; ! long ScaledValueSpan; ! static int nice_tick_values[] = {1, 5, 10, 25, 50, 100, 0}; ! int tick, tick_index; IN(Prepare_Vertical_Scale); + /* First scale the value span to < 1000. */ DEBUGdt(Value Span,chart_ItemValueSpan( Chart )); ! ScaledValueSpan = chart_ItemValueSpan( Chart ); ! while ( ScaledValueSpan >= 100 ) { ! ValueSpanScale *= 10; ! ScaledValueSpan /= 10; ! } ! DEBUGdt(ValueSpanScale, ValueSpanScale); ! /* Now find a tick size that is >= 20 pixels high */ ! tick = nice_tick_values[0]; ! tick_index = 0; ! while ( tick != 0 && PixelsPerUnit*tick*ValueSpanScale < 20 ) ! tick = nice_tick_values[++tick_index]; ! if (tick == 0) ! tick = nice_tick_values[tick_index-1]; /* use last nice value (can't happen) */ ! DEBUGdt(tick, tick); ! ScaleTick = tick*ValueSpanScale; ! if (ScaleTick > chart_ItemValueSpan(Chart)) ! ScaleTick = chart_ItemValueSpan(Chart); DEBUGdt(ScaleTick,ScaleTick); OUT(Prepare_Vertical_Scale); } *** atk/chart/chartv.c Fri Dec 21 14:53:59 1990 --- atk/chart/chartv.c.NEW Mon Dec 17 14:45:17 1990 *************** *** 4,10 **** \* ********************************************************************** */ #ifndef lint ! static char *rcsidchartv = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/chart/RCS/chartv.c,v 1.21 90/10/04 13:47:02 gk5g Exp $"; #endif /** SPECIFICATION -- External Facility Suite ********************************* --- 4,10 ---- \* ********************************************************************** */ #ifndef lint ! static char *rcsidchartv = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/chart/RCS/chartv.c,v 1.22 90/12/17 14:12:38 gk5g Exp $"; #endif /** SPECIFICATION -- External Facility Suite ********************************* *************** *** 65,70 **** --- 65,71 ---- #include #include #include + #include #include #include #include *************** *** 129,136 **** Palette_Command, "Palette-toggle" }, { "chartv-Palette", "", 0, "Hide Palette~70", 0, menu_palette_exposed, Palette_Command, "Palette-toggle" }, - { "chartv-DEBUG", "", 0, "DEBUG~80", 0, menu_default, - DEBUG_Command, "Debug-toggle" }, { "chartv-Quit", "", 0, "Quit~99", 0, menu_default, Quit_Command, "Quit" }, /*===MUST BE DYNAMIC===*/ --- 130,135 ---- *************** *** 173,178 **** --- 172,179 ---- class_menulist = menulist_New(); class_keymap = keymap_New(); bind_BindList( view_menu, class_keymap, class_menulist, &chartv_classinfo ); + proctable_DefineProc( "chartv-DEBUG", DEBUG_Command, &chartv_classinfo, + NULL, "Toggle debug flag."); OUT(chartv_InitializeClass ); return TRUE; } *** atk/chart/chartx1a.c Fri Dec 21 14:54:01 1990 --- atk/chart/chartx1a.c.NEW Fri Dec 14 16:46:01 1990 *************** *** 73,79 **** } frame_SetView( Frame, ChartView ); if((Im = im_Create(NULL)) == NULL) { ! fprintf(stderr,"Could not create new window.\exiting.\n"); exit(-1); } im_SetView( Im, Frame ); --- 73,79 ---- } frame_SetView( Frame, ChartView ); if((Im = im_Create(NULL)) == NULL) { ! fprintf(stderr,"Could not create new window.\nexiting.\n"); exit(-1); } im_SetView( Im, Frame ); *** atk/controllers/calccon.c Mon Aug 6 11:04:03 1990 --- atk/controllers/calccon.c.NEW Thu Apr 25 16:13:46 1991 *************** *** 3,33 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.c,v 2.5 90/06/05 12:39:45 gk5g Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.c,v 2.5 90/06/05 12:39:45 gk5g Exp $ "; #endif /* lint */ /* user code ends here for HeaderInfo */ ! #include "class.h" ! #include "proctbl.ih" ! #include "view.ih" ! #include "arbiterv.ih" ! #include "calccon.eh" ! #include "celv.ih" ! #include "buttonv.ih" ! #include "controlv.ih" ! #include "cel.ih" ! #include "entrstrv.ih" ! #include "lsetv.ih" ! #include "lset.ih" ! #include "value.ih" ! #include "stringv.ih" /* user code begins here for includes */ - #ifndef _IBMR2 - #include - #endif /* _IBMR2 */ #define ADD 1 #define SUB 2 #define MULT 3 --- 3,31 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.c,v 2.6 1991/04/25 18:22:38 tpn Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.c,v 2.6 1991/04/25 18:22:38 tpn Exp $ "; #endif /* lint */ /* user code ends here for HeaderInfo */ ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! #include /* user code begins here for includes */ #define ADD 1 #define SUB 2 #define MULT 3 *************** *** 49,55 **** self->saveval = 0.0; *(self->buf) = '\0'; self->error = FALSE;self->op = 0; ! self->dec = 0.0; self->clear = TRUE; displayval(self); } --- 47,53 ---- self->saveval = 0.0; *(self->buf) = '\0'; self->error = FALSE;self->op = 0; ! self->dec = 0; self->clear = TRUE; displayval(self); } *************** *** 60,73 **** struct view *v; { struct calccon *self,*last = NULL; for(self= firstcalccon; self != NULL; self = self->next){ ! if(self->v == v) return self; last = self; } self = calccon_New(); initself(self,v); if(last == NULL) firstcalccon = self; else last->next = self; return self; } static void calcCallBack(self,val,r1,r2) --- 58,74 ---- struct view *v; { struct calccon *self,*last = NULL; + struct arbiterview *arbv =arbiterview_FindArb(v); for(self= firstcalccon; self != NULL; self = self->next){ ! if(self->arbv == arbv) return self; last = self; } self = calccon_New(); + self->arbv = arbv; initself(self,v); if(last == NULL) firstcalccon = self; else last->next = self; + arbiterview_AddObserver(self->arbv,self); return self; } static void calcCallBack(self,val,r1,r2) *************** *** 75,80 **** --- 76,89 ---- struct value *val; long r1,r2; { + if(r2 == value_OBJECTDESTROYED) { + if(self->calc_4 == val) self->calc_4 = NULL; + if(self->calc_5 == val) self->calc_5 = NULL; + if(self->calc_1 == val) self->calc_1 = NULL; + if(self->calc_2 == val) self->calc_2 = NULL; + if(self->calc_3 == val) self->calc_3 = NULL; + } + { /* user code begins here for calcCallBack */ self->error = FALSE; switch (self->op){ *************** *** 98,113 **** } self->saveval = self->val; self->op = r1; ! self->dec = 0.0; self->clear = TRUE; displayval(self); /* user code ends here for calcCallBack */ } static void valenterCallBack(self,val,r1,r2) struct calccon *self; struct value *val; long r1,r2; { /* user code begins here for valenterCallBack */ { double f ; --- 107,127 ---- } self->saveval = self->val; self->op = r1; ! self->dec = 0; self->clear = TRUE; displayval(self); /* user code ends here for calcCallBack */ } + } static void valenterCallBack(self,val,r1,r2) struct calccon *self; struct value *val; long r1,r2; { + if(r2 == value_OBJECTDESTROYED) { + if(self->valenter == val) self->valenter = NULL; + } + { /* user code begins here for valenterCallBack */ { double f ; *************** *** 136,174 **** case '/': calcCallBack(self,NULL,DIV,0); break; ! default: ! f = atof(c); if(f != self->val){ self->val = f; displayval(self); } } value_SetString(val,""); } /* user code ends here for valenterCallBack */ } static void decimalCallBack(self,val,r1,r2) struct calccon *self; struct value *val; long r1,r2; { /* user code begins here for decimalCallBack */ ! if(!self->dec) self->dec = 10.0; /* user code ends here for decimalCallBack */ } static void digitCallBack(self,val,r1,r2) struct calccon *self; struct value *val; long r1,r2; { /* user code begins here for digitCallBack */ if(self->clear){ self->val = 0.0; self->clear = FALSE; } ! if(self->dec){ ! self->val = self->val + (r1 / self->dec); ! self->dec *= 10.0; } else{ self->val = self->val * 10.0 + r1; --- 150,212 ---- case '/': calcCallBack(self,NULL,DIV,0); break; ! case '0': case '1': case '2': case '3': ! case '4': case '5': case '6': case '7': ! case '8': case '9': case '.': ! sscanf(c,"%lf",&f); if(f != self->val){ self->val = f; displayval(self); } + break; + default: + break; } value_SetString(val,""); } /* user code ends here for valenterCallBack */ } + } static void decimalCallBack(self,val,r1,r2) struct calccon *self; struct value *val; long r1,r2; { + if(r2 == value_OBJECTDESTROYED) { + if(self->decimal == val) self->decimal = NULL; + } + { /* user code begins here for decimalCallBack */ ! if(self->dec == 0) self->dec = 10; /* user code ends here for decimalCallBack */ } + } static void digitCallBack(self,val,r1,r2) struct calccon *self; struct value *val; long r1,r2; { + if(r2 == value_OBJECTDESTROYED) { + if(self->digit_0 == val) self->digit_0 = NULL; + if(self->digit_1 == val) self->digit_1 = NULL; + if(self->digit_2 == val) self->digit_2 = NULL; + if(self->digit_3 == val) self->digit_3 = NULL; + if(self->digit_4 == val) self->digit_4 = NULL; + if(self->digit_5 == val) self->digit_5 = NULL; + if(self->digit_6 == val) self->digit_6 = NULL; + if(self->digit_7 == val) self->digit_7 = NULL; + if(self->digit_8 == val) self->digit_8 = NULL; + if(self->digit_9 == val) self->digit_9 = NULL; + } + { /* user code begins here for digitCallBack */ if(self->clear){ self->val = 0.0; self->clear = FALSE; } ! if(self->dec != 0){ ! self->val = self->val + ((double)r1 /(double) self->dec); ! self->dec *= 10; } else{ self->val = self->val * 10.0 + r1; *************** *** 176,189 **** --- 214,233 ---- displayval(self); /* user code ends here for digitCallBack */ } + } static void outputCallBack(self,val,r1,r2) struct calccon *self; struct value *val; long r1,r2; { + if(r2 == value_OBJECTDESTROYED) { + if(self->output == val) self->output = NULL; + } + { /* user code begins here for outputCallBack */ /* user code ends here for outputCallBack */ } + } static initself(self,v) struct calccon *self; struct view *v; *************** *** 192,248 **** --- 236,310 ---- self->calc_4View = (struct buttonV *)arbiterview_GetNamedView(v,"calc-4"); self->calc_4 = (struct value *)arbiterview_GetNamedObject(v,"calc-4"); if(self->calc_4) value_AddCallBackObserver(self->calc_4, self,calcCallBack,4); + if(self->calc_4View) buttonV_AddObserver(self->calc_4View,self); self->calc_5View = (struct buttonV *)arbiterview_GetNamedView(v,"calc-5"); self->calc_5 = (struct value *)arbiterview_GetNamedObject(v,"calc-5"); if(self->calc_5) value_AddCallBackObserver(self->calc_5, self,calcCallBack,5); + if(self->calc_5View) buttonV_AddObserver(self->calc_5View,self); self->valenterView = (struct enterstrV *)arbiterview_GetNamedView(v,"valenter"); self->valenter = (struct value *)arbiterview_GetNamedObject(v,"valenter"); if(self->valenter) value_AddCallBackObserver(self->valenter, self,valenterCallBack,0); + if(self->valenterView) enterstrV_AddObserver(self->valenterView,self); self->decimalView = (struct buttonV *)arbiterview_GetNamedView(v,"decimal"); self->decimal = (struct value *)arbiterview_GetNamedObject(v,"decimal"); if(self->decimal) value_AddCallBackObserver(self->decimal, self,decimalCallBack,0); + if(self->decimalView) buttonV_AddObserver(self->decimalView,self); self->digit_0View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-0"); self->digit_0 = (struct value *)arbiterview_GetNamedObject(v,"digit-0"); if(self->digit_0) value_AddCallBackObserver(self->digit_0, self,digitCallBack,0); + if(self->digit_0View) buttonV_AddObserver(self->digit_0View,self); self->digit_1View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-1"); self->digit_1 = (struct value *)arbiterview_GetNamedObject(v,"digit-1"); if(self->digit_1) value_AddCallBackObserver(self->digit_1, self,digitCallBack,1); + if(self->digit_1View) buttonV_AddObserver(self->digit_1View,self); self->digit_2View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-2"); self->digit_2 = (struct value *)arbiterview_GetNamedObject(v,"digit-2"); if(self->digit_2) value_AddCallBackObserver(self->digit_2, self,digitCallBack,2); + if(self->digit_2View) buttonV_AddObserver(self->digit_2View,self); self->digit_3View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-3"); self->digit_3 = (struct value *)arbiterview_GetNamedObject(v,"digit-3"); if(self->digit_3) value_AddCallBackObserver(self->digit_3, self,digitCallBack,3); + if(self->digit_3View) buttonV_AddObserver(self->digit_3View,self); self->digit_4View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-4"); self->digit_4 = (struct value *)arbiterview_GetNamedObject(v,"digit-4"); if(self->digit_4) value_AddCallBackObserver(self->digit_4, self,digitCallBack,4); + if(self->digit_4View) buttonV_AddObserver(self->digit_4View,self); self->digit_5View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-5"); self->digit_5 = (struct value *)arbiterview_GetNamedObject(v,"digit-5"); if(self->digit_5) value_AddCallBackObserver(self->digit_5, self,digitCallBack,5); + if(self->digit_5View) buttonV_AddObserver(self->digit_5View,self); self->digit_6View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-6"); self->digit_6 = (struct value *)arbiterview_GetNamedObject(v,"digit-6"); if(self->digit_6) value_AddCallBackObserver(self->digit_6, self,digitCallBack,6); + if(self->digit_6View) buttonV_AddObserver(self->digit_6View,self); self->digit_7View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-7"); self->digit_7 = (struct value *)arbiterview_GetNamedObject(v,"digit-7"); if(self->digit_7) value_AddCallBackObserver(self->digit_7, self,digitCallBack,7); + if(self->digit_7View) buttonV_AddObserver(self->digit_7View,self); self->digit_8View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-8"); self->digit_8 = (struct value *)arbiterview_GetNamedObject(v,"digit-8"); if(self->digit_8) value_AddCallBackObserver(self->digit_8, self,digitCallBack,8); + if(self->digit_8View) buttonV_AddObserver(self->digit_8View,self); self->digit_9View = (struct buttonV *)arbiterview_GetNamedView(v,"digit-9"); self->digit_9 = (struct value *)arbiterview_GetNamedObject(v,"digit-9"); if(self->digit_9) value_AddCallBackObserver(self->digit_9, self,digitCallBack,9); + if(self->digit_9View) buttonV_AddObserver(self->digit_9View,self); self->outputView = (struct stringV *)arbiterview_GetNamedView(v,"output"); self->output = (struct value *)arbiterview_GetNamedObject(v,"output"); if(self->output) value_AddCallBackObserver(self->output, self,outputCallBack,0); + if(self->outputView) stringV_AddObserver(self->outputView,self); self->calc_1View = (struct buttonV *)arbiterview_GetNamedView(v,"calc-1"); self->calc_1 = (struct value *)arbiterview_GetNamedObject(v,"calc-1"); if(self->calc_1) value_AddCallBackObserver(self->calc_1, self,calcCallBack,1); + if(self->calc_1View) buttonV_AddObserver(self->calc_1View,self); self->calc_2View = (struct buttonV *)arbiterview_GetNamedView(v,"calc-2"); self->calc_2 = (struct value *)arbiterview_GetNamedObject(v,"calc-2"); if(self->calc_2) value_AddCallBackObserver(self->calc_2, self,calcCallBack,2); + if(self->calc_2View) buttonV_AddObserver(self->calc_2View,self); self->calc_3View = (struct buttonV *)arbiterview_GetNamedView(v,"calc-3"); self->calc_3 = (struct value *)arbiterview_GetNamedObject(v,"calc-3"); if(self->calc_3) value_AddCallBackObserver(self->calc_3, self,calcCallBack,3); + if(self->calc_3View) buttonV_AddObserver(self->calc_3View,self); } calccon_clear(v,dat) struct view *v; *************** *** 255,260 **** --- 317,354 ---- clear(self); /* user code ends here for calccon_clear */ } + void calccon__ObservedChanged(self,observed,status) + struct calccon *self; + struct observable * observed; + long status; + { + /* user code begins here for ObservedChanged */ + /* user code ends here for ObservedChanged */ + if(observed == (struct observable *) self->arbv){ + if (status == observable_OBJECTDESTROYED) self->arbv = NULL; + else initself(self,self->v); + } + if (status == observable_OBJECTDESTROYED) { + if (observed == (struct observable *) self->calc_4View) self->calc_4View=NULL; + if (observed == (struct observable *) self->calc_5View) self->calc_5View=NULL; + if (observed == (struct observable *) self->valenterView) self->valenterView=NULL; + if (observed == (struct observable *) self->decimalView) self->decimalView=NULL; + if (observed == (struct observable *) self->digit_0View) self->digit_0View=NULL; + if (observed == (struct observable *) self->digit_1View) self->digit_1View=NULL; + if (observed == (struct observable *) self->digit_2View) self->digit_2View=NULL; + if (observed == (struct observable *) self->digit_3View) self->digit_3View=NULL; + if (observed == (struct observable *) self->digit_4View) self->digit_4View=NULL; + if (observed == (struct observable *) self->digit_5View) self->digit_5View=NULL; + if (observed == (struct observable *) self->digit_6View) self->digit_6View=NULL; + if (observed == (struct observable *) self->digit_7View) self->digit_7View=NULL; + if (observed == (struct observable *) self->digit_8View) self->digit_8View=NULL; + if (observed == (struct observable *) self->digit_9View) self->digit_9View=NULL; + if (observed == (struct observable *) self->outputView) self->outputView=NULL; + if (observed == (struct observable *) self->calc_1View) self->calc_1View=NULL; + if (observed == (struct observable *) self->calc_2View) self->calc_2View=NULL; + if (observed == (struct observable *) self->calc_3View) self->calc_3View=NULL; + } + } boolean calccon__InitializeClass(ClassID) struct classheader *ClassID; { *************** *** 264,269 **** --- 358,388 ---- /* user code begins here for InitializeClass */ /* user code ends here for InitializeClass */ return TRUE; + } + void calccon__FinalizeObject(ClassID,self) + struct classheader *ClassID; + struct calccon *self; + { + if(self->calc_4) value_RemoveCallBackObserver(self->calc_4, self); + if(self->calc_5) value_RemoveCallBackObserver(self->calc_5, self); + if(self->valenter) value_RemoveCallBackObserver(self->valenter, self); + if(self->decimal) value_RemoveCallBackObserver(self->decimal, self); + if(self->digit_0) value_RemoveCallBackObserver(self->digit_0, self); + if(self->digit_1) value_RemoveCallBackObserver(self->digit_1, self); + if(self->digit_2) value_RemoveCallBackObserver(self->digit_2, self); + if(self->digit_3) value_RemoveCallBackObserver(self->digit_3, self); + if(self->digit_4) value_RemoveCallBackObserver(self->digit_4, self); + if(self->digit_5) value_RemoveCallBackObserver(self->digit_5, self); + if(self->digit_6) value_RemoveCallBackObserver(self->digit_6, self); + if(self->digit_7) value_RemoveCallBackObserver(self->digit_7, self); + if(self->digit_8) value_RemoveCallBackObserver(self->digit_8, self); + if(self->digit_9) value_RemoveCallBackObserver(self->digit_9, self); + if(self->output) value_RemoveCallBackObserver(self->output, self); + if(self->calc_1) value_RemoveCallBackObserver(self->calc_1, self); + if(self->calc_2) value_RemoveCallBackObserver(self->calc_2, self); + if(self->calc_3) value_RemoveCallBackObserver(self->calc_3, self); + /* user code begins here for FinalizeObject */ + /* user code ends here for FinalizeObject */ } boolean calccon__InitializeObject(ClassID,self) struct classheader *ClassID; *** atk/controllers/calccon.ch Wed Nov 22 11:55:11 1989 --- atk/controllers/calccon.ch.NEW Thu Apr 25 16:13:48 1991 *************** *** 3,20 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/controllers/RCS/calccon.ch,v 2.4 89/02/17 15:18:34 ghoti Exp Locker: tpn $ */ /* $ACIS: $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/controllers/RCS/calccon.ch,v $ */ #ifndef lint ! static char *rcsid_calccon_H = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/controllers/RCS/calccon.ch,v 2.4 89/02/17 15:18:34 ghoti Exp Locker: tpn $ "; #endif /* lint */ /* user code ends here for HeaderInfo */ ! class calccon { classprocedures : InitializeClass() returns boolean; /* user code begins here for classprocedures */ /* user code ends here for classprocedures */ data: struct value *calc_4; struct buttonV *calc_4View; --- 3,25 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.ch,v 2.5 1991/04/25 18:22:38 tpn Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.ch,v $ */ #ifndef lint ! static char *rcsid_calccon_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/calccon.ch,v 2.5 1991/04/25 18:22:38 tpn Exp $ "; #endif /* lint */ /* user code ends here for HeaderInfo */ ! class calccon : observable [observe] { classprocedures : InitializeClass() returns boolean; + FinalizeObject(struct calccon *self); + InitializeObject(struct calccon *self) returns boolean; /* user code begins here for classprocedures */ /* user code ends here for classprocedures */ + overrides: + ObservedChanged( struct observable * observed, long status ); /* user code begins here for overrides */ + /* user code ends here for overrides */ data: struct value *calc_4; struct buttonV *calc_4View; *************** *** 54,64 **** struct buttonV *calc_3View; /* user code begins here for classdata */ char buf[64]; ! double val,saveval,dec; boolean error,clear; ! long op; /* user code ends here for classdata */ struct view *v; struct calccon *next; }; --- 59,70 ---- struct buttonV *calc_3View; /* user code begins here for classdata */ char buf[64]; ! double val,saveval; boolean error,clear; ! long op,dec; /* user code ends here for classdata */ struct view *v; + struct arbiterview *arbv; struct calccon *next; }; *** atk/controllers/helpcon.c Mon Aug 6 11:04:04 1990 --- atk/controllers/helpcon.c.NEW Wed Apr 3 21:16:58 1991 *************** *** 3,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/helpcon.c,v 2.6 90/04/24 17:06:39 gk5g Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/helpcon.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/helpcon.c,v 2.6 90/04/24 17:06:39 gk5g Exp $ "; #endif /* lint */ /* user code ends here for HeaderInfo */ #include --- 3,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/helpcon.c,v 2.7 91/04/02 16:55:21 susan Exp $ */ /* $ACIS: $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/helpcon.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/controllers/RCS/helpcon.c,v 2.7 91/04/02 16:55:21 susan Exp $ "; #endif /* lint */ /* user code ends here for HeaderInfo */ #include *************** *** 15,21 **** --- 15,26 ---- #include "proctbl.ih" #include "view.ih" #include "arbiterv.ih" + #ifdef M_UNIX + #include + #define direct dirent + #else #include + #endif #include "helpcon.eh" #include "celv.ih" #include "cltextv.ih" *** atk/console/cmd/Imakefile Thu Jan 10 14:57:43 1991 --- atk/console/cmd/Imakefile.NEW Tue Jan 15 14:22:19 1991 *************** *** 14,23 **** $(BASEDIR)/lib/liberrors.a \ $(UTILLIB) NormalObjectRule() NormalATKRule() ! DynamicMultiObject(consolea.do, consolea.o mailmon.o notop.o frlibcmu.o,$(LIBS), -lm) InstallClassFiles($(DOBJS),$(IHFILES)) InstallLink(runapp,${DESTDIR}/bin/console) --- 14,29 ---- $(BASEDIR)/lib/liberrors.a \ $(UTILLIB) + #ifdef _IBMR2 + SYSLIBS = -lm -lbsd + #else + SYSLIBS = -lm + #endif /* _IBMR2 */ + NormalObjectRule() NormalATKRule() ! DynamicMultiObject(consolea.do, consolea.o mailmon.o notop.o frlibcmu.o,$(LIBS), $(SYSLIBS)) InstallClassFiles($(DOBJS),$(IHFILES)) InstallLink(runapp,${DESTDIR}/bin/console) *** atk/console/cmd/viceop.c Wed Nov 22 11:55:37 1989 --- atk/console/cmd/viceop.c.NEW Sat Mar 23 20:18:25 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/cmd/RCS/viceop.c,v 2.15 89/06/04 17:17:55 mmackay Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/cmd/RCS/viceop.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/cmd/RCS/viceop.c,v 2.15 89/06/04 17:17:55 mmackay Exp $"; #endif /* lint */ /* ********************************************************************** --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/cmd/RCS/viceop.c,v 2.16 91/03/23 20:07:18 gk5g Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/cmd/RCS/viceop.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/cmd/RCS/viceop.c,v 2.16 91/03/23 20:07:18 gk5g Exp $"; #endif /* lint */ /* ********************************************************************** *************** *** 21,28 **** ********************************************************************** */ - #include - #include #include #include --- 21,26 ---- *************** *** 35,41 **** #ifdef AFS_ENV /* fix for makedepend errors */ #include #include - #include #include #endif /* AFS_ENV */ #include --- 33,38 ---- *** atk/console/fonts/Imakefile Wed Nov 22 11:56:29 1989 --- atk/console/fonts/Imakefile.NEW Wed Apr 10 16:19:19 1991 *************** *** 2,8 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ - FontRule() DeclareFont(con10) --- 2,7 ---- *************** *** 15,20 **** $(LN) con10.fwm $(DESTDIR)/fonts/console10.fwm $(LN) con12.fwm $(DESTDIR)/fonts/console12.fwm #endif /* WM_ENV */ - - - --- 14,16 ---- *** atk/console/lib/conclass.c Wed Nov 22 11:57:07 1989 --- atk/console/lib/conclass.c.NEW Wed May 8 13:11:39 1991 *************** *** 2,12 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/conclass.c,v 2.8 89/10/29 13:35:40 ghoti Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/conclass.c,v $ */ #ifndef lint ! char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/conclass.c,v 2.8 89/10/29 13:35:40 ghoti Exp $"; #endif /* lint */ /* --- 2,12 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/conclass.c,v 2.10 1991/05/08 17:11:00 gk5g Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/conclass.c,v $ */ #ifndef lint ! char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/conclass.c,v 2.10 1991/05/08 17:11:00 gk5g Exp $"; #endif /* lint */ /* *************** *** 129,135 **** extern struct display *FindInstrument(); extern SetStandardCursor(); ! struct consoleClass *consoleClass__Hit(self, action, x, y, numberOfClicks) struct consoleClass *self; enum view_MouseAction action; long x; --- 129,135 ---- extern struct display *FindInstrument(); extern SetStandardCursor(); ! struct view *consoleClass__Hit(self, action, x, y, numberOfClicks) struct consoleClass *self; enum view_MouseAction action; long x; *************** *** 136,141 **** --- 136,142 ---- long y; long numberOfClicks; { + struct view *ret = NULL; struct RegionLog *whichlog; struct display *mydisp; static int MovingX = -1; *************** *** 145,151 **** if (((mydisp = FindInstrument(self, x, y)) != NULL)&& (mydisp->AssociatedLogView != NULL) && (MovingX == -1)){ long newx = x - mydisp->Xmin; long newy = y - mydisp->Ymin; ! scroll_Hit(mydisp->ScrollLogView, action, newx, newy, numberOfClicks); } else{ if(! self->haveInputFocus){ --- 146,152 ---- if (((mydisp = FindInstrument(self, x, y)) != NULL)&& (mydisp->AssociatedLogView != NULL) && (MovingX == -1)){ long newx = x - mydisp->Xmin; long newy = y - mydisp->Ymin; ! ret = scroll_Hit(mydisp->ScrollLogView, action, newx, newy, numberOfClicks); } else{ if(! self->haveInputFocus){ *************** *** 182,189 **** ReportInternalError(self, "console: Unrecognized mouse std; this should never happen"); return(NULL); } ! return(self); } } --- 183,191 ---- ReportInternalError(self, "console: Unrecognized mouse std; this should never happen"); return(NULL); } ! ret = (struct view *) self; } + return( ret ); } *************** *** 191,199 **** --- 193,203 ---- struct consoleClass *self; { mydbg(("entering: consoleClass__ReceiveInputFocus\n")); + super_ReceiveInputFocus(self); self->haveInputFocus = TRUE; menulist_ChainBeforeML(self->stdMenulist, self->userMenulist, self->userMenulist); consoleClass_PostMenus(self, self->stdMenulist); + consoleClass_PostKeyState(self, NULL); } void consoleClass__LoseInputFocus(self) *** atk/console/lib/conclass.ch Wed Nov 22 11:57:18 1989 --- atk/console/lib/conclass.ch.NEW Mon May 6 20:55:14 1991 *************** *** 2,12 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/conclass.ch,v 2.7 89/03/28 07:26:00 ghoti Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/conclass.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidconsoleClass_H = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/conclass.ch,v 2.7 89/03/28 07:26:00 ghoti Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ --- 2,12 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/conclass.ch,v 2.8 1991/05/07 00:54:03 gk5g Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/conclass.ch,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidconsoleClass_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/conclass.ch,v 2.8 1991/05/07 00:54:03 gk5g Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ *************** *** 17,23 **** class consoleClass[conclass] : view { overrides: FullUpdate(enum view_UpdateType type, long left, long top, long width, long right); ! Hit(enum view_MouseAction action, long x, long y, long numberOfClicks) returns struct consoleClass *; ReceiveInputFocus(); LoseInputFocus(); Update(); --- 17,23 ---- class consoleClass[conclass] : view { overrides: FullUpdate(enum view_UpdateType type, long left, long top, long width, long right); ! Hit(enum view_MouseAction action, long x, long y, long numberOfClicks) returns struct view *; ReceiveInputFocus(); LoseInputFocus(); Update(); *** atk/console/lib/errmonf.c Wed Sep 26 16:03:56 1990 --- atk/console/lib/errmonf.c.NEW Wed Apr 3 21:17:18 1991 *************** *** 2,12 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errmonf.c,v 2.10 90/08/13 10:38:15 ajp Exp $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errmonf.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errmonf.c,v 2.10 90/08/13 10:38:15 ajp Exp $"; #endif /* lint */ /* --- 2,12 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errmonf.c,v 2.11 91/03/28 13:32:30 dba Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errmonf.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errmonf.c,v 2.11 91/03/28 13:32:30 dba Exp $"; #endif /* lint */ /* *************** *** 30,38 **** #include #include #include ! #ifndef HP300_ENV #include ! #endif /* HP300_ENV */ #include /* #include */ #include --- 30,38 ---- #include #include #include ! #ifndef hpux #include ! #endif /* hpux */ #include /* #include */ #include *** atk/console/lib/errormon.c Wed Sep 26 16:03:58 1990 --- atk/console/lib/errormon.c.NEW Tue Jan 22 14:24:34 1991 *************** *** 2,12 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errormon.c,v 2.20 90/08/20 17:35:06 gk5g Exp $ */ ! /* $Source: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errormon.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/.andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errormon.c,v 2.20 90/08/20 17:35:06 gk5g Exp $"; #endif /* lint */ /* --- 2,12 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errormon.c,v 2.21 91/01/21 18:34:26 gk5g Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errormon.c,v $ */ #ifndef lint ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/errormon.c,v 2.21 91/01/21 18:34:26 gk5g Exp $"; #endif /* lint */ /* *************** *** 95,100 **** --- 95,101 ---- int tempfd; int PtyNumber = 0; int flags; + char ptyname[64]; mydbg(("entering: InitErrorMonitoring\n")); if (InhibitErrorMonitoring || environ_Get("WMHOST") && !ForceErrorMonitoring) { *************** *** 111,117 **** close (SubChannel); } ! if (! GetPty(&SubChannel, &tempfd)) { sprintf(ErrTxt, "console: Incomplete error monitoring: Can't open pty %s %s", ptyname, sys_errlist[errno]); ReportInternalError(self, ErrTxt); return(-1); --- 112,118 ---- close (SubChannel); } ! if (! GetPtyandName(&SubChannel, &tempfd, ptyname, sizeof(ptyname))) { sprintf(ErrTxt, "console: Incomplete error monitoring: Can't open pty %s %s", ptyname, sys_errlist[errno]); ReportInternalError(self, ErrTxt); return(-1); *************** *** 199,204 **** --- 200,213 ---- } #endif /* vax */ #endif /* TIOCCONS */ + #if SY_AIX31 + /* redirect console to the pty. */ + { + char buf[256]; + sprintf(buf, "/etc/swcons %s > /dev/null", ptyname); + system(buf); + } + #endif ErrorsIn = fdopen(SubChannel, "r"); flags = fcntl(fileno(ErrorsIn), F_GETFL, 0); fcntl(fileno(ErrorsIn), F_SETFL, flags | FNDELAY); *** atk/console/lib/sitevars.h Wed Nov 22 11:56:49 1989 --- atk/console/lib/sitevars.h.NEW Wed Apr 3 21:17:19 1991 *************** *** 2,12 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/sitevars.h,v 2.8 89/09/05 08:39:12 ghoti Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/sitevars.h,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidsitevars_h = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/atk/console/lib/RCS/sitevars.h,v 2.8 89/09/05 08:39:12 ghoti Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ --- 2,12 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/sitevars.h,v 2.9 91/04/02 20:54:01 gk5g Exp $ */ ! /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/sitevars.h,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsidsitevars_h = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/console/lib/RCS/sitevars.h,v 2.9 91/04/02 20:54:01 gk5g Exp $"; #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ *************** *** 48,54 **** --- 48,58 ---- #ifdef hpux #define _SITE_VMUNIX "/hp-ux" #else /* hpux */ + #ifdef _IBMR2 + #define _SITE_VMUNIX "/unix" + #else /* ! _IBMR2 */ #define _SITE_VMUNIX "/vmunix" + #endif /* _IBMR2 */ #endif /* hpux */ #define _SITE_CONSOLE_SOCKET 2018 /* udp */ *** atk/console/stats/hp800/Imakefile Thu May 30 19:43:13 1991 --- atk/console/stats/hp800/Imakefile.NEW Tue Apr 23 15:53:10 1991 *************** *** 0 **** --- 1,11 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1989 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + LOCALINCLUDES = -I../../lib + + DependTarget() + NormalObjectRule() + + LibraryTarget(libgs.a, getstats.o) +