home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk1.iso / altsrc / articles / 10701 < prev    next >
Internet Message Format  |  1994-06-19  |  86KB

  1. Path: wupost!gumby!newsxfer.itd.umich.edu!zip.eecs.umich.edu!panix!MathWorks.Com!solaris.cc.vt.edu!uunet!tsw!not-for-mail
  2. From: dean%tsw@uunet.UU.NET (Dean Collins)
  3. Newsgroups: alt.sources
  4. Subject: X Problem Tracking System (03/16)
  5. Followup-To: alt.sources.d
  6. Date: 18 Jun 1994 12:23:02 -0700
  7. Organization: Zombie Software
  8. Lines: 2488
  9. Distribution: world
  10. Message-ID: <2tvhim$2t2@hal.sea.tsw.com>
  11. References: <2tvhif$q4k@hal.sea.tsw.com>
  12. Reply-To: dean@halcyon.com
  13. NNTP-Posting-Host: hal.sea.tsw.com
  14.  
  15. Archive-name: pts/part03
  16. Submitted-by: dean@halcyon.com (Dean Collins)
  17. Version: 1.05
  18.  
  19. #! /bin/sh
  20. # This is a shell archive.  Remove anything before this line, then unpack
  21. # it by saving it into a file and typing "sh file".  To overwrite existing
  22. # files, type "sh file -c".  You can also feed this as standard input via
  23. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  24. # will see the following message at the end:
  25. #        "End of archive 3 (of 16)."
  26. # Contents:  pts-1.05/ANNOUNCEMENT pts-1.05/Imakefile
  27. #   pts-1.05/PLATFORMS pts-1.05/config/Imakefile
  28. #   pts-1.05/config/configtest.c pts-1.05/config/sample2.config
  29. #   pts-1.05/contrib/DANGER/danger.c pts-1.05/contrib/ptsprt/Imakefile
  30. #   pts-1.05/contrib/texttest/texttest.c pts-1.05/neb_cld/clouderror.h
  31. #   pts-1.05/neb_cld/subtree.c pts-1.05/neb_cld/tester.c
  32. #   pts-1.05/ptsager/Imakefile pts-1.05/util/str.c
  33. #   pts-1.05/util/writebuf.c pts-1.05/xpts/CODE
  34. #   pts-1.05/xpts/Imakefile pts-1.05/xpts/popup.h
  35. #   pts-1.05/xpts/select.h
  36. # Wrapped by dean@hal on Sat Jun 18 12:08:12 1994
  37. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  38. if test -f 'pts-1.05/ANNOUNCEMENT' -a "${1}" != "-c" ; then 
  39.   echo shar: Will not clobber existing file \"'pts-1.05/ANNOUNCEMENT'\"
  40. else
  41. echo shar: Extracting \"'pts-1.05/ANNOUNCEMENT'\" \(4562 characters\)
  42. sed "s/^X//" >'pts-1.05/ANNOUNCEMENT' <<'END_OF_FILE'
  43. X
  44. X            ANNOUNCEMENT!!!
  45. X            ===============
  46. X
  47. XThis document announces release of version 1.05 of the Problem Tracking
  48. XSystem (PTS), also known as the X Problem Tracking System.  PTS/Xpts is
  49. XFREE software.
  50. X
  51. XSOFTWARE:    Problem Tracking System(PTS) / X Problem Tracking System(Xpts)
  52. X
  53. XVERSION:    1.05
  54. X
  55. XSYNOPSIS:    PTS/Xpts helps with system management.  It lets people
  56. X        report problems and lets sysops record their solutions
  57. X        to those problems.  It also helps automate other related
  58. X        communication activities.  Some might call this "help-desk"
  59. X        software or "groupware".
  60. X
  61. XSYSTEM REQMTS:    The core of PTS is "xpts", an X11R4/X11R5 application
  62. X        which uses the Athena widgets.  Building PTS requires
  63. X        a Unix variant, an ANSI C compiler, lex, yacc, make
  64. X        and imake/xmkmf.  PTS should build on most AIX, HP-UX,
  65. X        OSF/1, SCO, SunOS, Solaris, Domain/OS, Linux,
  66. X        Ultrix, IRIX, SGI, and Intergraph systems, among others.
  67. X
  68. XWHAT'S NEW:    This version introduces a command-line utility for
  69. X        reporting problems.  It can also be used interactively.
  70. X        Also, all filenames are now 14 or less characters long.
  71. X
  72. XCAVEAT:        The text-mode and command-line interfaces are limited
  73. X        at this time.  This is an area for continued development.
  74. X        An e-mail interface is still being planned; however, a
  75. X        simple one could easily be built around the new utility
  76. X        "newprob".
  77. X
  78. XAUTHORS:    Dean Collins, Chris Hyde, Luke Sheneman, Brian Goff,
  79. X        and John Hunter, among others, known collectively
  80. X        (for convenience only) as "Zombie Software".
  81. X
  82. XAVAILABILITY:    PTS/Xpts is FREE software.  Sources may be obtained from
  83. X        the following sites via anonymous-FTP, which are the
  84. X        "official" distribution sites:
  85. X
  86. X            ftp.x.org        /contrib/applications/pts
  87. X            ftp.halcyon.com        /local/pts
  88. X
  89. X        Source file is pts-1.05.tar.gz.  Look for patches and
  90. X        README files, too.  Also, the design documentation should
  91. X        be available wherever you obtain the source code in the
  92. X        file pts-1.0-doc.tar.gz.
  93. X
  94. X        Numerous sites mirror the ftp.x.org site.  PTS may be
  95. X        available from the following locations, and many others,
  96. X        as well as the "official" sites:
  97. X
  98. X    public.x.org        /contrib/applications/pts
  99. X    ftp.uu.net        /systems/window-sys/X/contrib/applications/pts
  100. X    ftp.cs.columbia.edu    /archives/X11R6/contrib/applications/pts
  101. X    ftp.germany.eu.net    /pub/X11/XConsortium/contrib/applications/pts
  102. X    ftp.inria.fr        /pub/X11/contrib/applications/pts
  103. X    ftp.luth.se        /pub/X11/contrib/applications/pts
  104. X    SunSITE.sut.ac.jp    /pub/archives/X11/contrib/applications/pts
  105. X
  106. X
  107. X        Also, the PTS source code is being distributed via
  108. X        Usenet and the alt.sources and/or comp.sources newsgroups.
  109. X        
  110. X
  111. X
  112. XDESCRIPTION
  113. X-----------
  114. XPTS is a tool for improving communication between system users
  115. Xand support personnel (sysops) about problems encountered
  116. Xwith the system.  It consists of several programs, including
  117. X"xpts" and "ptsager".
  118. X
  119. XIn a nutshell:
  120. XXpts is used by system users to report problems.  Support personnel
  121. X(sysops) also use it to log their activities on solving each problem.
  122. XXpts also sends e-mail to problem reporters when their problems are solved.
  123. XProblems are stored in a permanent database for future reference.
  124. X
  125. XThe problems are organized in a tree-like structure.  For example, a
  126. Xproblem with "rn" might be reported in "/Software/News/rn".  A problem
  127. Xwith a computer monitor might be reported in "/Hardware/Monitor".  
  128. XThe problem tree structure is _completely_ configurable to meet your
  129. Xparticular needs.
  130. X
  131. XPtsager scans through the database once a day and sends electronic mail
  132. Xto certain system users about problems that have remained unsolved for
  133. Xseveral days.
  134. X
  135. XWhile PTS was designed with managing a network of Unix workstations in
  136. Xmind, it is general and versatile enough to be used in many other ways.
  137. XFor example, at the University of Idaho, PTS was used by the PTS
  138. Xdesign team to report problems with and take suggestions about early
  139. Xversions of PTS.  We are very interested in hearing about unique
  140. Xand creative ways in which you use PTS/Xpts.
  141. X
  142. XPTS was designed and implemented by "Zombie Software", consisting of
  143. Xme (Dean Collins), Chris Hyde, Luke Sheneman, Brian Goff, John Hunter,
  144. XBrent Heikkula, and Dayne Steed.  It was designed in great part on a
  145. Xvolunteer basis for the University of Idaho Computer Science Department.
  146. X
  147. XI can't really provide much support for this free software,
  148. Xbut I'll help when I can.  I would appreciate help from others
  149. Xin this project.  
  150. X
  151. XPTS is being offered as a gift to the Internet community for it's 
  152. Xgenerosity towards us.  Enjoy!
  153. X
  154. X
  155. X--
  156. XDean Collins (dean@halcyon.com, dean@uidaho.edu)
  157. XFri Jun 17 18:26:22 1994
  158. END_OF_FILE
  159. if test 4562 -ne `wc -c <'pts-1.05/ANNOUNCEMENT'`; then
  160.     echo shar: \"'pts-1.05/ANNOUNCEMENT'\" unpacked with wrong size!
  161. fi
  162. # end of 'pts-1.05/ANNOUNCEMENT'
  163. fi
  164. if test -f 'pts-1.05/Imakefile' -a "${1}" != "-c" ; then 
  165.   echo shar: Will not clobber existing file \"'pts-1.05/Imakefile'\"
  166. else
  167. echo shar: Extracting \"'pts-1.05/Imakefile'\" \(3213 characters\)
  168. sed "s/^X//" >'pts-1.05/Imakefile' <<'END_OF_FILE'
  169. X######################################################################
  170. X# 
  171. X# Imakefile -- Imake rules for PTS.
  172. X# Dean Collins, Thu Jul 30 13:46:51 PDT 1992
  173. X#
  174. X# Modified: Dean Collins Sat Feb 12 23:27:44 1994
  175. X# Cleaned up, simplified, etc.
  176. X#
  177. X# Modified: Dean Collins Thu Mar 10 20:44:34 1994
  178. X# Moved customization to Imake.config, which each Imakefile
  179. X# will #include.  This eliminates the need to set CC within
  180. X# each one.
  181. X#
  182. X######################################################################
  183. X#
  184. X# Copyright (c) 1992,1993,1994 Dean Collins.
  185. X# Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  186. X# 
  187. X# Permission to use, copy, modify, and distribute this software and its
  188. X# documentation free of charge for any purpose is hereby granted without
  189. X# fee, provided that the above copyright notice appear in all copies and
  190. X# that both that copyright notice and this permission notice appear in
  191. X# supporting documentation, and that the name of the University of Idaho
  192. X# not be used in advertising or publicity pertaining to distribution of
  193. X# the software without specific, written prior permission.  The University
  194. X# of Idaho makes no representations about the suitability of this software
  195. X# for any purpose.  It is provided "as is" without express or implied warranty.
  196. X# 
  197. X# THE UNIVERSITY OF IDAHO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
  198. X# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  199. X# IN NO EVENT SHALL THE UNIVERSITY OF IDAHO BE LIABLE FOR ANY SPECIAL,
  200. X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  201. X# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  202. X# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  203. X# PERFORMANCE OF THIS SOFTWARE.
  204. X######################################################################
  205. X
  206. X
  207. X######################################################################
  208. X#  YOU SHOULDN'T NEED TO MODIFY ANYTHING IN THIS FILE.
  209. X#  All customization is now done in Imake.config.
  210. X######################################################################
  211. X
  212. X
  213. X#include "Imake.config"
  214. X
  215. X
  216. X#define IHaveSubdirs
  217. X#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
  218. X
  219. X         SUBDIRS = util zdbm config neb_cld xpts ptsager doc/Manual contrib
  220. X
  221. XMakeSubdirs($(SUBDIRS))
  222. XDependSubdirs($(SUBDIRS))
  223. X/*CleanSubdirs($(SUBDIRS))*/
  224. XLintSubdirs($(SUBDIRS))
  225. X
  226. X###### pts.cf ###################
  227. X# Install the config file.  Create a config file manually ("pts.cf")
  228. X# in the config directory before installing.
  229. X# (You can start with config/sample.config, but it must be customized.)
  230. X# This should not overwrite an existing pts.cf file, as far as I know.
  231. XPTSInstallNonExecFile(config/pts.cf,pts.cf,$(CFGDIR),$(OWNER))
  232. X
  233. X# Make the PTSROOT directory hierarchy.  You should be the "support"
  234. X# user when running "make install".
  235. Xinstall:: xpts/xpts ptsager/ptsager
  236. X    $(MKDIRHIER) $(PTSROOT)
  237. X    chown $(OWNER) $(PTSROOT)
  238. X
  239. Xconfigtest:
  240. X    cd config; $(MAKE) $(MFLAGS) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' configtest
  241. X
  242. XXpts:
  243. X    cd xpts; $(MAKE) $(MFLAGS) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' xpts
  244. X
  245. Xager:
  246. X    cd ptsager; $(MAKE) $(MFLAGS) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' ptsager
  247. X
  248. Xptsprt:
  249. X    cd contrib/ptsprt; $(MAKE) $(MFLAGS) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' ptsprt
  250. X
  251. END_OF_FILE
  252. if test 3213 -ne `wc -c <'pts-1.05/Imakefile'`; then
  253.     echo shar: \"'pts-1.05/Imakefile'\" unpacked with wrong size!
  254. fi
  255. # end of 'pts-1.05/Imakefile'
  256. fi
  257. if test -f 'pts-1.05/PLATFORMS' -a "${1}" != "-c" ; then 
  258.   echo shar: Will not clobber existing file \"'pts-1.05/PLATFORMS'\"
  259. else
  260. echo shar: Extracting \"'pts-1.05/PLATFORMS'\" \(3651 characters\)
  261. sed "s/^X//" >'pts-1.05/PLATFORMS' <<'END_OF_FILE'
  262. XPLATFORMS
  263. X---------
  264. XPTS was originally written on a BSD-like Unix system using the X11R5
  265. XAthena widgets in ANSI C.
  266. X
  267. XPTS has been successfully compiled by the authors on the following platforms.
  268. XOnly modification to the Imakefile(s) (and occasionally, Makefile(s))
  269. Xshould be necessary to build with similar configurations.
  270. X
  271. X1. HP-UX
  272. X    HARDWARE:        HP 9000/817s
  273. X    OS:            HP-UX 9.00
  274. X    C:            gcc 2.4.5
  275. X    X:            X11R5 from MIT
  276. X    Other software used:    HP's lex and yacc, part of their ANSI C package.
  277. X    PTS version:        1.05
  278. X    Notes:
  279. X      You should be able to use Flex/Bison in place of lex/yacc.
  280. X      I've never gotten PTS to build correctly with HP's ANSI compiler,
  281. X      but some have done so, reportedly (don't ask how, I don't know.)
  282. X
  283. X2.  AIX
  284. X    HARDWARE:        Powerserver 520
  285. X    OS:            AIX 3.2.3
  286. X    C:            IBM's stock compiler
  287. X    X:            X11R5 from MIT
  288. X    Other software used:    none
  289. X    PTS version:        1.05
  290. X    Notes:
  291. X      You should be able to use gcc instead of IBM's C compiler.
  292. X
  293. X3.  Linux
  294. X    HARDWARE:        Zeos 486DX2/66
  295. X    OS:            Linux 0.99.pl9-1 (Old!  I know!)
  296. X    C:            gcc 2.3.3
  297. X    X:            X11R5
  298. X    Other software used:    flex/bison
  299. X    PTS version:        1.05
  300. X    Notes:
  301. X      Default window sizes may be way too big.  Customize in Xpts.ad.
  302. X      Signal handler should be fixed.
  303. X
  304. X4.  HP/Apollo
  305. X    HARDWARE:        Apollo DN10000
  306. X    OS:            Domain/OS 10.4
  307. X    C:            Apollo's ANSI C compiler
  308. X    X:            X11R5 from MIT
  309. X    Other software use:    none
  310. X    PTS version:        1.01
  311. X    Notes:
  312. X      gcc not available for DN10000 RISC cpu.
  313. X      Originally developed on this platform.
  314. X      Built under BSD subsystem, _not_ SYSV or Aegis.
  315. X      Newer versions have not been tested (or even compiled)
  316. X      on Apollos by the authors.
  317. X
  318. X    HARDWARE:        Apollo DN3500, DN2500
  319. X    OS:            Domain/OS 10.4
  320. X    C:            gcc x.x.x or Apollo's ANSI C compiler
  321. X    X:            X11R5 from MIT
  322. X    Other software used:    none
  323. X    PTS version:        1.01
  324. X    Notes:
  325. X      Originally developed on this platform.
  326. X      Built under BSD subsystem, _not_ SYSV or Aegis.
  327. X      Newer versions have not been tested (or even compiled)
  328. X      on Apollos by the authors.
  329. X    
  330. X5.  OSF/1
  331. X    HARDWARE:        DEC Alpha 3000/600
  332. X    OS:            OSF/1 1.3
  333. X    C:            standard DEC "base" C compiler
  334. X    X:            standard DECwindows + X software development
  335. X    Other software used:    none
  336. X    PTS version:        1.04
  337. X    Notes:
  338. X      Marginally tested.  Beta software at best.
  339. X
  340. X6.  SCO Unix
  341. X    HARDWARE:        Clone i486/33
  342. X    OS:            SCO Unix SysVR3.2 v4.1
  343. X    C:            gcc 2.5.8
  344. X    X:            XFree86 2.1 from XFree86 Project, Inc.
  345. X    Other software used:    PD strftime.c (from comp.sources.misc)
  346. X    PTS version:        1.03b
  347. X    Notes:
  348. X      Ensure your X installation defines either -DSCO or -Dsco.
  349. X      You will need to either (I recommend #2, libx.a has some
  350. X      things in it we don't need, or want.):
  351. X        1.  Link with libx.a
  352. X        2.  Extract chsize.o from libx.a and add it to libzdbm.a
  353. X      A copy of the PD strftime.c is included, you will need to 
  354. X      define MISSING_SRCS as strftime.c and MISSING_OBJS as 
  355. X      strftime.o (an example is in the Imakefile.common file.)
  356. X      (Contributed by Kent Hamilton, <kenth@hns.st-louis.mo.us>.)
  357. X
  358. X
  359. X
  360. XPTS has reportedly been built on the following systems (not by the
  361. Xauthors).  Note that getting it to work on them may (or may not)
  362. Xrequire modification of the source code.  Please let me have your
  363. Xmodifications so others can use them.
  364. X    DEC Ultrix
  365. X    Sun Sparc & SunOS 4.x, w/ gcc, MIT X11R5
  366. X    Sun Solaris 2.x
  367. X    SGI IRIX 5.1, SGI C compiler (v3.17)
  368. X    Intergraph
  369. X
  370. X
  371. XYou should be able to get PTS to compile and run on many other Unix
  372. Xsystems.  If you build PTS on a platform not listed, pease fill out
  373. Xthe following form and e-mail it to me.  Please be as specific
  374. Xas possible where appropriate:
  375. X
  376. X    HARDWARE:        
  377. X    OS:            
  378. X    C:            
  379. X    X:            
  380. X    Other software used:    
  381. X    PTS version:        
  382. X    Notes:
  383. X
  384. X
  385. X--
  386. XDean Collins (dean@halcyon.com)
  387. XWed Jun 15 23:25:45 1994
  388. END_OF_FILE
  389. if test 3651 -ne `wc -c <'pts-1.05/PLATFORMS'`; then
  390.     echo shar: \"'pts-1.05/PLATFORMS'\" unpacked with wrong size!
  391. fi
  392. # end of 'pts-1.05/PLATFORMS'
  393. fi
  394. if test -f 'pts-1.05/config/Imakefile' -a "${1}" != "-c" ; then 
  395.   echo shar: Will not clobber existing file \"'pts-1.05/config/Imakefile'\"
  396. else
  397. echo shar: Extracting \"'pts-1.05/config/Imakefile'\" \(3029 characters\)
  398. sed "s/^X//" >'pts-1.05/config/Imakefile' <<'END_OF_FILE'
  399. X######################################################################
  400. X# 
  401. X# Imakefile -- Imake rules for config file parser.
  402. X# Dean Collins, Tue Jun 16 09:49:26 PDT 1992
  403. X#
  404. X# Modified: Dean Collins Thu Mar 10 20:48:02 1994
  405. X# Moved customization to ../Imake.config, which each Imakefile
  406. X# will #include.  This eliminates the need to set CC within
  407. X# each one.
  408. X
  409. X######################################################################
  410. X#
  411. X# Copyright (c) 1994 Dean Collins.
  412. X# Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  413. X# 
  414. X# Permission to use, copy, modify, and distribute this software and its
  415. X# documentation free of charge for any purpose is hereby granted without
  416. X# fee, provided that the above copyright notice appear in all copies and
  417. X# that both that copyright notice and this permission notice appear in
  418. X# supporting documentation, and that the name of the University of Idaho
  419. X# not be used in advertising or publicity pertaining to distribution of
  420. X# the software without specific, written prior permission.  The University
  421. X# of Idaho makes no representations about the suitability of this software
  422. X# for any purpose.  It is provided "as is" without express or implied warranty.
  423. X# 
  424. X# THE UNIVERSITY OF IDAHO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
  425. X# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  426. X# IN NO EVENT SHALL THE UNIVERSITY OF IDAHO BE LIABLE FOR ANY SPECIAL,
  427. X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  428. X# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  429. X# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  430. X# PERFORMANCE OF THIS SOFTWARE.
  431. X######################################################################
  432. X
  433. X######################################################################
  434. X#  YOU SHOULDN'T NEED TO MODIFY ANYTHING IN THIS FILE.
  435. X#  All customization is now done in ../Imake.config.
  436. X######################################################################
  437. X
  438. X
  439. X#include "../Imake.config"
  440. X
  441. X
  442. X#----------------------------------------------------------------------
  443. X
  444. X           SRCS = lex.yy.c y.tab.c config.c 
  445. X           OBJS = lex.yy.o y.tab.o config.o
  446. X           HDRS = y.tab.h cloud.h zdbm.h
  447. XLOCAL_LIBRARIES =
  448. X        DEPLIBS =
  449. X       PROGRAMS = 
  450. X       INCLUDES = -I../neb_cld -I../zdbm -I../util
  451. X            LEX = lex
  452. X           YACC = yacc -d
  453. X
  454. XNormalLibraryTarget(config,$(OBJS))
  455. XSpecialObjectRule(configtest.o, configtest.c, -UXPTS)
  456. XNormalProgramTarget(configtest, $(OBJS) configtest.o, $(DEPLIBS), \
  457. X            $(LOCAL_LIBRARIES) -L../neb_cld -L../zdbm -L../util \
  458. X            -L. -lcloud -lzdbm -lconfig -lutil, /**/ )
  459. XDependTarget()
  460. XLintTarget()
  461. X
  462. Xy.tab.c: config.yacc
  463. X    $(YACC) config.yacc
  464. X
  465. Xlex.yy.c: config.lex y.tab.h
  466. X    $(LEX) config.lex
  467. X
  468. Xy.tab.h: y.tab.c
  469. X
  470. Xlex.yy.o: lex.yy.c
  471. X    $(CC) -c lex.yy.c $(LOCAL_LIBRARIES) $(DEPLIBS) $(INCLUDES) $(CDEBUGFLAGS)
  472. X
  473. Xy.tab.o: y.tab.c
  474. X    $(CC) -c y.tab.c $(LOCAL_LIBRARIES) $(DEPLIBS) $(INCLUDES) $(CDEBUGFLAGS)
  475. X
  476. Xclean::
  477. X    $(RM) y.tab.c y.tab.h lex.yy.c 
  478. X
  479. Xuninstall::
  480. X
  481. END_OF_FILE
  482. if test 3029 -ne `wc -c <'pts-1.05/config/Imakefile'`; then
  483.     echo shar: \"'pts-1.05/config/Imakefile'\" unpacked with wrong size!
  484. fi
  485. # end of 'pts-1.05/config/Imakefile'
  486. fi
  487. if test -f 'pts-1.05/config/configtest.c' -a "${1}" != "-c" ; then 
  488.   echo shar: Will not clobber existing file \"'pts-1.05/config/configtest.c'\"
  489. else
  490. echo shar: Extracting \"'pts-1.05/config/configtest.c'\" \(4173 characters\)
  491. sed "s/^X//" >'pts-1.05/config/configtest.c' <<'END_OF_FILE'
  492. X/*configtest.c -- Used to test the config file parser.
  493. X  Dean Collins
  494. X  Wed Feb 23 12:18:04 1994
  495. X
  496. X  Usage: configtest [file [parsetype]]
  497. X
  498. XCopyright (c) 1994 Dean Collins
  499. X
  500. XPermission to use, copy, modify, and distribute this software and its
  501. Xdocumentation free of charge for any purpose is hereby granted without
  502. Xfee, provided that the above copyright notices appear in all copies and
  503. Xthat both those copyright notices and this permission notice appear in
  504. Xsupporting documentation, and that the name of Dean Collins not be
  505. Xused in advertising or publicity pertaining to distribution of the
  506. Xsoftware without specific, written prior permission.  Dean Collins
  507. Xmakes no representations about the suitability of this software for
  508. Xany purpose.  It is provided "as is" without express or implied warranty.
  509. X
  510. XDEAN COLLINS DISCLAIMS ALL WARRANTIES WITH
  511. XREGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
  512. XMERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL 
  513. XDEAN COLLINS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
  514. XDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  515. XPROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  516. XACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
  517. XTHIS SOFTWARE.
  518. X*/
  519. X
  520. X#include <stdio.h>
  521. X#include "zdbm.h"
  522. X#include "cloud.h"
  523. X#include "config.h"
  524. X
  525. Xextern int debug ;
  526. Xextern char ParserPath[] ;
  527. Xextern char ParserName[] ;
  528. Xextern int ParserDays ;
  529. Xextern FILE *yyin ; /* From lex.yy.c */
  530. X
  531. X/* The rest really aren't supposed to be accessed outside of config.yacc,
  532. X * but are anyhow for testing purposes.
  533. X */
  534. Xextern int parsetype ;
  535. Xextern struct Full_path *CfgTree ;
  536. X
  537. X
  538. X/*
  539. X______________________________________________________________________
  540. Xmain()
  541. X
  542. XFUNCTION DESCRIPTION:
  543. X    This function is used to test the parser.
  544. X______________________________________________________________________
  545. XREVISION HISTORY:
  546. X     Author:  Dean Collins            Date: 2/23/94
  547. X______________________________________________________________________
  548. X*/
  549. X
  550. X
  551. X
  552. Xint main(int   argc, 
  553. X     char *argv[])
  554. X
  555. X     /* Interface description:
  556. X         INPUT:
  557. X          argc        - command-line argument count
  558. X          argv        - command-line argument list
  559. X         OUTPUT:
  560. X          None.
  561. X         RETURN VALUE:
  562. X          int        - status
  563. X     */
  564. X
  565. X{
  566. X     /* Internal variables: */
  567. X          /* Major */
  568. X          /* NONE */
  569. X          /* Minor */
  570. X          /* NONE */
  571. X
  572. X
  573. X   /*------------------ Start of main() routine -------------------*/
  574. X
  575. X   if (argc > 3)
  576. X   {  printf("wrong number of arguments.\n") ;
  577. X      fprintf(stderr,"Usage: %s [file [parsetype]]\n", argv[0]) ;
  578. X      exit(1) ;
  579. X   }
  580. X   printf("Beginning parse test...\n") ;
  581. X   if (argc == 2)
  582. X    ParseTest(PARSEMISC, argv[1]) ;
  583. X   else if (argc == 3)
  584. X        ParseTest(atoi(argv[2]), argv[1]) ;
  585. X   else ParseTest(PARSEMISC, NULL) ;
  586. X
  587. X}  /*---------------------- End of main() -------------------------*/
  588. X
  589. X
  590. X
  591. Xint 
  592. XParseTest(int type,
  593. X      char *Fname)
  594. X
  595. X     /* Interface description:
  596. X         INPUT:
  597. X          type         - type of parse to perform (PARSEPATH, PARSEMAIL,...)
  598. X      Fname        - filename of the config file to test, if not NULL.
  599. X         OUTPUT:
  600. X          None.
  601. X         RETURN VALUE:
  602. X          int        - status
  603. X     */
  604. X{
  605. X
  606. X     /* Internal variables: */
  607. X          /* Major */
  608. X          /* NONE */
  609. X          /* Minor */
  610. X          /* NONE */
  611. X
  612. X   /*------------------ Start of ParseTest() routine -------------------*/
  613. X
  614. X    /* Open the configuration file for reading. */
  615. X   if (Fname != NULL)
  616. X        yyin = fopen(Fname, "r") ;
  617. X   else yyin = fopen(CONFIGFILE, "r") ;
  618. X   if (yyin == NULL)
  619. X   {   fprintf(stderr, "Error opening config file %s !\n", CONFIGFILE) ;
  620. X       return (-1) ;
  621. X   }
  622. X
  623. X    /* Call the parser and have it build the tree. */
  624. X   parsetype=type;
  625. X   parse_error=0 ;
  626. X   if (debug) printf("Beginning NEW & IMPROVED config file parse...\n") ;
  627. X
  628. X   yyparse() ;
  629. X
  630. X   if (debug) printf("\nEnding NEW & IMPROVED config file parse...\n") ;
  631. X
  632. X#ifdef DEBUG
  633. X/*CLD*/   if (parsetype == PARSEPATH) TraverseList(CfgTree) ;
  634. X#endif
  635. X
  636. X    /* Close the configuration file. */
  637. X   fclose(yyin) ;
  638. X
  639. X   return(parse_error) ;
  640. X
  641. X}  /*---------------------- End of ParseTest() -------------------------*/
  642. X
  643. X/* End of tester.c */
  644. END_OF_FILE
  645. if test 4173 -ne `wc -c <'pts-1.05/config/configtest.c'`; then
  646.     echo shar: \"'pts-1.05/config/configtest.c'\" unpacked with wrong size!
  647. fi
  648. # end of 'pts-1.05/config/configtest.c'
  649. fi
  650. if test -f 'pts-1.05/config/sample2.config' -a "${1}" != "-c" ; then 
  651.   echo shar: Will not clobber existing file \"'pts-1.05/config/sample2.config'\"
  652. else
  653. echo shar: Extracting \"'pts-1.05/config/sample2.config'\" \(2859 characters\)
  654. sed "s/^X//" >'pts-1.05/config/sample2.config' <<'END_OF_FILE'
  655. X# /usr/local/lib/PTS/pts.cf
  656. X# This is the config file for the Problem Tracking System (PTS).
  657. X#
  658. X#
  659. X############################################################
  660. X# 
  661. Xmailer:       /usr/lib/sendmail #What mail prog. to use?
  662. Xmailer_opts:  -t                #And it's command-line opts?
  663. Xprinter:      /usr/bin/lpr      #What print prog. to use?
  664. Xprinter_opts:  -Plj             #And it's command-line opts?
  665. X
  666. X############################################################
  667. X#Sysop list goes here... (optional)
  668. X#
  669. Xsysops:   dean chris sheneman brian hunter874 
  670. Xsysops:   simon johnd
  671. X
  672. X############################################################
  673. X#Mail list goes here...
  674. X#                           
  675. X#      e-mail              
  676. X#      address          age problem types list (opt.)
  677. X#====  ================ === =================================
  678. Xmail:  dean              2
  679. Xmail:  dean%foo@bar.com  1  /Software/Mail, /Software/News
  680. Xmail:  simon             4
  681. Xmail:  sirocco@gaea.com  2  /Software/PTS, \
  682. X                            /Software/Programming, \
  683. X                            /Software/X-Windows-System/Programming
  684. Xmail:  simon             1  /Hardware
  685. Xmail:  johnd             7
  686. Xmail:  zombie@cemetary   1  /Software/PTS
  687. X
  688. X
  689. X############################################################
  690. X# Problem types go here...
  691. X#   list leaves ONLY...
  692. X#   Case IS significant...
  693. X
  694. X## Report PTS problems with PTS... What a concept!
  695. Xleaf:  /Software/PTS/problems
  696. Xleaf:  /Software/PTS/suggestions
  697. Xleaf:  /Software/PTS/comments
  698. X
  699. Xleaf:  /Software/Editors/vi
  700. Xleaf:  /Software/Editors/emacs
  701. Xleaf:  /Software/Editors/Other
  702. X
  703. Xleaf:  /Software/Programming/C
  704. Xleaf:  /Software/Programming/Pascal
  705. Xleaf:  /Software/Programming/Fortran
  706. Xleaf:  /Software/Programming/Scheme
  707. Xleaf:  /Software/Programming/ML
  708. Xleaf:  /Software/Programming/Other
  709. X
  710. Xleaf:  /Software/X-Windows-System/Usage
  711. Xleaf:  /Software/X-Windows-System/Programming
  712. Xleaf:  /Software/X-Windows-System/Other
  713. X
  714. Xleaf:  /Software/Network/Remote-Logins
  715. Xleaf:  /Software/Network/File-Transfers
  716. Xleaf:  /Software/Network/Other
  717. X
  718. X#Note these two.  Often problems will be appropriate
  719. X#in multiple leaves.
  720. Xleaf:  /Hardware/Modems
  721. Xleaf:  /Software/Modems
  722. X
  723. Xleaf:  /Software/Shell/Korn-shell(ksh)
  724. Xleaf:  /Software/Shell/C-Shell(csh)
  725. Xleaf:  /Software/Shell/Bourne-Shell(sh)
  726. Xleaf:  /Software/Shell/Aegis
  727. Xleaf:  /Software/Shell/Other
  728. X
  729. Xleaf:  /Software/Login-Logout
  730. X
  731. Xleaf:  /Software/Mail/elm
  732. Xleaf:  /Software/Mail/mail
  733. Xleaf:  /Software/Mail/mh
  734. Xleaf:  /Software/Mail/xmh
  735. Xleaf:  /Software/Mail/sendmail
  736. Xleaf:  /Software/Mail/Other
  737. X
  738. Xleaf:  /Software/Other
  739. X
  740. Xleaf:  /Hardware/Printer
  741. Xleaf:  /Hardware/Keyboard
  742. Xleaf:  /Hardware/Display
  743. Xleaf:  /Hardware/Mouse
  744. Xleaf:  /Hardware/Tape-Drive
  745. Xleaf:  /Hardware/Hard-Drive
  746. Xleaf:  /Hardware/Network
  747. Xleaf:  /Hardware/X-Terminal
  748. Xleaf:  /Hardware/Other
  749. X
  750. Xleaf:  /Other
  751. X
  752. X################ END OF pts.cf #############################
  753. END_OF_FILE
  754. if test 2859 -ne `wc -c <'pts-1.05/config/sample2.config'`; then
  755.     echo shar: \"'pts-1.05/config/sample2.config'\" unpacked with wrong size!
  756. fi
  757. # end of 'pts-1.05/config/sample2.config'
  758. fi
  759. if test -f 'pts-1.05/contrib/DANGER/danger.c' -a "${1}" != "-c" ; then 
  760.   echo shar: Will not clobber existing file \"'pts-1.05/contrib/DANGER/danger.c'\"
  761. else
  762. echo shar: Extracting \"'pts-1.05/contrib/DANGER/danger.c'\" \(3775 characters\)
  763. sed "s/^X//" >'pts-1.05/contrib/DANGER/danger.c' <<'END_OF_FILE'
  764. X/* danger.c
  765. X *
  766. X * This program goes through the problem tree and blindly changes the edit
  767. X * flags in the index enties to FALSE.  It DOES NOT check anything before
  768. X * changing the flag, so BE CAREFULL!!!!!
  769. X *
  770. X */
  771. X
  772. X/* danger2.c
  773. X *
  774. X * This program goes through the problem tree and checks the mrd field of each
  775. X * problem index entry, if the field == DELETED rather than GONE, then it
  776. X * changes the mrd field to GONE and writes the index back out.  While this
  777. X * is not too dumb, it could still cause problems if used at the wrong time,
  778. X * so BE CAREFULL!!!!
  779. X *
  780. X */
  781. X
  782. X#include "danger.h"
  783. X
  784. XFILE *locknload();
  785. Xvoid remove_edit_locks();
  786. Xvoid fix_deleted();
  787. X
  788. Xmain(int argc, char *argv[])
  789. X{
  790. X struct Full_path *tree_root;
  791. X char emess[81];
  792. X int choice;
  793. X
  794. X printf("Which DANGEROUS one (1 or 2)? ");
  795. X gets(emess);
  796. X choice=atoi(emess);
  797. X
  798. X if (config_tree(&tree_root)==ERROR)
  799. X {
  800. X    perror("Error in config()");
  801. X    exit(errno);
  802. X }
  803. X
  804. X switch (choice)
  805. X {
  806. X    case 1:    remove_edit_locks(tree_root);
  807. X        break; /* end of switch 1 */
  808. X
  809. X    case 2:    fix_deleted(tree_root);
  810. X        break; /* end of switch 2 */
  811. X
  812. X    default:    printf("BAD choice %d - exiting.\n", choice);
  813. X        exit(1);
  814. X } /* end switch */
  815. X
  816. X} /* end danger.c */
  817. X
  818. XFILE *locknload(char *path)
  819. X{
  820. X char db_path[COMPLETEPATHLEN];
  821. X char *cp;
  822. X char emess[81];
  823. X FILE *temp;
  824. X
  825. X cp=rindex(path, '/');
  826. X if (cp==NULL)
  827. X    cp=path;
  828. X else
  829. X    cp++;
  830. X
  831. X sprintf(db_path, "%s%s/%s.index", PTSROOT, path, cp);
  832. X
  833. X if ((temp=fopen(db_path, "r+"))==NULL)
  834. X {
  835. X    sprintf(emess, "\n*****\n\tCould not open %s\n\t", db_path);
  836. X    perror(emess);
  837. X    return(NULL);
  838. X }
  839. X
  840. X if (lock_file(temp)==FAIL)
  841. X {
  842. X    fclose(temp);
  843. X    sprintf(emess, "\n***** Could not lock %s\n\t", db_path);
  844. X    perror(emess);
  845. X    return(NULL);
  846. X }
  847. X return(temp);
  848. X} /* end locknload() */
  849. X
  850. Xvoid remove_edit_locks(struct Full_path *tree_root)
  851. X{
  852. X struct Full_path *node;
  853. X index_record index;
  854. X FILE *db_pointer;
  855. X char *cp;
  856. X char emess[81];
  857. X
  858. X for (node=tree_root; node->next!=NULL; node=node->next)
  859. X {
  860. X    if ((db_pointer=locknload(node->path))==NULL)
  861. X    {
  862. X       continue;
  863. X    }
  864. X    printf("\n*****\n  Cleaning up %s%s index file now ", PTSROOT, node->path);
  865. X    while (fread(&index, sizeof(index_record), 1, db_pointer)==1)
  866. X    {
  867. X       printf("!");
  868. X       index.ef=FALSE;
  869. X       fseek(db_pointer, -(long)sizeof(index_record), SEEK_CUR);
  870. X       if (fwrite(&index, sizeof(index_record), 1, db_pointer)!=1)
  871. X          break;
  872. X       fseek(db_pointer, 0L, SEEK_CUR);
  873. X    } /* end while */
  874. X
  875. X    if (ferror(db_pointer))
  876. X    {
  877. X       sprintf(emess, "Error reading or writting to %s index file");
  878. X       perror(emess);
  879. X    }
  880. X    printf("\n*****\n");
  881. X    unlock_file(db_pointer);
  882. X    fclose(db_pointer);
  883. X } /* end for */
  884. X} /*end remove_edit_locks() */
  885. X
  886. Xvoid fix_deleted(struct Full_path *tree_root)
  887. X{
  888. X struct Full_path *node;
  889. X index_record index;
  890. X FILE *db_pointer;
  891. X char *cp;
  892. X char emess[81];
  893. X
  894. X for (node=tree_root; node->next!=NULL; node=node->next)
  895. X {
  896. X    if ((db_pointer=locknload(node->path))==NULL)
  897. X    {
  898. X       sprintf(emess, "Problem with locking and loading %s", node->path);
  899. X       continue;
  900. X    }
  901. X    printf("\n*****\n  Cleaning up %s%s index file now ", PTSROOT, node->path);
  902. X    while (fread(&index, sizeof(index_record), 1, db_pointer)==1)
  903. X    {
  904. X       printf("!");
  905. X       if (index.mrd==DELETED)
  906. X       {
  907. X      index.mrd=GONE;
  908. X      fseek(db_pointer, -(long)sizeof(index_record), SEEK_CUR);
  909. X          if (fwrite(&index, sizeof(index_record), 1, db_pointer)!=1)
  910. X         break;
  911. X      fseek(db_pointer, 0L, SEEK_CUR);
  912. X       } /* end if */
  913. X    } /* end while */
  914. X    if (ferror(db_pointer))
  915. X    {
  916. X       sprintf(emess, "Error reading or writting to %s index file");
  917. X       perror(emess);
  918. X    }
  919. X    printf("\n*****\n");
  920. X    unlock_file(db_pointer);
  921. X    fclose(db_pointer);
  922. X } /* end for */
  923. X} /* end fix_deleted() */
  924. END_OF_FILE
  925. if test 3775 -ne `wc -c <'pts-1.05/contrib/DANGER/danger.c'`; then
  926.     echo shar: \"'pts-1.05/contrib/DANGER/danger.c'\" unpacked with wrong size!
  927. fi
  928. # end of 'pts-1.05/contrib/DANGER/danger.c'
  929. fi
  930. if test -f 'pts-1.05/contrib/ptsprt/Imakefile' -a "${1}" != "-c" ; then 
  931.   echo shar: Will not clobber existing file \"'pts-1.05/contrib/ptsprt/Imakefile'\"
  932. else
  933. echo shar: Extracting \"'pts-1.05/contrib/ptsprt/Imakefile'\" \(2818 characters\)
  934. sed "s/^X//" >'pts-1.05/contrib/ptsprt/Imakefile' <<'END_OF_FILE'
  935. X######################################################################
  936. X# 
  937. X# Imakefile -- Imake rules for the ptsprt utility.
  938. X# Dean Collins, Thu Jul 30 08:33:47 PDT 1992
  939. X#
  940. X######################################################################
  941. X#
  942. X######################################################################
  943. X#
  944. X# Copyright (c) 1994 Dean Collins.
  945. X# Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  946. X# 
  947. X# Permission to use, copy, modify, and distribute this software and its
  948. X# documentation free of charge for any purpose is hereby granted without
  949. X# fee, provided that the above copyright notice appear in all copies and
  950. X# that both that copyright notice and this permission notice appear in
  951. X# supporting documentation, and that the name of the University of Idaho
  952. X# not be used in advertising or publicity pertaining to distribution of
  953. X# the software without specific, written prior permission.  The University
  954. X# of Idaho makes no representations about the suitability of this software
  955. X# for any purpose.  It is provided "as is" without express or implied warranty.
  956. X# 
  957. X# THE UNIVERSITY OF IDAHO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
  958. X# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  959. X# IN NO EVENT SHALL THE UNIVERSITY OF IDAHO BE LIABLE FOR ANY SPECIAL,
  960. X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  961. X# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  962. X# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  963. X# PERFORMANCE OF THIS SOFTWARE.
  964. X######################################################################
  965. X
  966. X######################################################################
  967. X#  YOU SHOULDN'T NEED TO MODIFY ANYTHING IN THIS FILE.
  968. X#  All costomization is now done in ../Imake.config.
  969. X######################################################################
  970. X
  971. X
  972. X#include "../../Imake.config"
  973. X
  974. X
  975. X#----------------------------------------------------------------------
  976. X
  977. XCCOPTIONS = -DBSD -UXPTS $(INCLUDES)
  978. XPTSTOP=../..
  979. X
  980. X           SRCS = ptsprt.c
  981. X           OBJS =  ptsprt.o cgetopts.o
  982. X           HDRS = 
  983. X       PROGRAMS = ptsprt
  984. X       INCLUDES = -I$(PTSTOP)/util -I$(PTSTOP)/zdbm -I$(PTSTOP)/neb_cld \
  985. X          -I$(PTSTOP)/config
  986. XLOCAL_LIBRARIES = -L$(PTSTOP)/neb_cld -lcloud -L$(PTSTOP)/config -lconfig \  
  987. X          -L$(PTSTOP)/zdbm -lzdbm \
  988. X          -L$(PTSTOP)/util -lutil $(MISSING_LIBS)
  989. X        PTSLIBS = $(PTSTOP)/neb_cld/libcloud.a $(PTSTOP)/config/libconfig.a \
  990. X          $(PTSTOP)/zdbm/libzdbm.a $(PTSTOP)/util/libutil.a
  991. X#   INSTPGMFLAGS = -m 4755 -o $(OWNER)
  992. X
  993. XAllTarget(ptsprt)
  994. XNormalProgramTarget(ptsprt,$(OBJS),$(PTSLIBS),$(LOCAL_LIBRARIES),/**/)
  995. XLintTarget()
  996. XDependTarget()
  997. XInstallProgram(ptsprt,$(BINDIR))
  998. X
  999. Xinstall.man::
  1000. X
  1001. X
  1002. Xuninstall::
  1003. X    $(RM) $(BINDIR)/ptsprt
  1004. X    @echo "uninstall in $(CURRENT_DIR) done"
  1005. X
  1006. END_OF_FILE
  1007. if test 2818 -ne `wc -c <'pts-1.05/contrib/ptsprt/Imakefile'`; then
  1008.     echo shar: \"'pts-1.05/contrib/ptsprt/Imakefile'\" unpacked with wrong size!
  1009. fi
  1010. # end of 'pts-1.05/contrib/ptsprt/Imakefile'
  1011. fi
  1012. if test -f 'pts-1.05/contrib/texttest/texttest.c' -a "${1}" != "-c" ; then 
  1013.   echo shar: Will not clobber existing file \"'pts-1.05/contrib/texttest/texttest.c'\"
  1014. else
  1015. echo shar: Extracting \"'pts-1.05/contrib/texttest/texttest.c'\" \(3343 characters\)
  1016. sed "s/^X//" >'pts-1.05/contrib/texttest/texttest.c' <<'END_OF_FILE'
  1017. X/* Test program #1 -- Text-Test */
  1018. X
  1019. X/* Copyright 1993 Dean Collins */
  1020. X
  1021. X#include <stdlib.h>
  1022. X#include <stdio.h>              /* Standard input/output utilities hdr. file */
  1023. X#include <sys/param.h>          /* System parameters header file */
  1024. X#include "zdbm.h"               /* Zombie Database Manager header file */
  1025. X#include "cloud.h"              /* Nebulous Cloud header file */
  1026. X#include "clouderror.h"         /* Nebulous Cloud error rtn. header file */
  1027. X#include "config.h"             /* Config. file parser header file */
  1028. X/*#include "util.h"*/
  1029. X
  1030. X
  1031. Xmain(int argc, char *argv[])
  1032. X{
  1033. X   char *text ;
  1034. X   char **UnsolvedList = NULL ;
  1035. X   Summary *CloudUnSummaries = NULL ;
  1036. X   ProblemTree *ProbTree ;
  1037. X   UserInfo UserInfoRec ;
  1038. X   int i,index ;
  1039. X   char Path[100] ;
  1040. X   problem_record * ProblemRecord ;
  1041. X
  1042. X     /* Get information about the user and read the problem hierarchy. */
  1043. X#ifdef DEBUG
  1044. X   printf("calling Setup()...\n") ;
  1045. X#endif
  1046. X   printf("loading config file...\n") ;
  1047. X/*CLD*/   if (Setup(&UserInfoRec, &ProbTree) == False)
  1048. X   {  fprintf(stderr, "Error in configuration file %s !\n", CONFIGFILE) ;
  1049. X      exit(1);
  1050. X   }
  1051. X#ifdef DEBUG
  1052. X   printf("returned from Setup()...\n") ;
  1053. X   printf("\tUserInfoRec.sysopflag = %d\n", UserInfoRec.sysopflag);
  1054. X   printf("\tUserInfoRec.username  = %s\n", UserInfoRec.username) ;
  1055. X   printf("\tUserInfoRec.realname  = %s\n", UserInfoRec.realname) ;
  1056. X#endif
  1057. X
  1058. X    /* Read all unsolved problems */
  1059. X   printf("searching for all unsolved problems...\n") ;
  1060. X   CloudUnSummaries = ReadUnsolvedSummaries(ProbTree, &UnsolvedList) ;
  1061. X
  1062. X   if (!CloudUnSummaries)
  1063. X    ;
  1064. X
  1065. X#ifdef DEBUG
  1066. X   printf("Checking for NULL values\n") ;
  1067. X   if (ProbTree == NULL) printf("ProbTree is NULL\n") ;
  1068. X   if (CloudUnSummaries== NULL) printf("CloudUnSummaries is NULL\n") ;
  1069. X   if (UnsolvedList == NULL) printf("UnsolvedList is NULL\n") ;
  1070. X   else if (UnsolvedList[0] == NULL) printf("UnsolvedList[0] is NULL\n") ;
  1071. X#endif
  1072. X
  1073. X   while (index != -1)
  1074. X   {
  1075. X        /* Print summaries with lines numbered. */
  1076. X      PrintSummaries(CloudUnSummaries,UnsolvedList) ;
  1077. X
  1078. X        /* Get selection from user */
  1079. X      index=GetSelection() ;
  1080. X
  1081. X      if (index >=0)
  1082. X      {
  1083. X        /* Read selected problem */
  1084. X/*CLD*/  ProblemRecord = ReadUnsolved(ProbTree, Path, CloudUnSummaries, index) ;
  1085. X
  1086. X        /* Format the problem */
  1087. X         text=FormatProblem(ProblemRecord) ;
  1088. X
  1089. X        /* Print the problem */
  1090. X         printf("-----------------------------------"
  1091. X        "-----------------------------------\n") ;
  1092. X         printf("%s",text) ;
  1093. X         printf("-----------------------------------"
  1094. X        "-----------------------------------\n") ;
  1095. X      }
  1096. X   }
  1097. X}
  1098. X
  1099. XPrintSummaries(Summary *CloudUnSummaries,
  1100. X           char **UnsolvedList)
  1101. X{
  1102. X   int i,j ;
  1103. X   char str[MAXSUMLEN+1] ;
  1104. X
  1105. X#ifdef DEBUG
  1106. X   printf("entering PrintSummaries()\n") ;
  1107. X#endif
  1108. X   for (i=0; UnsolvedList[i] != NULL; ++i)
  1109. X   {  strcpy(str,UnsolvedList[i]) ;
  1110. X      for (j=0; j<strlen(str); ++j)
  1111. X         if (str[j] == '\n')
  1112. X            str[j] = ' ' ;
  1113. X      printf("%-4d :\t%s\n",i+1,str) ;
  1114. X   }
  1115. X#ifdef DEBUG
  1116. X   printf("leaving PrintSummaries()\n") ;
  1117. X#endif
  1118. X}
  1119. X
  1120. Xint GetSelection(void)
  1121. X{
  1122. X   int index ;
  1123. X   char line[1000] ;
  1124. X   char test[1000] ;
  1125. X
  1126. X   printf("Enter problem number to view ('q' to quit):\n==>") ;
  1127. X   gets(line) ;
  1128. X   sscanf(line,"%d",&index) ;
  1129. X   sscanf(line,"%s",test) ;
  1130. X   if (test[0] == 'q' || index <= 0)
  1131. X   {  index = 0 ;
  1132. X   }
  1133. X   return (index-1) ;
  1134. X}
  1135. X
  1136. END_OF_FILE
  1137. if test 3343 -ne `wc -c <'pts-1.05/contrib/texttest/texttest.c'`; then
  1138.     echo shar: \"'pts-1.05/contrib/texttest/texttest.c'\" unpacked with wrong size!
  1139. fi
  1140. # end of 'pts-1.05/contrib/texttest/texttest.c'
  1141. fi
  1142. if test -f 'pts-1.05/neb_cld/clouderror.h' -a "${1}" != "-c" ; then 
  1143.   echo shar: Will not clobber existing file \"'pts-1.05/neb_cld/clouderror.h'\"
  1144. else
  1145. echo shar: Extracting \"'pts-1.05/neb_cld/clouderror.h'\" \(3911 characters\)
  1146. sed "s/^X//" >'pts-1.05/neb_cld/clouderror.h' <<'END_OF_FILE'
  1147. X/* Author:  Luke Sheneman  */
  1148. X
  1149. X
  1150. X/*
  1151. X * Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  1152. X *
  1153. X * Permission to use, copy, modify, and distribute this software and its
  1154. X * documentation free of charge for any purpose is hereby granted without
  1155. X * fee, provided that the above copyright notice appear in all copies and
  1156. X * that both that copyright notice and this permission notice appear in
  1157. X * supporting documentation, and that the name of the University of Idaho
  1158. X * not be used in advertising or publicity pertaining to distribution of
  1159. X * the software without specific, written prior permission.  The University
  1160. X * of Idaho makes no representations about the suitability of this software
  1161. X * for any purpose.  It is provided "as is" without express or implied warranty.
  1162. X *
  1163. X * THE UNIVERSITY OF IDAHO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
  1164. X * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  1165. X * IN NO EVENT SHALL THE UNIVERSITY OF IDAHO BE LIABLE FOR ANY SPECIAL,
  1166. X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  1167. X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  1168. X * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  1169. X * PERFORMANCE OF THIS SOFTWARE.
  1170. X */
  1171. X
  1172. X
  1173. X
  1174. X
  1175. Xextern int cld_errno;     /* our global variable */
  1176. X
  1177. Xchar *CloudStrerror();    /* A prototype */
  1178. X
  1179. X#define MAXERRORSTRING 2500
  1180. X
  1181. X
  1182. X
  1183. X/* For setup.c */
  1184. X
  1185. X#define CLD_ERR1     400    /* getpwuid could not get information */
  1186. X#define CLD_ERR2    401    /* could not parse config file info   */
  1187. X
  1188. X
  1189. X
  1190. X/* For summaries.c */
  1191. X
  1192. X#define CLD_ERR3    402    /* could not read next unsolved problem           */
  1193. X#define CLD_ERR4    403    /* could not read next reopened requested problem */
  1194. X#define CLD_ERR5    404    /* could not read next solved problem              */
  1195. X#define CLD_ERR6    405     /* could not read particular unsolved problem     */
  1196. X#define CLD_ERR7    406     /* could not read particular reopened problem     */
  1197. X#define CLD_ERR8    407     /* invalid problem status in ReadUnsolved()       */
  1198. X#define CLD_ERR9    408     /* empty summary list passed into ReadUnsolved()  */
  1199. X
  1200. X
  1201. X
  1202. X/* For problems.c */
  1203. X
  1204. X#define CLD_ERR10    409     /* invalid path in problem tree              */
  1205. X#define CLD_ERR11    410     /* branch has no children in problem tree.      */
  1206. X#define CLD_ERR12    411     /* non-existant branch in problem tree.          */
  1207. X#define CLD_ERR13    412     /* generic difficulty moving to desired branch    */
  1208. X#define CLD_ERR14    413     /* requested problem does not exist (cloud fault) */
  1209. X#define CLD_ERR15    414     /* requested problem does not exist (zdbm fault)  */
  1210. X#define CLD_ERR16    415     /* error locking problem              */
  1211. X#define CLD_ERR17    416     /* error unlocking problem              */
  1212. X#define CLD_ERR18    417     /* error solving problem              */
  1213. X#define CLD_ERR19    418     /* error reopening problem              */
  1214. X#define CLD_ERR20    419     /* error requesting the reopening of a problem      */
  1215. X#define CLD_ERR21    420     /* error opening temp mail file for deny letter   */
  1216. X#define CLD_ERR22    421     /* error denying the reopen of a problem       */
  1217. X#define CLD_ERR23    422     /* error adding reporter to reporter list      */
  1218. X#define CLD_ERR24    423     /* error deleting file from database          */
  1219. X#define CLD_ERR25    424     /* source path invalid for moving problem      */
  1220. X#define CLD_ERR26    425     /* destination path invalid for moving problem      */
  1221. X#define CLD_ERR27    426     /* error moving problem                        */
  1222. X#define CLD_ERR28    427     /* source path invalid for linking a problem      */
  1223. X#define CLD_ERR29    428     /* destination path invalid for linking a problem */
  1224. X#define CLD_ERR30    429     /* error linking problem                */
  1225. X#define CLD_ERR31    430     /* error opening temp file for printing a problem */
  1226. X#define CLD_ERR32    431     /* error adding problem to database           */
  1227. X#define CLD_ERR33     432     /* error appending a problem log to a problem     */
  1228. X#define CLD_ERR35    434    /* Error Reopening Problem               */
  1229. X
  1230. X
  1231. X
  1232. X
  1233. X/* For subtree.c */
  1234. X
  1235. X#define CLD_ERR34    433    /* SubTree not found in Tree with specified path  */ 
  1236. X
  1237. X
  1238. END_OF_FILE
  1239. if test 3911 -ne `wc -c <'pts-1.05/neb_cld/clouderror.h'`; then
  1240.     echo shar: \"'pts-1.05/neb_cld/clouderror.h'\" unpacked with wrong size!
  1241. fi
  1242. # end of 'pts-1.05/neb_cld/clouderror.h'
  1243. fi
  1244. if test -f 'pts-1.05/neb_cld/subtree.c' -a "${1}" != "-c" ; then 
  1245.   echo shar: Will not clobber existing file \"'pts-1.05/neb_cld/subtree.c'\"
  1246. else
  1247. echo shar: Extracting \"'pts-1.05/neb_cld/subtree.c'\" \(4327 characters\)
  1248. sed "s/^X//" >'pts-1.05/neb_cld/subtree.c' <<'END_OF_FILE'
  1249. X/* Author:  Luke Sheneman  */
  1250. X
  1251. X/*
  1252. X * Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  1253. X *
  1254. X * Permission to use, copy, modify, and distribute this software and its
  1255. X * documentation free of charge for any purpose is hereby granted without
  1256. X * fee, provided that the above copyright notice appear in all copies and
  1257. X * that both that copyright notice and this permission notice appear in
  1258. X * supporting documentation, and that the name of the University of Idaho
  1259. X * not be used in advertising or publicity pertaining to distribution of
  1260. X * the software without specific, written prior permission.  The University
  1261. X * of Idaho makes no representations about the suitability of this software
  1262. X * for any purpose.  It is provided "as is" without express or implied warranty.
  1263. X *
  1264. X * THE UNIVERSITY OF IDAHO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
  1265. X * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  1266. X * IN NO EVENT SHALL THE UNIVERSITY OF IDAHO BE LIABLE FOR ANY SPECIAL,
  1267. X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  1268. X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  1269. X * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  1270. X * PERFORMANCE OF THIS SOFTWARE.
  1271. X *
  1272. X * Modified: Dean Collins Sun Jun 12 20:29:40 1994
  1273. X * Added IsLeaf() function.  This seems to be the least-inappropriate
  1274. X * source file to place it in.
  1275. X */
  1276. X
  1277. X
  1278. X/* The following functions are defined in subtree.c:
  1279. X *
  1280. X * FreeParts() - frees an array of strings which was created by BreakUpPath().
  1281. X * SubTree() - returns a pointer to a subtree of the problem tree given the
  1282. X *    tree and a path to the desired tree.
  1283. X * IsLeaf() - determines if a path is a leaf in a problem tree.
  1284. X * TraverseList() - Traverses a linked list of Full_path structures.
  1285. X *                  (Moved from tester.c, RDC, Thu Jun 16 17:39:32 1994)
  1286. X *
  1287. X */
  1288. X
  1289. X
  1290. X#include <stdio.h>
  1291. X#include "zdbm.h"
  1292. X#include "cloud.h"
  1293. X#include "clouderror.h"
  1294. X
  1295. X
  1296. Xvoid FreeParts(parts)
  1297. Xchar *parts[MAXBRANCHES];
  1298. X{
  1299. X    int loop;
  1300. X
  1301. X    cld_errno=0;
  1302. X
  1303. X    for(loop=0;loop<MAXBRANCHES;loop++)
  1304. X        free(parts[loop]);
  1305. X}
  1306. X
  1307. X
  1308. XProblemTree *SubTree(tree,ppath)
  1309. XProblemTree *tree;
  1310. Xchar ppath[DBPATHLEN];
  1311. X{
  1312. X        ProblemTree *subtree,*current;
  1313. X        char *parts[MAXBRANCHES];
  1314. X        char newpath[DBPATHLEN];
  1315. X        int loop=0;
  1316. X
  1317. X    cld_errno=0;
  1318. X
  1319. X        current=tree;
  1320. X        strcpy(newpath,ppath);
  1321. X        strcat(newpath,"/");
  1322. X
  1323. X        BreakUpPath(newpath,parts);
  1324. X        if(!strcmp(parts[0],ROOTSTR))
  1325. X                if(!strcmp(parts[1],""))
  1326. X                        return(tree);
  1327. X                else
  1328. X                        loop++;
  1329. X
  1330. X        while(strcmp(parts[loop],""))
  1331. X        {
  1332. X                subtree=FindBranch(current,parts[loop]);
  1333. X                if(subtree)
  1334. X                {
  1335. X                        current=subtree;
  1336. X                        loop++;
  1337. X                }
  1338. X                else
  1339. X        {
  1340. X            cld_errno=CLD_ERR34;
  1341. X            FreeParts(parts);
  1342. X                        return(NULL);
  1343. X        }
  1344. X        }
  1345. X    FreeParts(parts);
  1346. X        return(subtree);
  1347. X}
  1348. X
  1349. X
  1350. X
  1351. X/*
  1352. X______________________________________________________________________
  1353. XIsLeaf()
  1354. X
  1355. XFUNCTION DESCRIPTION:
  1356. X
  1357. X    This function determines if a path is a leaf in a problem tree.
  1358. X
  1359. X______________________________________________________________________
  1360. XUNIT TESTING:
  1361. X     This function has been tested by using white-box tests.
  1362. X______________________________________________________________________
  1363. XREVISION HISTORY:
  1364. X     Author:  Dean Collins      Date:  6/11/94
  1365. X______________________________________________________________________
  1366. X*/
  1367. X
  1368. Xint IsLeaf(tree, path)
  1369. XProblemTree *tree ;
  1370. Xchar *path ;
  1371. X{
  1372. X   ProblemTree *subtree ;
  1373. X
  1374. X    /* Find the node in the tree corresponding to path. */
  1375. X   subtree = SubTree(tree, path) ;
  1376. X   if (subtree == NULL)  /* path not in tree, so it's not a leaf. */
  1377. X      return 0 ;
  1378. X
  1379. X    /* If node has any children it's not a leaf. */
  1380. X   return ( (subtree->subhead) == 0) ;
  1381. X
  1382. X}
  1383. X
  1384. X
  1385. X
  1386. X/* Prints out all the paths in a problem tree.  Moved from tester.c.  */
  1387. X
  1388. Xvoid TraverseList(path)
  1389. Xstruct Full_path *path;
  1390. X{
  1391. X    struct Full_path *t;
  1392. X
  1393. X    cld_errno=0;
  1394. X
  1395. X    t=path;
  1396. X
  1397. X#ifdef DEBUG
  1398. X    printf("\n");
  1399. X#endif /* DEBUG */
  1400. X
  1401. X    while(t)
  1402. X    {
  1403. X
  1404. X#ifdef DEBUG
  1405. X        printf("TraverseList() - %s\n",t->path);
  1406. X#else
  1407. X        printf("%s\n",t->path);
  1408. X#endif /* DEBUG */
  1409. X
  1410. X        t=t->next;
  1411. X    }    
  1412. X
  1413. X#ifdef DEBUG
  1414. X    printf("\n");
  1415. X#endif /* DEBUG */
  1416. X
  1417. X}
  1418. X
  1419. END_OF_FILE
  1420. if test 4327 -ne `wc -c <'pts-1.05/neb_cld/subtree.c'`; then
  1421.     echo shar: \"'pts-1.05/neb_cld/subtree.c'\" unpacked with wrong size!
  1422. fi
  1423. # end of 'pts-1.05/neb_cld/subtree.c'
  1424. fi
  1425. if test -f 'pts-1.05/neb_cld/tester.c' -a "${1}" != "-c" ; then 
  1426.   echo shar: Will not clobber existing file \"'pts-1.05/neb_cld/tester.c'\"
  1427. else
  1428. echo shar: Extracting \"'pts-1.05/neb_cld/tester.c'\" \(4684 characters\)
  1429. sed "s/^X//" >'pts-1.05/neb_cld/tester.c' <<'END_OF_FILE'
  1430. X/* Author:  Luke Sheneman */
  1431. X
  1432. X/* Modified: Dean Collins Thu Jun 16 17:53:08 1994
  1433. X * Moved TraverseList() to subtree.c.
  1434. X */
  1435. X
  1436. X/*
  1437. X * Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  1438. X *
  1439. X * Permission to use, copy, modify, and distribute this software and its
  1440. X * documentation free of charge for any purpose is hereby granted without
  1441. X * fee, provided that the above copyright notice appear in all copies and
  1442. X * that both that copyright notice and this permission notice appear in
  1443. X * supporting documentation, and that the name of the University of Idaho
  1444. X * not be used in advertising or publicity pertaining to distribution of
  1445. X * the software without specific, written prior permission.  The University
  1446. X * of Idaho makes no representations about the suitability of this software
  1447. X * for any purpose.  It is provided "as is" without express or implied warranty.
  1448. X *
  1449. X * THE UNIVERSITY OF IDAHO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
  1450. X * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  1451. X * IN NO EVENT SHALL THE UNIVERSITY OF IDAHO BE LIABLE FOR ANY SPECIAL,
  1452. X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  1453. X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  1454. X * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  1455. X * PERFORMANCE OF THIS SOFTWARE.
  1456. X */
  1457. X
  1458. X/* These functions are marginally useful for debugging purposes only.  These
  1459. X   functions are not necessary for the normal operation of the PTS system, 
  1460. X   but can provide help in the case of debugging.
  1461. X*/
  1462. X
  1463. X/* tester.c provides definitions for the following functions:
  1464. X *
  1465. X * PrintUserInfo() - Prints out a given userinfo structure.
  1466. X * P_code() - Remnants of the past...no longer useful.
  1467. X * PrintParts() - Prints out an array of path part strings.
  1468. X * PrintUnsolvedSummaries() - Prints out an array of unsolved summary
  1469. X *     strings.
  1470. X * TraverseSummaries() - Traverses a linked list of Summary structures,
  1471. X *      printing the members of the structure as it goes.
  1472. X * printsummary() - prints the contents of a summary structure.
  1473. X *
  1474. X */
  1475. X
  1476. X
  1477. X#define NUMPATHS 6
  1478. X
  1479. X#include <stdio.h>
  1480. X#include "zdbm.h"
  1481. X#include "cloud.h"
  1482. X#include "clouderror.h"
  1483. X
  1484. Xvoid PrintUserInfo(userinfo)
  1485. XUserInfo *userinfo;
  1486. X{
  1487. X    cld_errno=0;
  1488. X
  1489. X#ifdef DEBUG
  1490. X    printf("SYSOP: %d\n",userinfo->sysopflag);
  1491. X    printf("USERNAME: %s\n",userinfo->username);
  1492. X    printf("REALNAME: %s\n",userinfo->realname);
  1493. X#endif /* DEBUG */
  1494. X
  1495. X}
  1496. X
  1497. Xint P_code(flag,ppath)
  1498. Xstruct Full_path **ppath;
  1499. X{
  1500. X    int loop;
  1501. X        char table[NUMPATHS][DBPATHLEN];
  1502. X        struct Full_path *temp;
  1503. X    struct Full_path *path;
  1504. X
  1505. X    cld_errno=0;
  1506. X
  1507. X        strcpy(table[0],"/Help/Me");
  1508. X        strcpy(table[1],"/Help/Me/Now");
  1509. X        strcpy(table[2],"/Help/Me/Later");
  1510. X        strcpy(table[3],"/Help/You");
  1511. X        strcpy(table[4],"/Help/You/Junk");
  1512. X        strcpy(table[5],"/PTS/REOPEN");
  1513. X
  1514. X        path=(struct Full_path *)malloc(sizeof(struct Full_path));
  1515. X        strcpy(path->path,table[0]);
  1516. X        path->next=NULL;
  1517. X
  1518. X        for(loop=1;loop<NUMPATHS;loop++)
  1519. X    {
  1520. X                struct Full_path *t;
  1521. X
  1522. X                t=(struct Full_path *)malloc(sizeof(struct Full_path));
  1523. X                strcpy(t->path,table[loop]);
  1524. X                t->next=path;
  1525. X                path=t;
  1526. X        }
  1527. X
  1528. X        temp=path;
  1529. X    *ppath=path;
  1530. X        return(NULL);
  1531. X}
  1532. X
  1533. Xvoid PrintParts(parts)
  1534. Xchar parts[MAXBRANCHES][DBPATHLEN];
  1535. X{
  1536. X    int loop=0;
  1537. X
  1538. X    cld_errno=0;
  1539. X
  1540. X#ifdef DEBUG
  1541. X    printf("\n");
  1542. X#endif /* DEBUG */
  1543. X    while(strcmp(parts[loop],""))
  1544. X    {
  1545. X#ifdef DEBUG
  1546. X        printf("PrintParts() - %s\n",parts[loop]);
  1547. X#endif /* DEBUG */
  1548. X        loop++;
  1549. X    }    
  1550. X
  1551. X#ifdef DEBUG
  1552. X    printf("\n");
  1553. X#endif /* DEBUG */
  1554. X
  1555. X}
  1556. X
  1557. Xvoid PrintUnsolvedSummaries(unsummaries)
  1558. Xchar unsummaries[MAXSUMMARIES][MAXSUMLEN];
  1559. X{
  1560. X    int loop;
  1561. X
  1562. X    cld_errno=0;
  1563. X
  1564. X    while(strcmp(unsummaries[loop],""));
  1565. X    {
  1566. X
  1567. X#ifdef DEBUG
  1568. X        printf("%s\n",unsummaries[loop]);
  1569. X#endif /* DEBUG */
  1570. X
  1571. X        loop++;
  1572. X    }
  1573. X}
  1574. X
  1575. X
  1576. Xvoid TraverseSummaries(summaries)
  1577. XSummary *summaries;
  1578. X{
  1579. X    Summary *s;
  1580. X
  1581. X    cld_errno=0;
  1582. X
  1583. X#ifdef DEBUG
  1584. X    printf("In TraverseSummaries() about to traverse linked list of summaries.\n");
  1585. X#endif /* DEBUG */
  1586. X    
  1587. X    s=summaries;
  1588. X    while(s)
  1589. X    {
  1590. X#ifdef DEBUG
  1591. X        printf("TraverseSummaries() - summary ptr=%p\n",s);
  1592. X        printf("              summary prid=%s\n",s->prid);
  1593. X        printf("              summary summary=%s\n",s->summary);
  1594. X        printf("              summary path=%s\n",s->path);
  1595. X        printf("              summary status=%d\n",s->status);
  1596. X#endif /* DEBUG */
  1597. X        s=s->next;
  1598. X    }
  1599. X}
  1600. X
  1601. X
  1602. Xvoid printsummary(summary)
  1603. XSummary *summary;
  1604. X{
  1605. X    cld_errno=0;
  1606. X
  1607. X#ifdef DEBUG
  1608. X    printf("printsummary() - \n");
  1609. X    printf("^^^ prid: %s\n",summary->prid);
  1610. X    printf("^^^ path: %s\n",summary->path);
  1611. X    printf("^^^ summary: %s\n",summary->summary);
  1612. X    printf("^^^ status: %d\n",summary->prid);
  1613. X#endif /* DEBUG */
  1614. X
  1615. X}
  1616. END_OF_FILE
  1617. if test 4684 -ne `wc -c <'pts-1.05/neb_cld/tester.c'`; then
  1618.     echo shar: \"'pts-1.05/neb_cld/tester.c'\" unpacked with wrong size!
  1619. fi
  1620. # end of 'pts-1.05/neb_cld/tester.c'
  1621. fi
  1622. if test -f 'pts-1.05/ptsager/Imakefile' -a "${1}" != "-c" ; then 
  1623.   echo shar: Will not clobber existing file \"'pts-1.05/ptsager/Imakefile'\"
  1624. else
  1625. echo shar: Extracting \"'pts-1.05/ptsager/Imakefile'\" \(3149 characters\)
  1626. sed "s/^X//" >'pts-1.05/ptsager/Imakefile' <<'END_OF_FILE'
  1627. X######################################################################
  1628. X# 
  1629. X# Imakefile -- Imake rules for the problem-ager utility.
  1630. X# Dean Collins, Thu Jul 30 08:33:47 PDT 1992
  1631. X#
  1632. X######################################################################
  1633. X#
  1634. X# Modified: Dean Collins Thu Feb 24 15:23:48 1994
  1635. X# Removed mutant use of xpts/util.c.  Changed file mode of installed
  1636. X# program to be setuid.  Should be set up as "setuid support"
  1637. X# to ensure proper access to the database.
  1638. X#
  1639. X# Modified: Dean Collins Thu Mar 10 20:52:51 1994
  1640. X# Moved customization to ../Imake.config, which each Imakefile
  1641. X# will #include.  This eliminates the need to set CC within
  1642. X# each one.
  1643. X#
  1644. X######################################################################
  1645. X#
  1646. X# Copyright (c) 1994 Dean Collins.
  1647. X# Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  1648. X# 
  1649. X# Permission to use, copy, modify, and distribute this software and its
  1650. X# documentation free of charge for any purpose is hereby granted without
  1651. X# fee, provided that the above copyright notice appear in all copies and
  1652. X# that both that copyright notice and this permission notice appear in
  1653. X# supporting documentation, and that the name of the University of Idaho
  1654. X# not be used in advertising or publicity pertaining to distribution of
  1655. X# the software without specific, written prior permission.  The University
  1656. X# of Idaho makes no representations about the suitability of this software
  1657. X# for any purpose.  It is provided "as is" without express or implied warranty.
  1658. X# 
  1659. X# THE UNIVERSITY OF IDAHO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
  1660. X# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  1661. X# IN NO EVENT SHALL THE UNIVERSITY OF IDAHO BE LIABLE FOR ANY SPECIAL,
  1662. X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  1663. X# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  1664. X# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  1665. X# PERFORMANCE OF THIS SOFTWARE.
  1666. X######################################################################
  1667. X
  1668. X######################################################################
  1669. X#  YOU SHOULDN'T NEED TO MODIFY ANYTHING IN THIS FILE.
  1670. X#  All customization is now done in ../Imake.config.
  1671. X######################################################################
  1672. X
  1673. X
  1674. X#include "../Imake.config"
  1675. X
  1676. X
  1677. X#----------------------------------------------------------------------
  1678. X
  1679. XCCOPTIONS = -DBSD -UXPTS $(INCLUDES)
  1680. X
  1681. X           SRCS = ptsager.c
  1682. X           OBJS =  ptsager.o
  1683. X           HDRS = 
  1684. X       PROGRAMS = ptsager
  1685. X       INCLUDES = -I../util -I../zdbm -I../neb_cld -I../config
  1686. XLOCAL_LIBRARIES = -L../neb_cld -lcloud -L../config -lconfig  -L../zdbm -lzdbm \
  1687. X          -L../util -lutil $(MISSING_LIBS)
  1688. X        PTSLIBS = ../neb_cld/libcloud.a ../config/libconfig.a \
  1689. X          ../zdbm/libzdbm.a ../util/libutil.a
  1690. X   INSTPGMFLAGS = -m 4755 -o $(OWNER)
  1691. X
  1692. X
  1693. X
  1694. XAllTarget($(PROGRAMS))
  1695. X/*ComplexProgramTarget(ptsager)*/
  1696. XNormalProgramTarget(ptsager,$(OBJS),$(PTSLIBS),$(LOCAL_LIBRARIES),/**/)
  1697. XLintTarget()
  1698. X
  1699. X
  1700. XDependTarget()
  1701. XInstallProgram(ptsager,$(BINDIR))
  1702. X
  1703. Xuninstall::
  1704. X    $(RM) $(BINDIR)/$(PROGRAMS)
  1705. X    @echo "uninstall in $(CURRENT_DIR) done"
  1706. X
  1707. END_OF_FILE
  1708. if test 3149 -ne `wc -c <'pts-1.05/ptsager/Imakefile'`; then
  1709.     echo shar: \"'pts-1.05/ptsager/Imakefile'\" unpacked with wrong size!
  1710. fi
  1711. # end of 'pts-1.05/ptsager/Imakefile'
  1712. fi
  1713. if test -f 'pts-1.05/util/str.c' -a "${1}" != "-c" ; then 
  1714.   echo shar: Will not clobber existing file \"'pts-1.05/util/str.c'\"
  1715. else
  1716. echo shar: Extracting \"'pts-1.05/util/str.c'\" \(6359 characters\)
  1717. sed "s/^X//" >'pts-1.05/util/str.c' <<'END_OF_FILE'
  1718. X/*
  1719. X * str.c --   A couple of common string functions.
  1720. X *
  1721. X * Dean Collins 
  1722. X * created: Thu Feb 24 09:19:43 1994
  1723. X * Moved FixStr, StripLeading, & StripTrailing from xpts/util.c
  1724. X */
  1725. X
  1726. X/*
  1727. X * Copyright (c) 1992,1993,1994 Dean Collins.
  1728. X * Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  1729. X * 
  1730. X * Permission to use, copy, modify, and distribute this software and its
  1731. X * documentation free of charge for any purpose is hereby granted without
  1732. X * fee, provided that the above copyright notices appear in all copies and
  1733. X * that both those copyright notices and this permission notice appear in
  1734. X * supporting documentation, and that neither the name of the University of
  1735. X * Idaho nor the name of Dean Collins be used in advertising or publicity
  1736. X * pertaining to distribution of the software without specific, written
  1737. X * prior permission from both parties.  Neither The University of Idaho
  1738. X * nor Dean Collins make any representations about the suitability of
  1739. X * this software for any purpose.  It is provided "as is" without express
  1740. X * or implied warranty.
  1741. X * 
  1742. X * THE UNIVERSITY OF IDAHO AND DEAN COLLINS DISCLAIM ALL WARRANTIES WITH
  1743. X * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
  1744. X * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL THE UNIVERSITY OF IDAHO
  1745. X * OR DEAN COLLINS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
  1746. X * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  1747. X * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  1748. X * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
  1749. X * THIS SOFTWARE.
  1750. X */
  1751. X
  1752. X#include <stdlib.h>             /* General C utilities header file */
  1753. X#include <stdio.h>        /* Standard input/output utilities hdr. file */
  1754. X#include <sys/types.h>          /* Common data types */
  1755. X#include <sys/stat.h>           /* File status utilities */
  1756. X#include <errno.h>              /* Error utilities header file */
  1757. X
  1758. X#include "util.h"
  1759. X
  1760. X
  1761. X
  1762. X/******************** MODULES *************************************/
  1763. X
  1764. X/*
  1765. X______________________________________________________________________
  1766. XFixStr()
  1767. X
  1768. XFUNCTION DESCRIPTION:
  1769. X
  1770. X     This function "fixes" strings so they don't contain new-lines
  1771. Xand strips off leading and trailing white-space.
  1772. X______________________________________________________________________
  1773. XREVISION HISTORY:
  1774. X     Author:  Dean Collins      Date:  2/13/93
  1775. X______________________________________________________________________
  1776. X*/
  1777. X
  1778. X
  1779. Xchar *FixStr(char *str)
  1780. X
  1781. X     /* Interface description:
  1782. X         INPUT:
  1783. X          str    - The string to fix.
  1784. X         OUTPUT:
  1785. X          None.
  1786. X         RETURN VALUE:
  1787. X          char * - The fixed string.  This is static data, and must
  1788. X            be copied to be used.
  1789. X     */
  1790. X
  1791. X{
  1792. X     /* Internal variables: */
  1793. X          /* Major */
  1794. X      /* NONE */
  1795. X          /* Minor */
  1796. X   static char *tmpstr=NULL ;
  1797. X   char *tmpstr2 ;
  1798. X   int i ;
  1799. X
  1800. X
  1801. X   /*------------------- Start of FixStr() routine --------------------*/
  1802. X
  1803. X#ifdef DEBUG
  1804. X   printf("XPTS(util.c): FixStr() str(before)='%s'\n",str) ;
  1805. X#endif
  1806. X
  1807. X   if ( strlen(str) == 0 ) return NULL ; /* Return val. fixed 2/12/94 DC*/
  1808. X
  1809. X   if (tmpstr) free(tmpstr) ;
  1810. X   tmpstr = malloc(strlen(str)+1) ;    /* "+1" added 2/12/94 DC */
  1811. X   strcpy(tmpstr,str) ;
  1812. X
  1813. X   for (i=0; tmpstr[i] != '\0'; ++i)    /* Nuke newlines */
  1814. X      if (tmpstr[i] == '\n')
  1815. X         tmpstr[i] = ' ' ;
  1816. X
  1817. X   tmpstr2 = StripLeading(StripTrailing(tmpstr)) ;
  1818. X
  1819. X#ifdef DEBUG
  1820. X   printf("XPTS(util.c): FixStr() str(after)='%s'\n",tmpstr2) ;
  1821. X#endif
  1822. X
  1823. X   return(tmpstr2) ;
  1824. X
  1825. X}  /*-------- End of FixStr() ---------------------------*/
  1826. X
  1827. X
  1828. X
  1829. X/*
  1830. X______________________________________________________________________
  1831. XStripLeading()
  1832. X
  1833. XFUNCTION DESCRIPTION:
  1834. X
  1835. X     This function removes leading spaces and tabs from a string.
  1836. X______________________________________________________________________
  1837. XREVISION HISTORY:
  1838. X     Author:  Dean Collins      Date:  2/13/93
  1839. X______________________________________________________________________
  1840. X*/
  1841. X
  1842. X
  1843. Xchar *StripLeading(char *str)
  1844. X
  1845. X     /* Interface description:
  1846. X         INPUT:
  1847. X          str    - The string to strip.
  1848. X         OUTPUT:
  1849. X          None.
  1850. X         RETURN VALUE:
  1851. X          char * - The stripped string.
  1852. X     */
  1853. X
  1854. X{
  1855. X     /* Internal variables: */
  1856. X          /* Major */
  1857. X          /* NONE */
  1858. X          /* Minor */
  1859. X   char *c ;
  1860. X   int i ;
  1861. X
  1862. X
  1863. X   /*---------------- Start of StripLeading() routine -----------------*/
  1864. X
  1865. X#ifdef DEBUG
  1866. X   printf("XPTS(util.c): StripLeading() str(before)='%s'\n",str) ;
  1867. X#endif
  1868. X
  1869. X        /* strip leading spaces.  c will point to the first non-space
  1870. X         * and non-tab character in tmpstr.
  1871. X         */
  1872. X   for (c=str,i=0;
  1873. X                (str[i]==' ' || str[i]=='\t') && i<strlen(str) ;
  1874. X                ++c, ++i)
  1875. X        ; /*nothing*/
  1876. X
  1877. X#ifdef DEBUG
  1878. X   printf("XPTS(util.c): StripLeading() str(after)='%s'\n",c) ;
  1879. X#endif
  1880. X
  1881. X   return(c) ;
  1882. X
  1883. X}  /*----------End of StripLeading() --------------------*/
  1884. X
  1885. X
  1886. X/*
  1887. X______________________________________________________________________
  1888. XStripTrailing()
  1889. X
  1890. XFUNCTION DESCRIPTION:
  1891. X
  1892. X     This function removes trailing spaces and tabs from a string.
  1893. X______________________________________________________________________
  1894. XREVISION HISTORY:
  1895. X     Author:  Dean Collins      Date:  2/13/93
  1896. X______________________________________________________________________
  1897. X*/
  1898. X
  1899. X
  1900. Xchar *StripTrailing(char *str)
  1901. X
  1902. X     /* Interface description:
  1903. X         INPUT:
  1904. X          str    - The string to strip. 
  1905. X         OUTPUT:
  1906. X          None.
  1907. X         RETURN VALUE:
  1908. X          char * - The stripped string.  This data is static and must
  1909. X           be copied to be used.
  1910. X     */
  1911. X
  1912. X{
  1913. X     /* Internal variables: */
  1914. X          /* Major */
  1915. X          /* NONE */
  1916. X          /* Minor */
  1917. X   static char *tmpstr=NULL ;
  1918. X   int i ;
  1919. X
  1920. X
  1921. X   /*---------------- Start of StripTrailing() routine -----------------*/
  1922. X
  1923. X   if (tmpstr) free(tmpstr) ;
  1924. X   tmpstr = malloc(strlen(str)+1) ;    /* "+1" added 2/12/94 DC */
  1925. X   strcpy(tmpstr,str) ;
  1926. X
  1927. X#ifdef DEBUG
  1928. X   printf("XPTS(util.c): StripTrailing() str(before)='%s'\n",tmpstr) ;
  1929. X#endif
  1930. X        /* strip trailing spaces and tabs */
  1931. X   for (i=strlen(tmpstr)-1;
  1932. X                i>=0 && (tmpstr[i]==' ' || tmpstr[i]=='\t');
  1933. X                tmpstr[i--]='\0')
  1934. X        ; /*nothing*/
  1935. X
  1936. X#ifdef DEBUG
  1937. X   printf("XPTS(util.c): StripTrailing() str(after)='%s'\n",tmpstr) ;
  1938. X#endif
  1939. X
  1940. X   return(tmpstr) ;
  1941. X
  1942. X}  /*----------End of StripTrailing() --------------------*/
  1943. X
  1944. X/* end of str.c */
  1945. END_OF_FILE
  1946. if test 6359 -ne `wc -c <'pts-1.05/util/str.c'`; then
  1947.     echo shar: \"'pts-1.05/util/str.c'\" unpacked with wrong size!
  1948. fi
  1949. # end of 'pts-1.05/util/str.c'
  1950. fi
  1951. if test -f 'pts-1.05/util/writebuf.c' -a "${1}" != "-c" ; then 
  1952.   echo shar: Will not clobber existing file \"'pts-1.05/util/writebuf.c'\"
  1953. else
  1954. echo shar: Extracting \"'pts-1.05/util/writebuf.c'\" \(4110 characters\)
  1955. sed "s/^X//" >'pts-1.05/util/writebuf.c' <<'END_OF_FILE'
  1956. X/*
  1957. X * writebuf.c --   Write a specified number of bytes to a file.
  1958. X *
  1959. X * Dean Collins 
  1960. X * created: Sat Mar 12 23:32:53 1994
  1961. X */
  1962. X
  1963. X/*
  1964. X * Copyright (c) 1994 Dean Collins.
  1965. X * 
  1966. X * Permission to use, copy, modify, and distribute this software and its
  1967. X * documentation free of charge for any purpose is hereby granted without
  1968. X * fee, provided that the above copyright notices appear in all copies and
  1969. X * that both those copyright notices and this permission notice appear in
  1970. X * supporting documentation, and that the name of
  1971. X * Dean Collins not be used in advertising or publicity
  1972. X * pertaining to distribution of the software without specific, written
  1973. X * prior permission from both parties.  
  1974. X * Dean Collinss make no representations about the suitability of
  1975. X * this software for any purpose.  It is provided "as is" without express
  1976. X * or implied warranty.
  1977. X * 
  1978. X * DEAN COLLINS DISCLAIMS ALL WARRANTIES WITH
  1979. X * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
  1980. X * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL
  1981. X * DEAN COLLINS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
  1982. X * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  1983. X * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  1984. X * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
  1985. X * THIS SOFTWARE.
  1986. X */
  1987. X
  1988. X#include <stdlib.h>             /* General C utilities header file */
  1989. X#include <stdio.h>        /* Standard input/output utilities hdr. file */
  1990. X#include <string.h>        /* String and memory functions header file.*/
  1991. X#include <errno.h>              /* Error utilities header file */
  1992. X#include <sys/stat.h>           /* File status utilities */
  1993. X
  1994. X#ifndef SYSV
  1995. X
  1996. X#include <sys/types.h>          /* Common data types */
  1997. X#include <sys/file.h>        /* Low-level file I/O */
  1998. X#include <limits.h>        /* Common system limits */
  1999. X#ifdef linux
  2000. X#include <unistd.h>        /* Standard Unix definitions */
  2001. X#endif /* linux */
  2002. X/* end not system 5 */
  2003. X
  2004. X#else /* it is system 5 */
  2005. X
  2006. X#include <strings.h>        /* String and memory functions header file.*/
  2007. X#include <unistd.h>        /* Standard Unix definitions */
  2008. X#include <fcntl.h>        /* File control */
  2009. X
  2010. X#endif /* system 5 */
  2011. X
  2012. X/* No non-system includes should be here, other than util.h. */
  2013. X#include "util.h"        /* Misc. low-level utilities */
  2014. X
  2015. X
  2016. X#ifdef DEBUG
  2017. X#define MYDEBUG(a,b,c,d,e) printf(a,b,c,d,e)
  2018. X#else
  2019. X#define MYDEBUG(a,b,c,d,e) 
  2020. X#endif
  2021. X
  2022. X
  2023. X/******************** MODULES *************************************/
  2024. X/*
  2025. X______________________________________________________________________
  2026. XWriteBuf()
  2027. X
  2028. XFUNCTION DESCRIPTION:
  2029. X
  2030. X     This function writes a specified number of bytes to
  2031. Xa file descriptor.
  2032. X______________________________________________________________________
  2033. XREVISION HISTORY:
  2034. X     Author:  Dean Collins      Date: 3/12/94
  2035. X______________________________________________________________________
  2036. X*/
  2037. X
  2038. X
  2039. Xint WriteBuf(int   fd,
  2040. X             char *buf,
  2041. X             int   count)
  2042. X
  2043. X     /* Interface description:
  2044. X         INPUT:
  2045. X          fd     - The output file descriptor.
  2046. X          buf    - The buffer to write.
  2047. X          count  - Number of bytes to write.
  2048. X         OUTPUT:
  2049. X          None.
  2050. X         RETURN VALUE:
  2051. X          int    - Number of bytes successfully written.
  2052. X           If -1 see errno for error info.
  2053. X     */
  2054. X{
  2055. X     /* Internal variables: */
  2056. X          /* Major */
  2057. X          /* NONE */
  2058. X          /* Minor */
  2059. X   int cur=0 ;
  2060. X   int done=0 ;
  2061. X   int n=0 ;
  2062. X
  2063. X     /*----------------- Start of WriteBuf() routine ------------------*/
  2064. X
  2065. X        /* Repeatedly call write() until the buffer is written.  */
  2066. X   MYDEBUG("num bytes to write = %d\n",count,0,0,0) ;
  2067. X   while(cur<count && !done)
  2068. X   {  n = write(fd, buf+cur, count-cur) ;
  2069. X      MYDEBUG("num bytes written = %d (%d total)\n",n,cur+n,0,0) ;
  2070. X      if (n>0)
  2071. X      {
  2072. X     cur += n ;
  2073. X      }
  2074. X      else if (n == -1)
  2075. X      {  MYDEBUG("error %d: %s\n", errno, strerror(errno), 0, 0) ;
  2076. X         done = 1 ;
  2077. X         if (cur==0) cur = -1 ;
  2078. X      }
  2079. X      else done = 1 ;
  2080. X   }
  2081. X
  2082. X   MYDEBUG("WriteBuf returning %d\n", cur, 0, 0, 0) ;
  2083. X   return cur ;
  2084. X
  2085. X}  /*--------------------- End of WriteBuf() ------------------------*/
  2086. X
  2087. X/* End of writebuf.c */
  2088. X
  2089. END_OF_FILE
  2090. if test 4110 -ne `wc -c <'pts-1.05/util/writebuf.c'`; then
  2091.     echo shar: \"'pts-1.05/util/writebuf.c'\" unpacked with wrong size!
  2092. fi
  2093. # end of 'pts-1.05/util/writebuf.c'
  2094. fi
  2095. if test -f 'pts-1.05/xpts/CODE' -a "${1}" != "-c" ; then 
  2096.   echo shar: Will not clobber existing file \"'pts-1.05/xpts/CODE'\"
  2097. else
  2098. echo shar: Extracting \"'pts-1.05/xpts/CODE'\" \(3112 characters\)
  2099. sed "s/^X//" >'pts-1.05/xpts/CODE' <<'END_OF_FILE'
  2100. X----------------------------------------------------------------------
  2101. XSOME NOTES ABOUT THE CODE:
  2102. X
  2103. XVersion 1.03:  (First public release outside of University of Idaho.)
  2104. X
  2105. X    o Minor changes having to do with producing the first "public release."
  2106. X    o Added patchlevel.h.
  2107. X
  2108. X----------------------------------------------------------------------
  2109. X
  2110. XVersion 1.02:
  2111. X
  2112. X    o Added AIX support.
  2113. X    o Minor bug fixes.
  2114. X    o Changed icon bitmap.  (New icon is from Anthony's X Icon Library
  2115. X        v. 1.3.  Thanks Anthony!)
  2116. X    o Added several zdbm enhancements.
  2117. X
  2118. X----------------------------------------------------------------------
  2119. X
  2120. XVersion 1.01:
  2121. X
  2122. X    o AddProblemSelect() now cleans up the data more before
  2123. X        calling AddProblem().  It removes leading and trailing
  2124. X        spaces and tabs from the problem summary and node fields.
  2125. X        It also changes any imbedded new-lines into spaces.
  2126. X        (While the user is not allowed to type a new line into
  2127. X        these fields, they can, unfortunatly, PASTE one in,
  2128. X        which has happened.  Ho, hum.  That's what I get for
  2129. X        taking a shortcut...)
  2130. X
  2131. X    o The header file xpts.h was split into several files
  2132. X        to add more modularity.  
  2133. X
  2134. X    o The ability to use util.c without the rest of xpts was added,
  2135. X        like I always intended.  Just compile it without XPTS
  2136. X        defined.  This is used in ptsager.c.
  2137. X
  2138. X    o Some functions were moved around, from .c file to .c file.
  2139. X        Things were occasionally in an inappropriate module.
  2140. X        In particular, FormatProblem is now in util.c.
  2141. X
  2142. X    o xpts now doesn't allow itself to be executed by root.
  2143. X        Nor does it allow itself to be run as setuid root.
  2144. X        This is for security reasons.
  2145. X
  2146. X    o zdbm provides a shorthand method to read problem records
  2147. X        when the entire record (ie the problem log) is not 
  2148. X        needed.  This optimization is intended to speed
  2149. X        up the "Show All Unsolved" feature.
  2150. X
  2151. X----------------------------------------------------------------------
  2152. X
  2153. XORIGINAL CODE NOTES FROM VERSION 1.00:
  2154. X
  2155. XSome notes about the xpts code:
  2156. X
  2157. XAll calls to neb_cld functions are marked with '/*CLD*/' at the beginning
  2158. Xof the line.  
  2159. X
  2160. XThere are no "real" calls to zdbm functions.  There is one call to print_prob
  2161. Xthat is used only when DEBUG is turned on.  Any calls to zdbm functions
  2162. Xare marked with '/*ZDBM*/' at the beginning of the line.
  2163. X
  2164. XThe whole ptrlist business is rather gross.  I wish I had known a better
  2165. Xway to send a variable number of arguments to callback functions.
  2166. XThe best I could come up with was a pointer to an array of values.
  2167. XI think there is something called a WidgetList, which might have made
  2168. Xthings easier.  As it is, it works, and make sense once you understand
  2169. Xwhat's going on.  Apologies if it doesn't work on your system.
  2170. X
  2171. X"This function will be tested by using a combination of white-box and
  2172. Xblack-box tests."  This is a cop-out.  Sorry.  I practically live in the
  2173. Xcomputer labs as it is.  Rest assured that the functions have been tested,
  2174. Xbut all the testing has not been documented.  I'll try to document this more.
  2175. XBoth black-box and white-box testing were performed.
  2176. X
  2177. X(No bugs, just unexpected features.... :-)
  2178. X
  2179. X----------------------------------------------------------------------
  2180. END_OF_FILE
  2181. if test 3112 -ne `wc -c <'pts-1.05/xpts/CODE'`; then
  2182.     echo shar: \"'pts-1.05/xpts/CODE'\" unpacked with wrong size!
  2183. fi
  2184. # end of 'pts-1.05/xpts/CODE'
  2185. fi
  2186. if test -f 'pts-1.05/xpts/Imakefile' -a "${1}" != "-c" ; then 
  2187.   echo shar: Will not clobber existing file \"'pts-1.05/xpts/Imakefile'\"
  2188. else
  2189. echo shar: Extracting \"'pts-1.05/xpts/Imakefile'\" \(5466 characters\)
  2190. sed "s/^X//" >'pts-1.05/xpts/Imakefile' <<'END_OF_FILE'
  2191. X######################################################################
  2192. X# 
  2193. X# Imakefile -- Imake rules for xpts.
  2194. X# Dean Collins, Tue Jun 16 09:49:26 PDT 1992
  2195. X#
  2196. X# Modified: Dean Collins Thu Mar 10 20:55:54 1994
  2197. X# Moved customization to ../Imake.config, which each Imakefile
  2198. X# will #include.  This eliminates the need to set CC within
  2199. X# each one.
  2200. X#
  2201. X######################################################################
  2202. X#
  2203. X# Copyright (c) 1994 Dean Collins.
  2204. X# Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  2205. X# 
  2206. X# Permission to use, copy, modify, and distribute this software and its
  2207. X# documentation free of charge for any purpose is hereby granted without
  2208. X# fee, provided that the above copyright notice appear in all copies and
  2209. X# that both that copyright notice and this permission notice appear in
  2210. X# supporting documentation, and that the name of the University of Idaho
  2211. X# not be used in advertising or publicity pertaining to distribution of
  2212. X# the software without specific, written prior permission.  The University
  2213. X# of Idaho makes no representations about the suitability of this software
  2214. X# for any purpose.  It is provided "as is" without express or implied warranty.
  2215. X# 
  2216. X# THE UNIVERSITY OF IDAHO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
  2217. X# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  2218. X# IN NO EVENT SHALL THE UNIVERSITY OF IDAHO BE LIABLE FOR ANY SPECIAL,
  2219. X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  2220. X# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  2221. X# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  2222. X# PERFORMANCE OF THIS SOFTWARE.
  2223. X######################################################################
  2224. X
  2225. X######################################################################
  2226. X#  YOU SHOULDN'T NEED TO MODIFY ANYTHING IN THIS FILE.
  2227. X#  All customization is now done in ../Imake.config.
  2228. X######################################################################
  2229. X
  2230. X
  2231. X#include "../Imake.config"
  2232. X
  2233. X
  2234. X#----------------------------------------------------------------------
  2235. X
  2236. X        PTS_TOP = ..
  2237. X           SRCS = xpts.c activate.c popup.c select.c misc.c xutil.c \
  2238. X            signal.c 
  2239. X           OBJS = xpts.o activate.o popup.o select.o misc.o xutil.o \
  2240. X            signal.o
  2241. X           HDRS = activate.h copyright.h defines.h macros.h main.h \
  2242. X            misc.h popup.h resources.h select.h signal.h \
  2243. X            types.h xutil.h xpts.h
  2244. X       PTS_LIBS = -lcloud -lzdbm -lconfig -lutil
  2245. X    PTS_DEPLIBS = $(PTS_TOP)/neb_cld/libcloud.a $(PTS_TOP)/config/libconfig.a \
  2246. X          $(PTS_TOP)/zdbm/libzdbm.a $(PTS_TOP)/util/libutil.a
  2247. X    PTS_LIBDIRS = -L$(PTS_TOP)/neb_cld -L$(PTS_TOP)/zdbm -L$(PTS_TOP)/config \
  2248. X          -L$(PTS_TOP)/util
  2249. XLOCAL_LIBRARIES = $(PTS_LIBDIRS) $(PTS_LIBS) XawClientLibs $(MISSING_LIBS)
  2250. X        DEPLIBS = $(PTS_DEPLIBS) XawClientDepLibs
  2251. X       PROGRAMS = xpts
  2252. X       INCLUDES = -I$(PTS_TOP)/util -I$(PTS_TOP)/zdbm -I$(PTS_TOP)/neb_cld \
  2253. X          -I$(PTS_TOP)/config -I$(PTS_TOP)
  2254. X       LIBFILES = Xpts.ad xpts.help xptssysop.help
  2255. X         TARCMD = tar cvf 
  2256. X        TARFILE = xpts.tar
  2257. X       ALLFILES = $(SRCS) $(PROGRAMS) $(LIBFILES) Imakefile Makefile \
  2258. X          xpts.xbm $(HDRS) doc
  2259. X   INSTAPPFLAGS = -m 0644 -o $(OWNER)
  2260. X   INSTPGMFLAGS = -m 4755 -o $(OWNER)
  2261. X   INSTDATFLAGS = -m 0644 -o $(OWNER)
  2262. X   INSTMANFLAGS = -m 0644 -o $(OWNER)
  2263. X   XPTS_MAN_SRC = ../doc/Manual/xpts.man
  2264. X
  2265. X
  2266. XAllTarget(xpts)
  2267. XNormalProgramTarget(xpts,$(OBJS),$(PTSLIBS),$(LOCAL_LIBRARIES),/**/)
  2268. XLintTarget()
  2269. XDependTarget()
  2270. XInstallProgram(xpts,$(BINDIR))
  2271. X
  2272. Xinstall.man::
  2273. X
  2274. X
  2275. XInstallNonExec(xpts.help,$(LIBDIR))
  2276. XInstallNonExec(xptssysop.help,$(LIBDIR))
  2277. XInstallNonExec(xpts.xbm,$(INCROOT)/X11/bitmaps)
  2278. XInstallAppDefaults(Xpts)
  2279. X
  2280. X
  2281. X
  2282. X#Strip out all the underlining, bolding, etc.  From a formatted manpage
  2283. X#and use to create the help page.
  2284. X#
  2285. X#Could also do this by setting your TERM to "unknown" or "dumb" and
  2286. X#leaving out the sed filter.  That would probably be better, since
  2287. X#this assumes some things about your terminal type.
  2288. Xxpts.help: $(XPTS_MAN_SRC)
  2289. X    nroff -man $(XPTS_MAN_SRC) |sed -e '1,$$s/.\'`echo '\b'`'//g' -e '1,$$s/'`echo '\015'`'.//g' >xpts.help
  2290. X#    groff -Tascii -man $(XPTS_MAN_SRC) |sed -e '1,$$s/.\'`echo '\b'`'//g' -e '1,$$s/'`echo '\015'`'.//g' >xpts.help
  2291. X#    (TERM=unknown; nroff -man $(XPTS_MAN_SRC) >xpts.help)
  2292. X
  2293. X#Since xpts_sysop.help is being replaced by xptssysop.help in this
  2294. X#version (so the name is 14 or less characters long), ensure that
  2295. X#the old version is is removed.
  2296. Xinstall::
  2297. X    $(RM) $(LIBDIR)/xpts_sysop.help
  2298. X
  2299. Xuninstall::
  2300. X    $(RM) $(LIBDIR)/xpts.help $(LIBDIR)/xptssysop.help \
  2301. X        $(INCROOT)/X11/bitmaps/xpts.xbm \
  2302. X        $(XAPPLOADDIR)/Xpts $(BINDIR)/xpts
  2303. X    @echo "uninstall in $(CURRENT_DIR) done"
  2304. X
  2305. X
  2306. X# Create an app-defaults file from the resources.h file.  This should
  2307. X# not be needed by anyone other than the software development team.
  2308. X# Xpts should be shipped with an Xpts.ad file that corresponds to the
  2309. X# resources.h file.  Do your customizations in Xpts.ad (or, really,
  2310. X# /usr/lib/X11/app-defaults/Xpts) and you'll never need this.
  2311. X# If you DO change resources.h (don't!) this may or may not work.  
  2312. X# It's a fairly gross hack.
  2313. XXpts.ad: resources.h
  2314. X    sed     -e '1,$$s/[\/][\*]/!#/g' \
  2315. X        -e '1,$$s/^"//' \
  2316. X        -e '1,$$s/",//g' \
  2317. X        -e '1,$$s/ \* /!# /g' \
  2318. X        -e '1,$$s/ \*[    ]/!#    /g' \
  2319. X        -e '1,$$s/ \*$$/!# /g' \
  2320. X        -e '1,$$s/[     ]*[*][/]$$//g' \
  2321. X        -e '1,$$s/resources[.]h/Xpts.ad/g' resources.h | \
  2322. X    grep -v 'fallback_resources\[\]' | \
  2323. X    grep -v '^NULL' | \
  2324. X    grep -v '^} ;' | \
  2325. X    grep -v '!#$$' > Xpts.ad
  2326. END_OF_FILE
  2327. if test 5466 -ne `wc -c <'pts-1.05/xpts/Imakefile'`; then
  2328.     echo shar: \"'pts-1.05/xpts/Imakefile'\" unpacked with wrong size!
  2329. fi
  2330. # end of 'pts-1.05/xpts/Imakefile'
  2331. fi
  2332. if test -f 'pts-1.05/xpts/popup.h' -a "${1}" != "-c" ; then 
  2333.   echo shar: Will not clobber existing file \"'pts-1.05/xpts/popup.h'\"
  2334. else
  2335. echo shar: Extracting \"'pts-1.05/xpts/popup.h'\" \(3282 characters\)
  2336. sed "s/^X//" >'pts-1.05/xpts/popup.h' <<'END_OF_FILE'
  2337. X/*
  2338. X * popup.h -- Function prototypes for popup.c.
  2339. X * Dean Collins -- Mon Feb  8 21:17:40 PST 1993
  2340. X */
  2341. X
  2342. X/*
  2343. X * Copyright (c) 1992,1993 Dean Collins.
  2344. X * Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  2345. X * 
  2346. X * Permission to use, copy, modify, and distribute this software and its
  2347. X * documentation free of charge for any purpose is hereby granted without
  2348. X * fee, provided that the above copyright notices appear in all copies and
  2349. X * that both those copyright notices and this permission notice appear in
  2350. X * supporting documentation, and that neither the name of the University of
  2351. X * Idaho nor the name of Dean Collins be used in advertising or publicity
  2352. X * pertaining to distribution of the software without specific, written
  2353. X * prior permission from both parties.  Neither The University of Idaho
  2354. X * nor Dean Collins make any representations about the suitability of
  2355. X * this software for any purpose.  It is provided "as is" without express
  2356. X * or implied warranty.
  2357. X * 
  2358. X * THE UNIVERSITY OF IDAHO AND DEAN COLLINS DISCLAIM ALL WARRANTIES WITH
  2359. X * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
  2360. X * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL THE UNIVERSITY OF IDAHO
  2361. X * OR DEAN COLLINS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
  2362. X * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  2363. X * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  2364. X * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
  2365. X * THIS SOFTWARE.
  2366. X */
  2367. X
  2368. X
  2369. Xvoid ButtonPopup(String name, Widget *popupp, Widget parent, Widget *buttonp) ;
  2370. Xvoid    DestroyPopup(Widget w, XtPointer client_data, XtPointer call_data) ;
  2371. Xvoid    EditMOTDPopup(Widget w, Widget parent) ;
  2372. Xvoid    ErrorPopup(String name, Widget parent, String message) ;
  2373. Xvoid    HelpPopup(Widget w, XtPointer client_data, XtPointer call_data) ;
  2374. Xvoid    InfoPopup(Widget w, XtPointer client_data, XtPointer call_data) ;
  2375. Xvoid    ListPopup(String  name,
  2376. X          int     columns,
  2377. X              Widget *popupp,
  2378. X          Widget  parent,
  2379. X          Widget *listp,
  2380. X              Widget *buttonBoxp,
  2381. X          Widget *quitButtonp) ;
  2382. Xvoid    PickProblemPopup(Widget w, Widget parent) ;
  2383. Xvoid    ProblemEntryPopup(Widget w, XtPointer client_data, XtPointer call_data);
  2384. Xvoid    ProblemViewerPopup(String       name,
  2385. X                       Widget      *probViewerp,
  2386. X                       Widget       parent,
  2387. X                       Widget      *dialog1p,
  2388. X                       Widget      *dialog2p,
  2389. X                       Widget      *dialog3p,
  2390. X                       Widget      *textp,
  2391. X                       Widget      *editp) ;
  2392. Xvoid    ShowAllUnsolvedPopup(Widget w, Widget parent) ;
  2393. Xvoid    StringEntryPopup(String     name,
  2394. X                     Widget    *popupp,
  2395. X                     Widget     parent,
  2396. X                     String     prompt,
  2397. X                     XtPointer  successFunc) ;
  2398. Xvoid    SysopMenuPopup(Widget w, Widget parent) ;
  2399. Xvoid    ViewTextPopup(String     name,
  2400. X                  Widget    *popupp,
  2401. X                  Widget     parent,
  2402. X                  Widget    *textp,
  2403. X                  Widget    *buttonBoxp,
  2404. X                  Widget    *quitButtonp) ;
  2405. Xvoid    WarningPopup(String     name,
  2406. X                 Widget     parent,
  2407. X                 String     message,
  2408. X                 XtPointer  ok_func,
  2409. X                 XtPointer  ok_client_data) ;
  2410. X
  2411. X/* end of popup.h */
  2412. END_OF_FILE
  2413. if test 3282 -ne `wc -c <'pts-1.05/xpts/popup.h'`; then
  2414.     echo shar: \"'pts-1.05/xpts/popup.h'\" unpacked with wrong size!
  2415. fi
  2416. # end of 'pts-1.05/xpts/popup.h'
  2417. fi
  2418. if test -f 'pts-1.05/xpts/select.h' -a "${1}" != "-c" ; then 
  2419.   echo shar: Will not clobber existing file \"'pts-1.05/xpts/select.h'\"
  2420. else
  2421. echo shar: Extracting \"'pts-1.05/xpts/select.h'\" \(3150 characters\)
  2422. sed "s/^X//" >'pts-1.05/xpts/select.h' <<'END_OF_FILE'
  2423. X/*
  2424. X * select.h -- Function prototypes for select.c.
  2425. X * Dean Collins -- Mon Feb  8 21:17:40 PST 1993
  2426. X */
  2427. X
  2428. X/*
  2429. X * Copyright (c) 1992,1993 Dean Collins.
  2430. X * Copyright (c) 1992 University of Idaho, Moscow, Idaho.
  2431. X * 
  2432. X * Permission to use, copy, modify, and distribute this software and its
  2433. X * documentation free of charge for any purpose is hereby granted without
  2434. X * fee, provided that the above copyright notices appear in all copies and
  2435. X * that both those copyright notices and this permission notice appear in
  2436. X * supporting documentation, and that neither the name of the University of
  2437. X * Idaho nor the name of Dean Collins be used in advertising or publicity
  2438. X * pertaining to distribution of the software without specific, written
  2439. X * prior permission from both parties.  Neither The University of Idaho
  2440. X * nor Dean Collins make any representations about the suitability of
  2441. X * this software for any purpose.  It is provided "as is" without express
  2442. X * or implied warranty.
  2443. X * 
  2444. X * THE UNIVERSITY OF IDAHO AND DEAN COLLINS DISCLAIM ALL WARRANTIES WITH
  2445. X * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
  2446. X * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL THE UNIVERSITY OF IDAHO
  2447. X * OR DEAN COLLINS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
  2448. X * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  2449. X * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  2450. X * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
  2451. X * THIS SOFTWARE.
  2452. X */
  2453. X
  2454. X
  2455. X
  2456. Xvoid AddProblemSelect   (Widget w, XtPointer client_data, XtPointer call_data) ;
  2457. Xvoid CancelReopenSelect (Widget w, XtPointer client_data, XtPointer call_data) ;
  2458. Xvoid CancelSaveSelect   (Widget w, XtPointer client_data, XtPointer call_data) ;
  2459. Xvoid DeleteProblemSelect(Widget w, XtPointer client_data, XtPointer call_data) ;
  2460. Xvoid EditProblemSelect  (Widget w, XtPointer client_data, XtPointer call_data) ;
  2461. Xvoid MoveProblemSelect  (Widget w, XtPointer client_data, XtPointer call_data) ;
  2462. Xvoid PreviousMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) ;
  2463. Xvoid PrintProblemSelect (Widget w, XtPointer client_data, XtPointer call_data) ;
  2464. Xvoid QuitMainMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) ;
  2465. Xvoid ReopenAcceptSelect (Widget w, XtPointer client_data, XtPointer call_data) ;
  2466. Xvoid ReopenDenyCancelSelect(Widget w, XtPointer client_data, XtPointer call_data) ;
  2467. Xvoid ReopenDenyMailSelect(Widget w, XtPointer client_data, XtPointer call_data);
  2468. Xvoid ReopenDenySelect   (Widget w, XtPointer client_data, XtPointer call_data) ;
  2469. Xvoid ReopenRequestSelect(Widget w, XtPointer client_data, XtPointer call_data) ;
  2470. Xvoid ReopenSelect       (Widget w, XtPointer client_data, XtPointer call_data) ;
  2471. Xvoid ReportAgainSelect  (Widget w, XtPointer client_data, XtPointer call_data) ;
  2472. Xvoid SaveMOTDButtonSelect(Widget w, XtPointer client_data, XtPointer call_data);
  2473. Xvoid SaveProblemSelect  (Widget w, XtPointer client_data, XtPointer call_data) ;
  2474. Xvoid SleepButtonSelect  (Widget w, XtPointer client_data, XtPointer call_data) ;
  2475. Xvoid SolveProblemSelect (Widget w, XtPointer client_data, XtPointer call_data) ;
  2476. X
  2477. X/* end of select.h */
  2478. END_OF_FILE
  2479. if test 3150 -ne `wc -c <'pts-1.05/xpts/select.h'`; then
  2480.     echo shar: \"'pts-1.05/xpts/select.h'\" unpacked with wrong size!
  2481. fi
  2482. # end of 'pts-1.05/xpts/select.h'
  2483. fi
  2484. echo shar: End of archive 3 \(of 16\).
  2485. cp /dev/null ark3isdone
  2486. MISSING=""
  2487. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
  2488.     if test ! -f ark${I}isdone ; then
  2489.     MISSING="${MISSING} ${I}"
  2490.     fi
  2491. done
  2492. if test "${MISSING}" = "" ; then
  2493.     echo You have unpacked all 16 archives.
  2494.     echo "\nNow execute the command 'touch pts-1.05/xpts/xpts.help' and \nread the INSTALL document.\n"
  2495.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2496. else
  2497.     echo You still need to unpack the following archives:
  2498.     echo "        " ${MISSING}
  2499. fi
  2500. ##  End of shell archive.
  2501. exit 0
  2502.