home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume33 / problem / part02 < prev    next >
Encoding:
Text File  |  1992-10-18  |  49.2 KB  |  1,311 lines

  1. Newsgroups: comp.sources.misc
  2. From: lijewski@rosserv.gsfc.nasa.gov (Mike Lijewski)
  3. Subject:  v33i004:  problem - A Problem Database Manager, Part02/07
  4. Message-ID: <1992Oct19.165819.4059@sparky.imd.sterling.com>
  5. X-Md4-Signature: 8f22d173927c8049309c5173f559ef62
  6. Date: Mon, 19 Oct 1992 16:58:19 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: lijewski@rosserv.gsfc.nasa.gov (Mike Lijewski)
  10. Posting-number: Volume 33, Issue 4
  11. Archive-name: problem/part02
  12. Environment: UNIX, GDBM, C++, termcap
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then unpack
  16. # it by saving it into a file and typing "sh file".  To overwrite existing
  17. # files, type "sh file -c".  You can also feed this as standard input via
  18. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  19. # will see the following message at the end:
  20. #        "End of archive 2 (of 7)."
  21. # Contents:  Makefile README THANKS gdbm.h-proto problem.1 problem.lpr
  22. # Wrapped by lijewski@xtesoc2 on Mon Oct 19 11:04:58 1992
  23. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  24. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  25.   echo shar: Will not clobber existing file \"'Makefile'\"
  26. else
  27. echo shar: Extracting \"'Makefile'\" \(5781 characters\)
  28. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  29. X#
  30. X# Makefile for `problem'
  31. X#
  32. X# Makefile Makefile 1.32   Delta'd: 15:10:07 10/9/92   Mike Lijewski, CNSF
  33. X#
  34. X
  35. X# Your C++ compiler goes here.
  36. XCC = g++
  37. X
  38. X#
  39. X# Add -DSIGINTERRUPT if you both have it and NEED it to ensure that signals
  40. X# interrupt slow system calls.  This is primarily for 4.3 BSD-based systems.
  41. X# Otherwise, your system most certaily does the right thing already.
  42. X#
  43. X# Add -DOLDDELETE if your compiler can't handle the 'delete []' form
  44. X# of the delete operator for deleting arrays of objects allocated
  45. X# via new.  If you don't know whether you compiler can handle it or
  46. X# not, just don't define it and see what happens.  If your compiler
  47. X# doesn't choke, it'll do the right thing.
  48. X#
  49. X# You must indicate where the GDBM header file 'gdbm.h' is to be found
  50. X# using a flag of the form: -I/usr/local/include.
  51. X#
  52. X# If you have the BSD 4.3 signal mechanism, in particular, sigblock(2) and
  53. X# sigsetmask(2), add -DBSDSIGNALS.  Else if you have POSIX signals, in
  54. X# particular sigprocmask(2), add -DPOSIXSIGNALS.  Otherwise I'll use
  55. X# the usually ANSI C signal mechanism when I need to block SIGTSTP and
  56. X# SIGWINCH.  This can lead to some lost signals in very rare
  57. X# circumstances, but what can you do with a braindead signal mechanism.
  58. X#
  59. X# The default locking is done using the POSIX "lockf".  If you don't
  60. X# have "lockf" but have the BSD "flock", add -DFLOCK.
  61. X#
  62. X# If you're running on ESIX, add -DESIX
  63. X#
  64. XCFLAGS = -I/home/xtelab/lijewski/include -DBSDSIGNALS -DSIGINTERRUPT -g
  65. X
  66. X#
  67. X# Those flags needed to compile in the type of terminal
  68. X# control you have.  Use -DTERMIOS if you have <termios.h>, the POSIX
  69. X# terminal control.  Use -DTERMIO if you have <termio.h>, the SYSV
  70. X# terminal control.  Otherwise, the default assumes you have <sgtty.h>,
  71. X# the BSD terminal control.
  72. X#
  73. X# If you choose to use -DTERMIOS and have problems, try -DTERMIO.  On
  74. X# at least two systems I've tried, the vendor hasn't had all the
  75. X# include files set up correctly to include <unistd.h> together with 
  76. X# <osfcn.h>, among others.
  77. X#
  78. X# On RS/6000s, AIX/370 and recent Suns, -DTERMIO works well.
  79. X#
  80. XTERMFLAGS = -DTERMIO
  81. X
  82. X#
  83. X# You must indicate where the GDBM library 'libgdbm.a' is to be found
  84. X# using a flag of the form: -L/usr/local/lib.
  85. X#
  86. X# On ESIX you might also need -lgen and -lbsd
  87. X#
  88. XLDFLAGS = -L/home/xtelab/lijewski/lib
  89. X
  90. X#
  91. X# The needed libraries.  You need Termcap(3) and GDBM
  92. X#
  93. XLIBS = -lgdbm -ltermcap
  94. X
  95. X#
  96. X# Directory is which the databases, AREA file (this is the file, with
  97. X# one area per line, listing the valid problem areas), SEQUENCE file
  98. X# (this is the file used to keep the unique problem #), and
  99. X# MAILLIST.* files (which contains the names of interested parties)
  100. X# will be stored.
  101. X#
  102. XHOMEBASE = /home/xtelab/lijewski/src/c++/problem
  103. X
  104. X# MAILPROG a version of mail
  105. XMAILPROG = /usr/ucb/mail
  106. X
  107. X# MAXFILESIZE is the largest size file you'll allow for logs, appends
  108. X# and closes.  If the file is larger than that only the first
  109. X# MAXFILESIZE bytes are stored in the database.
  110. XMAXFILESIZE = 16000
  111. X
  112. X##############################################################################
  113. X# nothing should need to be changed below here.
  114. X##############################################################################
  115. X
  116. XSHELL     = /bin/sh
  117. XMAKESHELL = /bin/sh
  118. X
  119. XHDR   = classes.h display.h help.h lister.h keys.h problem.h regexp.h \
  120. X        version.h utilities.h
  121. XMISC1 = AREAS.template ChangeLog INSTALL MANIFEST
  122. XMISC2 = Makefile README THANKS gdbm.h-proto problem.1 problem.lpr
  123. XMISC  = $(MISC1) $(MISC2)
  124. XOBJ   = classes.o display.o lister.o problem.o regexp.o utilities.o
  125. XSRC   = classes.C display.C lister.C problem1.C problem2.C regexp.C utilities.C
  126. X
  127. Xproblem: $(OBJ) SEQUENCE AREAS
  128. X    $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
  129. X
  130. Xdisplay.o: display.C display.h
  131. X    $(CC) $(CFLAGS) $(TERMFLAGS) -c display.C
  132. X
  133. Xproblem.o: problem.C
  134. X    $(CC) -c $(CFLAGS) -DHOMEBASE=\"$(HOMEBASE)\"                 \
  135. X              -DMAILPROG=\"$(MAILPROG)\" -DMAXFILESIZE=$(MAXFILESIZE) \
  136. X              problem.C
  137. X
  138. X#
  139. X# problem.C is built from .C and command2.C the first time
  140. X# it is needed.  This is so that the shar files don't get too big.
  141. X#
  142. Xproblem.C: problem1.C problem2.C
  143. X    cat problem1.C problem2.C > problem.C
  144. X
  145. XSEQUENCE:
  146. X    @if [ ! -f "$(HOMEBASE)/SEQUENCE" ]; then           \
  147. X            echo "making $(HOMEBASE)/SEQUENCE ...";         \
  148. X            echo "problems will be numbered starting at 1"; \
  149. X            echo -n "0" > $(HOMEBASE)/SEQUENCE;             \
  150. X        chmod 644 $(HOMEBASE)/SEQUENCE;                 \
  151. X        else                                                \
  152. X            true;                                           \
  153. X        fi
  154. X
  155. XAREAS:
  156. X    @if [ ! -f "$(HOMEBASE)/AREAS" ]; then                   \
  157. X            echo "Creating $(HOMEBASE)/AREAS ...";               \
  158. X            cp AREAS.template $(HOMEBASE)/AREAS;                 \
  159. X            chmod 644 $(HOMEBASE)/AREAS;                         \
  160. X        fi
  161. X
  162. Xclean:
  163. X    -rm -f core *.o *..c problem
  164. X
  165. Xrealclean:
  166. X    -rm -f core *.o *..c problem *~ problem.C
  167. X
  168. X#
  169. X# This depends on Rich Salz' cshar program.
  170. X#
  171. Xshar: $(SRC) $(HDR) $(MISC)
  172. X    cshar -n1 -e7 -o problem-01 $(HDR) $(MISC1)
  173. X    cshar -n2 -e7 -o problem-02 $(MISC2)
  174. X    cshar -n3 -e7 -o problem-03 display.C regexp.C
  175. X    cshar -n4 -e7 -o problem-04 classes.C lister.C
  176. X    cshar -n5 -e7 -o problem-05 problem1.C
  177. X    cshar -n6 -e7 -o problem-06 problem2.C
  178. X    cshar -n7 -e7 -o problem-07 utilities.C
  179. X
  180. Xtar:
  181. X    tar cf problem.tar $(SRC) $(HDR) $(MISC)
  182. X    compress -f problem.tar
  183. X
  184. Xclasses.o   : classes.h problem.h utilities.h
  185. Xdisplay.o   : display.h utilities.h
  186. Xlister.o    : classes.h display.h help.h keys.h lister.h \
  187. X              problem.h utilities.h version.h
  188. Xproblem.o   : classes.h display.h lister.h problem.h utilities.h
  189. Xutilities.o : classes.h display.h lister.h problem.h utilities.h
  190. X
  191. X.SUFFIXES: .C .o
  192. X
  193. X.C.o:
  194. X    $(CC) $(CFLAGS) -c $*.C
  195. END_OF_FILE
  196. if test 5781 -ne `wc -c <'Makefile'`; then
  197.     echo shar: \"'Makefile'\" unpacked with wrong size!
  198. fi
  199. # end of 'Makefile'
  200. fi
  201. if test -f 'README' -a "${1}" != "-c" ; then 
  202.   echo shar: Will not clobber existing file \"'README'\"
  203. else
  204. echo shar: Extracting \"'README'\" \(8921 characters\)
  205. sed "s/^X//" >'README' <<'END_OF_FILE'
  206. X
  207. XProblem - A "problem" database manager
  208. X
  209. XProblem is a database manager for bug reports and such, meant to be
  210. Xused in a UNIX environment.  It is written in C++; uses the GNU
  211. XDatabase Management Library (GDBM) for low-level database operations;
  212. Xand the termcap(3) library for screen comtrol.  An X Windows interface
  213. Xis being developed.  The basic idea is to provide a central front-end
  214. Xfor managing the various databases of bugs and miscreant behaviour
  215. Xthat a large UNIX site might be interested in tracking, and
  216. Xfacilitating the sharing of this information amongst all interested
  217. Xparties.
  218. X
  219. XOn startup, a list of problem areas is displayed:
  220. X
  221. XThe 4 Areas:
  222. X
  223. X  1 apf
  224. X  2 aix370
  225. X  3 aixws
  226. X  4 dbx
  227. X
  228. XThis is called the area window.  Upon entering a number corresponding
  229. Xto the area of interest, the following screen is displayed:
  230. X
  231. XCommands
  232. X
  233. X  l  -- log new problem
  234. X  a  -- append to a problem
  235. X  c  -- close a problem
  236. X  e  -- examine a problem
  237. X  v  -- view problem summaries
  238. X  s  -- subscribe to this problem area
  239. X  u  -- unsubscribe from this problem area
  240. X  k  -- keyword search over problem headers
  241. X  K  -- keyword search over problem headers and data
  242. X  M  -- modify keyword field
  243. X  d  -- delete a problem from the database
  244. X  r  -- reorganize the database
  245. X  R  -- reopen a closed problem
  246. X  q  -- quit
  247. X
  248. XHere you are expected to type a single letter symbolizing the
  249. Xcommand of interest.
  250. X
  251. X  l  -- log new problem
  252. X
  253. XChoosing `l', you'll immediately see a screen of the form:
  254. X
  255. XArea      networking
  256. XLogger    mjlx
  257. XReporter
  258. XLogged    Mon Jun 29 08:56:27 1992
  259. XUpdated   Mon Jun 29 08:56:27 1992
  260. XKeywords
  261. XSummary
  262. XStatus    open
  263. XSite
  264. XSeverity
  265. XProblem #
  266. X
  267. XThis is known as the problem header.  Here, Reporter is the user name
  268. Xor real name of the person who reported the problem;  this needn't be
  269. Xthe same as Logger.  Severity, which runs from 4 (the lowest) to 1
  270. X(the highest) is meant to be some indication of the severity of the
  271. Xproblem.  The remaining fields have their obvious meaning.
  272. X
  273. XIn the above, "problem" has filled in the fields that it can and will
  274. Xprompt for the others.  It will fill in the Problem # field, if and
  275. Xwhen the problem is really logged, with a positive number unique
  276. Xacross all problem areas.  There is no limit to the amount of text
  277. Xthat can be stored in each field.  After filling out this header,
  278. X"problem" will invoke the editor in the user's EDITOR environment
  279. Xvariable (or "vi" if not defined), from which the user is expected to
  280. Xenter the text of the problem.  When you exit from your editor, you'll
  281. Xbe prompted as to whether or not you really want to log the problem.
  282. XTyping `y' logs the problem while typing `n' takes you back to the
  283. Xcommand window.
  284. X
  285. X  a  -- append to a problem
  286. X
  287. XHere you'll be prompted for the problem # of an existing problem.  If
  288. Xa problem of that number actually exists, you'll immediately be
  289. Xbrought up into your editor to enter the text of your append.  When you
  290. Xexit from your editor, you'll be prompted as to whether or not you
  291. Xreally wish to make this append.
  292. X
  293. X  c  -- close a problem
  294. X
  295. XHere you'll be prompted for the problem # of an existing problem.  If
  296. Xa problem of that number actually exists, you'll immediately be
  297. Xbrought up into your editor to enter the text of your close.  Closing
  298. Xa problem changes the Status field of the problem entry from "open" to
  299. X"closed"; it is not removed from the database.  It is meant to be an
  300. Xindication that the problem has been solved.  Only the original logger
  301. Xof the problem, or the "problem" administrator can close a problem.
  302. X
  303. X  e  -- examine a problem
  304. X
  305. XYou will be prompted for the problem # of an existing problem.  If
  306. Xthat problem exists you'll be placed into the pager "less" with a copy
  307. Xof the complete problem header and data of that problem.  This way you
  308. Xcan then page through the problem and do any thing else you might do
  309. Xfrom a pager such as saving a copy of the problem or only a portion of
  310. Xit to another file.
  311. X
  312. X  v  -- view problem summaries
  313. X
  314. XTyping `v' a list consisting of selected parts of each problem header
  315. Xis displayed on the screen, one per line:
  316. X
  317. X77 open 1 Jun 28 16:37:09 1992 calloc prototyped wrong
  318. X73 open 2 Jun 26 06:16:03 1992 Fortran code gets seg fault
  319. X18 closed May 30 12:51:34 1992 <stdarg.h> is broken
  320. X53 open 3 May  6 13:45:23 1992 optimization slows down c!
  321. X16 open 3 Apr 26 09:54:49 1992 why don't we have a Pascal compiler?
  322. X
  323. XThis is called a view window.  The fields displayed are: Problem #,
  324. XStatus, Severity, if Status is "open", Updated and Summary.  The lines
  325. Xare sorted: "open" before "closed"; severity order 1 to 4; and then in
  326. Xmost recently updated to least recently updated order.  It the text of
  327. Xa line is longer than the screen width the line is truncated and a `!'
  328. Xis place in the final position in the line.  The cursor is initially
  329. Xplaced in the first column of the first line.  The problem list can be
  330. Xperused using the screen and cursor motion commands of vi and emacs.
  331. X
  332. XThe line the cursor is on is called the current line.  If the current
  333. Xline is longer than the screen width it will be shifted left so that
  334. Xthe final screenwidth characters are visible.  In this way, by moving
  335. Xthe cursor on and off of a line, it is possible to read the complete
  336. Xline, provided that the length of the line is not more than twice the
  337. Xwidth of your screen.  Most of the commands in the command window are
  338. Xaccessible from here and apply to the problem in the current line.
  339. XFor example, typing `a' will append to the problem in the current
  340. Xline.
  341. X
  342. XTyping `H' or `?' from any of the three main windows in "problem" will
  343. Xdisplay a screen of help commands called the help screen.  The help
  344. Xscreen from within the view window is:
  345. X
  346. X CURSOR MOVEMENT COMMANDS:
  347. X
  348. X    ?  H               Display this help.
  349. X    q                  quit.
  350. X    j  n  ^N  SPC  CR  Forward  one line.
  351. X    DOWN_ARROW_KEY             "        .
  352. X    k  p  ^P  ^Y       Backward one line.
  353. X    UP_ARROW_KEY               "        .
  354. X    ^F  ^V             Forward  one window.
  355. X    b  ^B  ESC-V       Backward one window.
  356. X    ^D                 Forward  one half-window.
  357. X    ^U                 Backward one half-window.
  358. X    <                  Go to first line of listing.
  359. X    >                  Go to last line of listing.
  360. X
  361. X COMMANDS WHICH OPERATE ON THE CURRENT PROBLEM:
  362. X
  363. X    a                  Append to current problem.
  364. X    c                  Close current problem.
  365. X    d                  Delete current problem.
  366. X    e m v              Examine, View, or "more" current problem.
  367. X    m                  Modify keyword field.
  368. X    r                  Reorganize the database.
  369. X    R                  Reopen a closed problem.
  370. X    s                  Save problem listing to a file - prompts for filename.
  371. X
  372. X MISCELLANEOUS COMMANDS:
  373. X
  374. X    !                  starts up a shell.
  375. X    ! cmd              executes a shell command - prompts for command.
  376. X    !!                 reexecutes previous shell command.
  377. X    ^L                 Repaint screen.
  378. X    CR                 Signifies end-of-response when in a prompt.
  379. X    V                  Print out version string.
  380. X
  381. X  s  -- subscribe to this problem area
  382. X
  383. XYou will be added to a list of interested parties for this area.  Each
  384. Xtime a change is made to the database for this area, every person on
  385. Xthe mailing list receives mail indicating the change that was made.
  386. XIn this way, it is easy to keep track of problems without having to
  387. Xregular read all the problems to see if anything new has happened.
  388. X
  389. X  u  -- unsubscribe from this problem area
  390. X
  391. XYou will be removed from the interested parties mailing list for this
  392. Xarea.
  393. X
  394. X  k  -- keyword search over problem headers
  395. X
  396. XYou will be prompted for a regular expression which will then be used
  397. Xto search over the problem headers.  If there are any matches, the
  398. Xsummary lines of each of the problems which matched will be displayed
  399. Xin a view window.  For example, if you wished to peruse only open
  400. Xproblems, you could search for "open" whereupon you would be put in a
  401. Xview window consisting of only the open problems in this area.
  402. X
  403. X  K  -- keyword search over problem headers and data
  404. X
  405. XThis is similar the the `k' command except that the regular expression
  406. Xsearch is over the complete problem header and data for each problem.
  407. X
  408. X  M  -- modify keyword field
  409. X
  410. XThis command is useful if you want to modify the keyword field.
  411. X
  412. X  d  -- delete a problem from the database
  413. X
  414. XThis command allows the database administrator to delete problems from
  415. Xthe database for this area.  The problem data is irretrievably removed
  416. Xfrom the database.
  417. X
  418. X  r  -- reorganize the database
  419. X
  420. XThis is an administrative command which can be used after many appends and
  421. Xdeletions have been made in the database to shrink it down and make
  422. Xaccessing it more efficient.  It corresponds directly to the GDBM
  423. Xreorganize command.
  424. X
  425. X  R  -- reopen a closed problem
  426. X
  427. XA closed problem can be reopened with this command.
  428. X
  429. X  q  -- quit
  430. X
  431. XThis quits from the command window and returns you to the area window.
  432. END_OF_FILE
  433. if test 8921 -ne `wc -c <'README'`; then
  434.     echo shar: \"'README'\" unpacked with wrong size!
  435. fi
  436. # end of 'README'
  437. fi
  438. if test -f 'THANKS' -a "${1}" != "-c" ; then 
  439.   echo shar: Will not clobber existing file \"'THANKS'\"
  440. else
  441. echo shar: Extracting \"'THANKS'\" \(429 characters\)
  442. sed "s/^X//" >'THANKS' <<'END_OF_FILE'
  443. XI would like to thank the following people who have tracked down and
  444. Xfixed bugs; suggested improvements; provided new function; or
  445. Xotherwise helped make "problem" truly useful.
  446. X
  447. Xrdr@newton.mda.ca (Randolph Roesler)
  448. Xrob@pact.nl (Rob Kurver)
  449. Xterry@ocfmail.ocf.llnl.gov (Terril Heidelberg)
  450. Xiain%anl433.uucp@Germany.EU.net (Iain Lea)
  451. Xgunterma@iti.informatik.th-darmstadt.de (Klaus Guntermann)
  452. XGilles.Goullet@mc2.fr (Gilles Goullet)
  453. X
  454. END_OF_FILE
  455. if test 429 -ne `wc -c <'THANKS'`; then
  456.     echo shar: \"'THANKS'\" unpacked with wrong size!
  457. fi
  458. # end of 'THANKS'
  459. fi
  460. if test -f 'gdbm.h-proto' -a "${1}" != "-c" ; then 
  461.   echo shar: Will not clobber existing file \"'gdbm.h-proto'\"
  462. else
  463. echo shar: Extracting \"'gdbm.h-proto'\" \(3227 characters\)
  464. sed "s/^X//" >'gdbm.h-proto' <<'END_OF_FILE'
  465. X/* gdbm.h  -  The include file for dbm users.  */
  466. X
  467. X/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
  468. X    Copyright (C) 1990, 1991  Free Software Foundation, Inc.
  469. X
  470. X    GDBM is free software; you can redistribute it and/or modify
  471. X    it under the terms of the GNU General Public License as published by
  472. X    the Free Software Foundation; either version 1, or (at your option)
  473. X    any later version.
  474. X
  475. X    GDBM is distributed in the hope that it will be useful,
  476. X    but WITHOUT ANY WARRANTY; without even the implied warranty of
  477. X    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  478. X    GNU General Public License for more details.
  479. X
  480. X    You should have received a copy of the GNU General Public License
  481. X    along with GDBM; see the file COPYING.  If not, write to
  482. X    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  483. X
  484. X    You may contact the author by:
  485. X       e-mail:  phil@cs.wwu.edu
  486. X      us-mail:  Philip A. Nelson
  487. X                Computer Science Department
  488. X                Western Washington University
  489. X                Bellingham, WA 98226
  490. X        phone:  (206) 676-3035
  491. X       
  492. X*************************************************************************/
  493. X
  494. X#ifndef __GDBM_H
  495. X#define __GDBM_H
  496. X
  497. X/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who
  498. X   can create the database. */
  499. X#define  GDBM_READER  0        /* A reader. */
  500. X#define  GDBM_WRITER  1        /* A writer. */
  501. X#define  GDBM_WRCREAT 2        /* A writer.  Create the db if needed. */
  502. X#define  GDBM_NEWDB   3        /* A writer.  Always create a new db. */
  503. X
  504. X/* Parameters to gdbm_store for simple insertion or replacement in the
  505. X   case that the key is already in the database. */
  506. X#define  GDBM_INSERT  0        /* Never replace old data with new. */
  507. X#define  GDBM_REPLACE 1        /* Always replace old data with new. */
  508. X
  509. X
  510. X/* The data and key structure.  This structure is defined for compatibility. */
  511. Xtypedef struct {
  512. X    char *dptr;
  513. X    int   dsize;
  514. X} datum;
  515. X
  516. X/* The file information header. This is good enough for most applications. */
  517. Xtypedef struct {int dummy[10];} *GDBM_FILE;
  518. X
  519. X#if __STDC__ == 1 || __cplusplus
  520. X#define proto(x)  x
  521. X#else
  522. X#define proto(x) ()
  523. X#endif
  524. X
  525. X/* These are the routines! */
  526. Xextern GDBM_FILE gdbm_open proto((const char *, int, int, int, void (*)()));
  527. Xextern void     gdbm_close proto((GDBM_FILE));
  528. Xextern datum     gdbm_fetch proto((GDBM_FILE, datum));
  529. Xextern int     gdbm_store proto((GDBM_FILE, datum, datum, int));
  530. Xextern int     gdbm_delete proto((GDBM_FILE, datum));
  531. Xextern datum     gdbm_firstkey proto((GDBM_FILE));
  532. Xextern datum     gdbm_nextkey proto((GDBM_FILE, datum));
  533. Xextern int     gdbm_reorganize proto((GDBM_FILE));
  534. X
  535. X#undef proto
  536. X
  537. X/* gdbm sends back the following error codes in the variable gdbm_errno. */
  538. Xtypedef enum {    GDBM_NO_ERROR,
  539. X        GDBM_MALLOC_ERROR,
  540. X        GDBM_BLOCK_SIZE_ERROR,
  541. X        GDBM_FILE_OPEN_ERROR,
  542. X        GDBM_FILE_WRITE_ERROR,
  543. X        GDBM_FILE_SEEK_ERROR,
  544. X        GDBM_FILE_READ_ERROR,
  545. X        GDBM_BAD_MAGIC_NUMBER,
  546. X        GDBM_EMPTY_DATABASE,
  547. X        GDBM_CANT_BE_READER,
  548. X            GDBM_CANT_BE_WRITER,
  549. X        GDBM_READER_CANT_DELETE,
  550. X        GDBM_READER_CANT_STORE,
  551. X        GDBM_READER_CANT_REORGANIZE,
  552. X        GDBM_UNKNOWN_UPDATE,
  553. X        GDBM_ITEM_NOT_FOUND,
  554. X        GDBM_REORGANIZE_FAILED,
  555. X        GDBM_CANNOT_REPLACE,
  556. X        GDBM_ILLEGAL_DATA}
  557. X    gdbm_error;
  558. X
  559. X#endif /*__GDBM_H*/
  560. END_OF_FILE
  561. if test 3227 -ne `wc -c <'gdbm.h-proto'`; then
  562.     echo shar: \"'gdbm.h-proto'\" unpacked with wrong size!
  563. fi
  564. # end of 'gdbm.h-proto'
  565. fi
  566. if test -f 'problem.1' -a "${1}" != "-c" ; then 
  567.   echo shar: Will not clobber existing file \"'problem.1'\"
  568. else
  569. echo shar: Extracting \"'problem.1'\" \(12443 characters\)
  570. sed "s/^X//" >'problem.1' <<'END_OF_FILE'
  571. X.\"
  572. X.\" problem.1 1.5   Delta'd: 15:19:43 10/11/92   Mike Lijewski, CNSF 
  573. X.\"
  574. X.TH PROBLEM 1
  575. X.SH NAME
  576. Xproblem \- a problem database manager
  577. X.SH SYNOPSIS
  578. X.B "problem [-v] [-d] [area1 area2 ...]"
  579. X.br
  580. X.SH DESCRIPTION
  581. X.I Problem
  582. Xis a database manager for problems and bug reports.  It is inspired
  583. Xfrom PROBLEM, the problem database manager under IBM VM/CMS that was
  584. Xwritten by Andy 
  585. XHanushevsky at Cornell University.  It is intended to provide a
  586. Xcommon interface to a collection of databases describing problems and/or
  587. Xbugs which a UNIX site might be interested in tracking, and to
  588. Xfacilitate the sharing of this information amongst all interested
  589. Xparties.
  590. X
  591. X.SH COMMANDS
  592. XIn the following descriptions, ^X means control-X.
  593. XESC stands for the ESCAPE key; for example ESC-v means the
  594. Xtwo character sequence "ESCAPE", then "v".  TAB stands for the tab
  595. Xkey. UP_ARROW stands for the up arrow key and DOWN_ARROW stands for
  596. Xthe down arrow key, if your keyboard supports arrow keys.
  597. X
  598. XTyping
  599. X.I problem,
  600. Xa list of problem areas, called the area window, is displayed.  This
  601. Xlist is set up by the
  602. X.I problem
  603. Xadministrator at your site.  It consists of the areas into which
  604. Xproblems and bug reports can be logged. A sample area window:
  605. X.nf
  606. X
  607. X  1 apf        - for AIX Parallel Fortran problems under AIX/370
  608. X  2 aix370     - general AIX/370 problems
  609. X  3 aixws      - any workstation related problem
  610. X  4 dbx        - any dbx-related problem
  611. X  5 AFS or NFS - any AFS or NFS related problem
  612. X
  613. X.fi
  614. XThe areas are numbered from 1
  615. Xto N, where N is the total number of areas defined at your site.  If N
  616. Xis less than ten, you simply need to press the key corresponding to
  617. Xthat number to
  618. Xindicate your interest in that area.  Otherwise, you must type in the
  619. Xnumber followed by a carriage return.  If there are more areas than
  620. Xlines on your screen,
  621. X.I problem
  622. Xwill display as many as will fit on the screen by forcing the areas to
  623. Xfit in a series of twenty-five character wide columns.  If they still
  624. Xdon't all fit on the screen, typing `H' or `?' will scroll through all
  625. Xthe areas.
  626. X
  627. XOnce you've selected an area, a list of available commands, called
  628. Xthe command window, is displayed:
  629. X.nf
  630. X
  631. X  l  -- log new problem
  632. X  a  -- append to a problem
  633. X  c  -- close a problem
  634. X  e  -- examine a problem
  635. X  v  -- view problem summaries
  636. X  s  -- subscribe to this problem area
  637. X  u  -- unsubscribe from this problem area
  638. X  k  -- keyword search over problem headers
  639. X  K  -- keyword search over problem headers and data
  640. X  m  -- modify keyword field
  641. X  d  -- delete a problem from the database
  642. X  r  -- reorganize the database
  643. X  R  -- reopen a closed problem
  644. X  q  -- quit
  645. X
  646. X.fi
  647. X
  648. XHere you are expected to type a single letter symbolizing the
  649. Xcommand of interest.  Typing `H' or `?' will scroll through the list
  650. Xof available commands.
  651. X
  652. X.IP  "l  -- log new problem"
  653. X
  654. XTyping `l', you'll immediately see a screen of the form:
  655. X.nf
  656. X
  657. XArea      networking
  658. XLogger    mjlx
  659. XReporter
  660. XLogged    Mon Jun 29 08:56:27 1992
  661. XUpdated   Mon Jun 29 08:56:27 1992
  662. XKeywords
  663. XSummary
  664. XStatus    open
  665. XSite
  666. XSeverity
  667. XProblem #
  668. X
  669. X.fi
  670. XThis is known as the problem header.  Here,
  671. X.I Reporter
  672. Xis intended to represent the user name
  673. Xor real name of the person who reported the problem, which needn't be
  674. Xthe same as
  675. X.I Logger.
  676. XOf course you can fill in any of the fields as you see fit.  
  677. X.I Severity
  678. X, which runs from 4 (the lowest) to 1
  679. X(the highest) is meant to be some indication of the severity of the
  680. Xproblem.  The remaining fields have their more or less obvious meaning.
  681. X
  682. XIn the above problem header,
  683. X.I problem
  684. Xhas filled in the fields that it can and will
  685. Xprompt for the others.  It will fill in the
  686. X.I "Problem #"
  687. Xfield, if and
  688. Xwhen the problem is really logged, with a positive number unique
  689. Xacross all problem areas.  There is no limit to the amount of text
  690. Xthat can be stored in each field.
  691. XAfter filling out this header,
  692. X.I problem
  693. Xwill invoke the editor in your EDITOR environment
  694. Xvariable (or "vi" if not defined), from which you are expected to
  695. Xenter the text of the problem.  When you exit from your editor, you'll
  696. Xbe prompted as to whether or not you really want to log the problem.
  697. XTyping `y' logs the problem and returns you to the command window,
  698. Xwhile typing `n' simply takes you back to the command window.
  699. X
  700. X.IP  "a  -- append to a problem
  701. X
  702. XHere you'll be prompted for the problem # of an existing problem.  If
  703. Xa problem of that number actually exists, you'll immediately be
  704. Xbrought up into your editor to enter the text of your append.  When you
  705. Xexit from your editor, you'll be prompted as to whether or not you
  706. Xreally wish to make this append.  The
  707. X.I Updated
  708. Xfield of the problem header will be updated to reflect the time of
  709. Xthe append.
  710. X
  711. X.IP  "c  -- close a problem"
  712. X
  713. XHere you'll be prompted for the problem # of an existing problem.  If
  714. Xa problem of that number actually exists, you'll immediately be
  715. Xbrought up into your editor to enter the text of your close.  Closing
  716. Xa problem changes the
  717. X.I Status
  718. Xfield of the problem entry from "open" to
  719. X"closed"; it is not removed from the database.  It is meant to be an
  720. Xindication that the problem has been solved.  Only the original logger
  721. Xof the problem, or the
  722. X.I problem
  723. Xadministrator can close a problem.
  724. XThe
  725. X.I Updated
  726. Xfield of the problem header will be updated to reflect the time of
  727. Xthe close.
  728. X
  729. X.IP  "e  -- examine a problem"
  730. X
  731. XYou will be prompted for the problem # of an existing problem.  If
  732. Xthat problem exists you'll be placed into the pager "less" with a copy
  733. Xof the complete problem header and data of that problem.  This way you
  734. Xcan then page through the problem and do any thing else you might do
  735. Xfrom a pager such as saving a copy of the problem or only a portion of
  736. Xit to another file.
  737. X
  738. X.IP  "v  -- view problem summaries"
  739. X
  740. XHere a list consisting of selected parts of each problem header
  741. Xis displayed on the screen, one per line, called the view window.
  742. XThe fields displayed are:
  743. X.I Problem #,
  744. X.I Status,
  745. X.I Severity (if the problem is open),
  746. X.I Updated,
  747. Xand
  748. X.I Summary.
  749. XThe lines are sorted: "open" before "closed"; severity 1 to severity
  750. X4; and then in most
  751. Xrecently updated to least recently updated order.  It the text of a
  752. Xline is longer than the screen width the line is truncated and a `!'
  753. Xis place in the final position in the line.  The cursor is initially
  754. Xplaced in the first column of the first line.
  755. X
  756. XThe line the cursor is on is called the current line.  
  757. XThe cursor can be positioned using the cursor motion and scrolling
  758. Xcommands of vi and emacs.  If the current
  759. Xline is longer than the screen width it will be shifted left so that
  760. Xthe final screenwidth characters are visible.  In this way, by moving
  761. Xthe cursor on and off of a line, it is possible to read the complete
  762. Xline, provided that the length of the line is not more than twice the
  763. Xwidth of your screen.  Most of the commands in the command window are
  764. Xaccessible from within the view window and apply to the problem in the
  765. Xcurrent line. 
  766. XFor example, typing `a' will append to the problem in the current
  767. Xline.
  768. X
  769. XTyping `H' or `?' will scroll through a list of all the valid
  770. Xkeypresses from within the view window:
  771. X
  772. X.nf
  773. X CURSOR MOVEMENT COMMANDS:
  774. X
  775. X    ?  H               Display this help.
  776. X    q                  quit.
  777. X    j  n  ^N  SPC  CR  Forward  one line.
  778. X    DOWN_ARROW_KEY             "        .
  779. X    k  p  ^P  ^Y       Backward one line.
  780. X    UP_ARROW_KEY               "        .
  781. X    ^F  ^V             Forward  one window.
  782. X    b  ^B  ESC-V       Backward one window.
  783. X    ^D                 Forward  one half-window.
  784. X    ^U                 Backward one half-window.
  785. X    <                  Go to first line of listing.
  786. X    >                  Go to last line of listing.
  787. X
  788. X COMMANDS WHICH OPERATE ON THE CURRENT PROBLEM:
  789. X
  790. X    a                  Append to current problem.
  791. X    c                  Close current problem.
  792. X    d                  Delete current problem.
  793. X    e m v              Examine, View, or "more" current problem.
  794. X    M                  Modify keyword field.
  795. X    r                  Reorganize the database.
  796. X    R                  Reopen a closed problem.
  797. X    S                  Save problem listing to a file
  798. X
  799. X MISCELLANEOUS COMMANDS:
  800. X
  801. X    !                  starts up a shell.
  802. X    ! cmd              executes a shell command
  803. X    !!                 reexecutes previous shell command.
  804. X    ^L                 Repaint screen.
  805. X    CR                 End-of-response when in a prompt.
  806. X    V                  Print out version string.
  807. X.fi
  808. X
  809. X.IP  "s  -- subscribe to this problem area"
  810. X
  811. XYou will be added to a list of interested parties for this area.  Each
  812. Xtime a change is made to the database for this area, every person on
  813. Xthe mailing list receives mail indicating the change that was made.
  814. XIn this way, it is easy to keep track of problems without having to
  815. Xregularly read all the areas to see if anything new has happened.
  816. X
  817. X.IP  "u  -- unsubscribe from this problem area"
  818. X
  819. XYou will be removed from the interested parties mailing list for this
  820. Xarea.
  821. X
  822. X.IP  "k  -- keyword search over problem headers"
  823. X
  824. XYou will be prompted for a regular expression which will then be used
  825. Xto search over the problem headers.  If there are any matches, the
  826. Xsummary lines of each of the problems which matched will be displayed
  827. Xin a view window.  For example, if you wished to peruse only open
  828. Xproblems, you could search for "open" whereupon you would be put in a
  829. Xview window consisting of only the open problems in the area.
  830. X
  831. X.IP  "K  -- keyword search over problem headers and data"
  832. X
  833. XThis is similar the the `k' command except that the regular expression
  834. Xsearch is over the complete problem header and data for each problem.
  835. X
  836. X.IP  "M  -- modify keyword field"
  837. X
  838. XThis command is useful if you want to modify the keyword field.  At
  839. Xthe authors site, being an IBM stronghold, we place the number of each APAR
  840. X(Authorized Problem Analysis Report) which supposedly fixes a problem,
  841. Xin the keyword field.  This cannot be done when the problem is logged
  842. Xsince the APAR number(s) aren't known at that time.
  843. X
  844. X.IP  "d  -- delete a problem from the database"
  845. X
  846. XThis command allows the database administrator to delete problems from
  847. Xthe database for this area.  The problem data is irretrievably removed
  848. Xfrom the database.
  849. X
  850. X.IP  "r  -- reorganize the database"
  851. X
  852. XThis is an administrative command which can be used after many appends and
  853. Xdeletions have been made in the database to shrink it down and make
  854. Xaccessing it more efficient.  It directly corresponds to the GDBM
  855. Xreorganize command.
  856. X
  857. X.IP  "R  -- reopen a closed problem"
  858. X
  859. XA closed problem can be reopened with this command.  The
  860. X.I Status
  861. Xfield is changed from "closed" back to "open".
  862. X
  863. X.IP  "q  -- quit"
  864. X
  865. XThis quits from the command window and returns you to the area window.
  866. X
  867. X.SH OPTIONS
  868. XCommand line options are described below.
  869. X.PP
  870. X.IP "-d dirname"
  871. XInstructs
  872. X.I problem
  873. Xto use the next argument as the name of the directory in which all the
  874. Xproblem databases and mailing list files are stored.  The author uses
  875. Xit primarily as a debugging tool.  However, it allows different groups
  876. Xat a single site to set up their own databases, instead of forcing
  877. Xa single person to centrally administer all the problem areas
  878. Xat the site.
  879. X.IP "-v       "
  880. XPrints out the version string and exits.
  881. X
  882. X.I Problem
  883. Xcan also be invoked with one or more problem areas as arguments.  It
  884. Xwill then immediately startup in the command window for that area.
  885. XTyping `q' will then move on to the next problem area, or the area
  886. Xwindow if no more areas have been specified.  If any of the arguments
  887. Xare not valid problem areas, you will also be placed in the area
  888. Xwindow when
  889. X.I problem
  890. Xtries to process that area.
  891. X
  892. X.SH "ENVIRONMENT VARIABLES"
  893. X.IP COLUMNS
  894. XThis value, if nonzero, overrides the number of columns as read
  895. Xfrom termcap(3).  Hence by setting
  896. X.B COLUMNS
  897. Xit is easy to use a
  898. Xdifferent number of columns than termcap(3) expects for a given
  899. Xterminal type.
  900. X.IP "EDITOR  "
  901. XThe name of the editor (used by the `e' and `f' commands).
  902. X.IP "HOME   "
  903. XThe user's home directory.
  904. X.IP "LINES   "
  905. XThis value, if nonzero, overrides the number of lines as read
  906. Xfrom termcap(3).  Hence by setting
  907. X.B LINES
  908. Xit is easy to use a
  909. Xdifferent number of lines than termcap(3) expects for a given
  910. Xterminal type.
  911. X.IP "SHELL   "
  912. XThe shell used to execute the `!' command, as well as to expand filenames.
  913. X.IP "TERM   "
  914. XThe type of terminal on which
  915. X.I problem
  916. Xis being run.
  917. X
  918. X.br
  919. X.SH AUTHORS
  920. XWritten by Mike Lijewski while at the Cornell National Supercomputer
  921. XFacility.
  922. END_OF_FILE
  923. if test 12443 -ne `wc -c <'problem.1'`; then
  924.     echo shar: \"'problem.1'\" unpacked with wrong size!
  925. fi
  926. # end of 'problem.1'
  927. fi
  928. if test -f 'problem.lpr' -a "${1}" != "-c" ; then 
  929.   echo shar: Will not clobber existing file \"'problem.lpr'\"
  930. else
  931. echo shar: Extracting \"'problem.lpr'\" \(14748 characters\)
  932. sed "s/^X//" >'problem.lpr' <<'END_OF_FILE'
  933. X
  934. XPROBLEM(1)               USER COMMANDS                 PROBLEM(1)
  935. X
  936. XNAME
  937. X     problem - a problem database manager
  938. X
  939. XSYNOPSIS
  940. X     problem [-v] [-d] [area1 area2 ...]
  941. X
  942. XDESCRIPTION
  943. X     Problem is a database manager for problems and bug  reports.
  944. X     It  is  inspired  from PROBLEM, the problem database manager
  945. X     under IBM VM/CMS that was written  by  Andy  Hanushevsky  at
  946. X     Cornell  University.   It  is  intended  to provide a common
  947. X     interface to a collection of databases  describing  problems
  948. X     and/or  bugs which a UNIX site might be interested in track-
  949. X     ing, and to  facilitate  the  sharing  of  this  information
  950. X     amongst all interested parties.
  951. X
  952. X
  953. XCOMMANDS
  954. X     In the following  descriptions,  ^X  means  control-X.   ESC
  955. X     stands  for  the ESCAPE key; for example ESC-v means the two
  956. X     character sequence "ESCAPE", then "v".  TAB stands  for  the
  957. X     tab key. UP_ARROW stands for the up arrow key and DOWN_ARROW
  958. X     stands for the down arrow key,  if  your  keyboard  supports
  959. X     arrow keys.
  960. X
  961. X     Typing problem, a list of problem  areas,  called  the  area
  962. X     window,  is  displayed.   This list is set up by the problem
  963. X     administrator at your site.  It consists of the  areas  into
  964. X     which  problems and bug reports can be logged. A sample area
  965. X     window:
  966. X
  967. X       1 apf        - for AIX Parallel Fortran problems under AIX/370
  968. X       2 aix370     - general AIX/370 problems
  969. X       3 aixws      - any workstation related problem
  970. X       4 dbx        - any dbx-related problem
  971. X       5 AFS or NFS - any AFS or NFS related problem
  972. X
  973. X     The areas are numbered from 1 to N, where  N  is  the  total
  974. X     number  of  areas  defined  at your site.  If N is less than
  975. X     ten, you simply need to press the key corresponding to  that
  976. X     number  to  indicate your interest in that area.  Otherwise,
  977. X     you must type in the number followed by a  carriage  return.
  978. X     If  there  are more areas than lines on your screen, problem
  979. X     will display as many as will fit on the  screen  by  forcing
  980. X     the  areas  to fit in a series of twenty-five character wide
  981. X     columns.  If they still don't all fit on the screen,  typing
  982. X     `H' or `?' will scroll through all the areas.
  983. X
  984. X     Once you've selected an area, a list of available  commands,
  985. X     called the command window, is displayed:
  986. X
  987. X       l  -- log new problem
  988. X       a  -- append to a problem
  989. X       c  -- close a problem
  990. X       e  -- examine a problem
  991. X       v  -- view problem summaries
  992. X       s  -- subscribe to this problem area
  993. X       u  -- unsubscribe from this problem area
  994. X       k  -- keyword search over problem headers
  995. X       K  -- keyword search over problem headers and data
  996. X       M  -- modify keyword field
  997. X       d  -- delete a problem from the database
  998. X       r  -- reorganize the database
  999. X       R  -- reopen a closed problem
  1000. X       q  -- quit
  1001. X
  1002. X
  1003. X     Here you are expected to type a  single  letter  symbolizing
  1004. X     the  command  of  interest.   Typing  `H' or `?' will scroll
  1005. X     through the list of available commands.
  1006. X
  1007. X
  1008. X     l  -- log new problem
  1009. X
  1010. X          Typing `l', you'll immediately  see  a  screen  of  the
  1011. X          form:
  1012. X
  1013. X          Area      networking
  1014. X          Logger    mjlx
  1015. X          Reporter
  1016. X          Logged    Mon Jun 29 08:56:27 1992
  1017. X          Updated   Mon Jun 29 08:56:27 1992
  1018. X          Keywords
  1019. X          Summary
  1020. X          Status    open
  1021. X          Site
  1022. X          Severity
  1023. X          Problem #
  1024. X
  1025. X          This is known as the problem header.  Here, Reporter is
  1026. X          intended to represent the user name or real name of the
  1027. X          person who reported the problem, which needn't  be  the
  1028. X          same  as  Logger.  Of course you can fill in any of the
  1029. X          fields as you see fit. Severity ,  which  runs  from  4
  1030. X          (the  lowest)  to  1  (the highest) is meant to be some
  1031. X          indication of the severity of the problem.  The remain-
  1032. X          ing fields have their more or less obvious meaning.
  1033. X
  1034. X          In the above problem header, problem has filled in  the
  1035. X          fields  that it can and will prompt for the others.  It
  1036. X          will fill in the Problem # field, if and when the prob-
  1037. X          lem  is  really  logged,  with a positive number unique
  1038. X          across all problem areas.  There is  no  limit  to  the
  1039. X          amount of text that can be stored in each field.  After
  1040. X          filling out this header, problem will invoke the editor
  1041. X          in  your  EDITOR  environment  variable (or "vi" if not
  1042. X          defined), from which you are expected to enter the text
  1043. X          of the problem.  When you exit from your editor, you'll
  1044. X          be prompted as to whether or not you really want to log
  1045. X          the  problem.   Typing `y' logs the problem and returns
  1046. X          you to the command  window,  while  typing  `n'  simply
  1047. X          takes you back to the command window.
  1048. X
  1049. X
  1050. X     a  -- append to a problem
  1051. X
  1052. X          Here you'll be prompted for the problem # of an  exist-
  1053. X          ing  problem.   If  a  problem  of that number actually
  1054. X          exists, you'll immediately be brought up into your edi-
  1055. X          tor  to  enter  the text of your append.  When you exit
  1056. X          from your editor, you'll be prompted as to  whether  or
  1057. X          not  you  really wish to make this append.  The Updated
  1058. X          field of the problem header will be updated to  reflect
  1059. X          the time of the append.
  1060. X
  1061. X
  1062. X     c  -- close a problem
  1063. X
  1064. X          Here you'll be prompted for the problem # of an  exist-
  1065. X          ing  problem.   If  a  problem  of that number actually
  1066. X          exists, you'll immediately be brought up into your edi-
  1067. X          tor to enter the text of your close.  Closing a problem
  1068. X          changes the Status field  of  the  problem  entry  from
  1069. X          "open"  to  "closed";  it is not removed from the data-
  1070. X          base.  It is meant to be an indication that the problem
  1071. X          has been solved.  Only the original logger of the prob-
  1072. X          lem, or the problem administrator can close a  problem.
  1073. X          The Updated field of the problem header will be updated
  1074. X          to reflect the time of the close.
  1075. X
  1076. X
  1077. X     e  -- examine a problem
  1078. X
  1079. X          You will be prompted for the problem # of  an  existing
  1080. X          problem.   If that problem exists you'll be placed into
  1081. X          the pager "less" with a copy of  the  complete  problem
  1082. X          header and data of that problem.  This way you can then
  1083. X          page through the problem and  do  any  thing  else  you
  1084. X          might  do  from  a  pager  such as saving a copy of the
  1085. X          problem or only a portion of it to another file.
  1086. X
  1087. X
  1088. X     v  -- view problem summaries
  1089. X
  1090. X          Here a list consisting of selected parts of each  prob-
  1091. X          lem  header  is  displayed on the screen, one per line,
  1092. X          called the view  window.   The  fields  displayed  are:
  1093. X          Problem  #,  Status, Severity (if the problem is open),
  1094. X          Updated, and Summary.  The  lines  are  sorted:  "open"
  1095. X          before  "closed"; severity 1 to severity 4; and then in
  1096. X          most recently updated to least recently updated  order.
  1097. X          It  the  text of a line is longer than the screen width
  1098. X          the line is truncated and a `!' is place in  the  final
  1099. X          position  in  the line.  The cursor is initially placed
  1100. X          in the first column of the first line.
  1101. X
  1102. X          The line the cursor is on is called the  current  line.
  1103. X          The  cursor  can  be positioned using the cursor motion
  1104. X          and scrolling commands of vi and emacs.  If the current
  1105. X          line is longer than the screen width it will be shifted
  1106. X          left so that the final screenwidth characters are visi-
  1107. X          ble.  In this way, by moving the cursor on and off of a
  1108. X          line, it is possible to read the  complete  line,  pro-
  1109. X          vided  that  the  length  of  the line is not more than
  1110. X          twice the width of your screen.  Most of  the  commands
  1111. X          in  the  command  window are accessible from within the
  1112. X          view window and apply to the  problem  in  the  current
  1113. X          line.  For example, typing `a' will append to the prob-
  1114. X          lem in the current line.
  1115. X
  1116. X          Typing `H' or `?' will scroll through a list of all the
  1117. X          valid keypresses from within the view window:
  1118. X
  1119. X           CURSOR MOVEMENT COMMANDS:
  1120. X
  1121. X              ?  H               Display this help.
  1122. X              q                  quit.
  1123. X              j  n  ^N  SPC  CR  Forward  one line.
  1124. X              DOWN_ARROW_KEY             "        .
  1125. X              k  p  ^P  ^Y       Backward one line.
  1126. X              UP_ARROW_KEY               "        .
  1127. X              ^F  ^V             Forward  one window.
  1128. X              b  ^B  ESC-V       Backward one window.
  1129. X              ^D                 Forward  one half-window.
  1130. X              ^U                 Backward one half-window.
  1131. X              <                  Go to first line of listing.
  1132. X              >                  Go to last line of listing.
  1133. X
  1134. X           COMMANDS WHICH OPERATE ON THE CURRENT PROBLEM:
  1135. X
  1136. X              a                  Append to current problem.
  1137. X              c                  Close current problem.
  1138. X              d                  Delete current problem.
  1139. X              e m v              Examine, View, or "more" current problem.
  1140. X              M                  Modify keyword field.
  1141. X              r                  Reorganize the database.
  1142. X              R                  Reopen a closed problem.
  1143. X              S                  Save problem listing to a file
  1144. X
  1145. X           MISCELLANEOUS COMMANDS:
  1146. X
  1147. X              !                  starts up a shell.
  1148. X              ! cmd              executes a shell command
  1149. X              !!                 reexecutes previous shell command.
  1150. X              ^L                 Repaint screen.
  1151. X              CR                 End-of-response when in a prompt.
  1152. X              V                  Print out version string.
  1153. X
  1154. X
  1155. X     s  -- subscribe to this problem area
  1156. X
  1157. X          You will be added to a list of interested  parties  for
  1158. X          this  area.  Each time a change is made to the database
  1159. X          for  this  area,  every  person  on  the  mailing  list
  1160. X          receives  mail indicating the change that was made.  In
  1161. X          this way, it is easy to keep track of problems  without
  1162. X          having  to  regularly read all the areas to see if any-
  1163. X          thing new has happened.
  1164. X
  1165. X
  1166. X     u  -- unsubscribe from this problem area
  1167. X
  1168. X          You will be removed from the interested parties mailing
  1169. X          list for this area.
  1170. X
  1171. X
  1172. X     k  -- keyword search over problem headers
  1173. X
  1174. X          You will be prompted for  a  regular  expression  which
  1175. X          will  then  be used to search over the problem headers.
  1176. X          If there are any matches, the summary lines of each  of
  1177. X          the  problems which matched will be displayed in a view
  1178. X          window.  For example, if you wished to peruse only open
  1179. X          problems,  you  could  search  for "open" whereupon you
  1180. X          would be put in a view window consisting  of  only  the
  1181. X          open problems in the area.
  1182. X
  1183. X
  1184. X     K  -- keyword search over problem headers and data
  1185. X
  1186. X          This is similar the the `k'  command  except  that  the
  1187. X          regular  expression search is over the complete problem
  1188. X          header and data for each problem.
  1189. X
  1190. X
  1191. X     M  -- modify keyword field
  1192. X
  1193. X          This command is useful if you want to modify  the  key-
  1194. X          word  field.  At the authors site, being an IBM strong-
  1195. X          hold, we place the  number  of  each  APAR  (Authorized
  1196. X          Problem  Analysis  Report)  which  supposedly  fixes  a
  1197. X          problem, in the keyword field.   This  cannot  be  done
  1198. X          when  the  problem  is  logged since the APAR number(s)
  1199. X          aren't known at that time.
  1200. X
  1201. X
  1202. X     d  -- delete a problem from the database
  1203. X
  1204. X          This  command  allows  the  database  administrator  to
  1205. X          delete  problems  from the database for this area.  The
  1206. X          problem data is irretrievably removed  from  the  data-
  1207. X          base.
  1208. X
  1209. X
  1210. X     r  -- reorganize the database
  1211. X
  1212. X          This is an administrative command  which  can  be  used
  1213. X          after  many appends and deletions have been made in the
  1214. X          database to shrink it down and make accessing  it  more
  1215. X          efficient.   It  directly corresponds to the GDBM reor-
  1216. X          ganize command.
  1217. X
  1218. X
  1219. X     R  -- reopen a closed problem
  1220. X
  1221. X          A closed problem can be  reopened  with  this  command.
  1222. X          The  Status  field  is  changed  from  "closed" back to
  1223. X          "open".
  1224. X
  1225. X
  1226. X     q  -- quit
  1227. X
  1228. X          This quits from the command window and returns  you  to
  1229. X          the area window.
  1230. X
  1231. X
  1232. XOPTIONS
  1233. X     Command line options are described below.
  1234. X
  1235. X     -d dirname
  1236. X          Instructs problem to use the next argument as the  name
  1237. X          of the directory in which all the problem databases and
  1238. X          mailing list files are stored.  The author uses it pri-
  1239. X          marily  as  a  debugging tool.  However, it allows dif-
  1240. X          ferent groups at a single site  to  set  up  their  own
  1241. X          databases,  instead  of forcing a single person to cen-
  1242. X          trally administer all the problem areas at the site.
  1243. X
  1244. X     -v   Prints out the version string and exits.
  1245. X
  1246. X          Problem can also be invoked with one  or  more  problem
  1247. X          areas  as  arguments.  It will then immediately startup
  1248. X          in the command window for that area.  Typing  `q'  will
  1249. X          then move on to the next problem area, or the area win-
  1250. X          dow if no more areas have been specified.   If  any  of
  1251. X          the  arguments  are  not  valid problem areas, you will
  1252. X          also be placed in the area window when problem tries to
  1253. X          process that area.
  1254. X
  1255. X
  1256. XENVIRONMENT VARIABLES
  1257. X     COLUMNS
  1258. X          This value, if nonzero, overrides the number of columns
  1259. X          as  read  from termcap(3).  Hence by setting COLUMNS it
  1260. X          is easy to use  a  different  number  of  columns  than
  1261. X          termcap(3) expects for a given terminal type.
  1262. X
  1263. X     EDITOR
  1264. X          The name of the editor (used by the `e'  and  `f'  com-
  1265. X          mands).
  1266. X
  1267. X     HOME The user's home directory.
  1268. X
  1269. X     LINES
  1270. X          This value, if nonzero, overrides the number  of  lines
  1271. X          as  read from termcap(3).  Hence by setting LINES it is
  1272. X          easy to use a different number of lines than termcap(3)
  1273. X          expects for a given terminal type.
  1274. X
  1275. X     SHELL
  1276. X          The shell used to execute the `!' command, as  well  as
  1277. X          to expand filenames.
  1278. X
  1279. X     TERM The type of terminal on which problem is being run.
  1280. X
  1281. X
  1282. XAUTHORS
  1283. X     Written by Mike  Lijewski  while  at  the  Cornell  National
  1284. X     Supercomputer Facility.
  1285. X
  1286. END_OF_FILE
  1287. if test 14748 -ne `wc -c <'problem.lpr'`; then
  1288.     echo shar: \"'problem.lpr'\" unpacked with wrong size!
  1289. fi
  1290. # end of 'problem.lpr'
  1291. fi
  1292. echo shar: End of archive 2 \(of 7\).
  1293. cp /dev/null ark2isdone
  1294. MISSING=""
  1295. for I in 1 2 3 4 5 6 7 ; do
  1296.     if test ! -f ark${I}isdone ; then
  1297.     MISSING="${MISSING} ${I}"
  1298.     fi
  1299. done
  1300. if test "${MISSING}" = "" ; then
  1301.     echo You have unpacked all 7 archives.
  1302.     rm -f ark[1-9]isdone
  1303. else
  1304.     echo You still need to unpack the following archives:
  1305.     echo "        " ${MISSING}
  1306. fi
  1307. ##  End of shell archive.
  1308. exit 0
  1309.  
  1310. exit 0 # Just in case...
  1311.