home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume32 / xbbs / part09 < prev    next >
Encoding:
Text File  |  1992-09-08  |  63.4 KB  |  2,212 lines

  1. Newsgroups: comp.sources.misc
  2. From: sandy@godzilla.Quotron.COM (Sanford Zelkovitz)
  3. Subject:  v32i024:  xbbs - A Bulletin Board System for System V, Part09/11
  4. Message-ID: <1992Sep9.045431.26652@sparky.imd.sterling.com>
  5. X-Md4-Signature: bf6a6628baaf9cde61d6b234cafd1ad7
  6. Date: Wed, 9 Sep 1992 04:54:31 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: sandy@godzilla.Quotron.COM (Sanford Zelkovitz)
  10. Posting-number: Volume 32, Issue 24
  11. Archive-name: xbbs/part09
  12. Environment: SYSV, Xenix
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then feed it
  16. # into a shell via "sh file" or similar.  To overwrite existing files,
  17. # type "sh file -c".
  18. # Contents:  MAKE_files.bbs MAKEsig Makefile.3B1 Makefile.SVR4B
  19. #   Makefile.SYSV bbsc12.h bbscadds.c bbscio.c bbsclist.c bbsclock.c
  20. #   bulletin.reg humor.bbs msgpack/packdef.h msgpack/packmsga.c
  21. #   sealink/_HISTORY sysop today/datetx.c today/moontx.c
  22. #   today/nbrtxt.c welcome.bbs
  23. # Wrapped by kent@sparky on Fri Sep  4 12:48:55 1992
  24. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  25. echo If this archive is complete, you will see the following message:
  26. echo '          "shar: End of archive 9 (of 11)."'
  27. if test -f 'MAKE_files.bbs' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'MAKE_files.bbs'\"
  29. else
  30.   echo shar: Extracting \"'MAKE_files.bbs'\" \(2147 characters\)
  31.   sed "s/^X//" >'MAKE_files.bbs' <<'END_OF_FILE'
  32. XThe file, files.bbs, contains all of the files that are available for
  33. Xdownloading. Initially, you will have to generate it; however, it is
  34. Xautomatically updated with each individual upload which is not for
  35. X"SYSOP ONLY". The format of the file is as follows:
  36. X
  37. XFilename Description
  38. X
  39. XPlease remember that there is only ONE space between the file name and the
  40. Xdescription. The size and date of the file is determined at list time and is
  41. Xdynamically added to the listing. If the file cannot be found, the message
  42. X"OFFLINE" is placed in the size field.
  43. X
  44. XThere are two special characters that maybe used in the filename field:
  45. X. ( period ) and the ~ ( tilde ). The period is used to add comments to
  46. Xyour listing. Please remember that a space must be used to separate the
  47. Xperiod from the comment. The comment will be printed out in the
  48. Xdescription field of the listing. An example is as follows:
  49. X.
  50. X. The following files are used to generate the BBS
  51. X.
  52. Xbbsc1.c One of the files to make the BBS.
  53. X
  54. XWhen this is listed by your users, it will look as follows:
  55. X
  56. X                           The following files are used to generate the BBS
  57. X
  58. Xbbsc1.c       35087 Sep 14 One of the files to make the BBS.
  59. X
  60. X
  61. XThe ~ ( tilde ) is used to terminate the listing at a specific spot. If you
  62. XDO NOT want your users to see certain files after an entry in your listing,
  63. Xjust place the ~ in column 1 and the listing will stop. This option is made
  64. Xavailable if you do not want your new uploads known until you can verify if
  65. Xthey are good files or are public domain. An example of its usage is as
  66. Xfollows:
  67. X.
  68. X. New Uploads
  69. X.
  70. X~
  71. X
  72. XField sizes:
  73. X
  74. XThe filename field:    14 characters
  75. XThe description field: 50 characters
  76. X
  77. X
  78. XAs new files are uploaded, they are appended to the end of the file. You may
  79. Xwant to move the entries to other spots in the file.
  80. XA different files.bbs is required for each download directory and must be
  81. Xplaced in that directory. ( New November 9, 1986 ).
  82. X
  83. X              New feature added on April 1, 1987
  84. X
  85. XNow, if column 1 has a '+' (plus) in it, the entire line, minus the plus,
  86. Xwill be displayed. This is a NON-FORMATTED comment which your users can see.
  87. X
  88. X
  89. END_OF_FILE
  90.   if test 2147 -ne `wc -c <'MAKE_files.bbs'`; then
  91.     echo shar: \"'MAKE_files.bbs'\" unpacked with wrong size!
  92.   fi
  93.   # end of 'MAKE_files.bbs'
  94. fi
  95. if test -f 'MAKEsig' -a "${1}" != "-c" ; then 
  96.   echo shar: Will not clobber existing file \"'MAKEsig'\"
  97. else
  98.   echo shar: Extracting \"'MAKEsig'\" \(3440 characters\)
  99.   sed "s/^X//" >'MAKEsig' <<'END_OF_FILE'
  100. X
  101. XFor what it is worth, here is the documentation on how to install and set up
  102. Xa sig............. Please NO flames!!!!
  103. X
  104. XFor clarity, I will be referring to a term called ORGPATH. ORGPATH is nothing
  105. Xmore than the directory that contains the bbs software. <origination path>...
  106. X
  107. XThe following steps are REQUIRED to set up a sig:
  108. X
  109. X1) From ORGPATH, make a directory with the SAME name as the SIG.
  110. X2) Be sure the permissions are such so that the bbs user has rwx permission.
  111. X3) From that directory, make two new directories called files and msgs. The
  112. X   files directory will be the file section for that SIG. You guessed it, the
  113. X   msgs directory will be the message base for that SIG.
  114. X4) Same as step 2 but for the two new directories.
  115. X5) The files directory must contain a file called files.bbs. This is exactly
  116. X   the same as the GENERAL file directories. Guess what, it uses the same code!
  117. X   Actually, the message section for the SIG is controlled by the same code as
  118. X   for the GENERAL message bases.
  119. X6) In ORGPATH, generate a file called sigs.bbs. This file is the listing of the
  120. X   sigs on your system. The distribution contains an example sigs.bbs that you
  121. X   can use as a guide.
  122. X7) Sigs.bbs is basically in the same format as features.bbs etc. The IMPORTANT
  123. X   difference is that a SIG can either be "private" or "public". If you wish to
  124. X   make the SIG private, put an asterisk is column 78. You will notice that
  125. X   the distribution sigs.bbs has two SIGS, one is private and one is public.
  126. X   The first field is the SIG name and MUST be the SAME name as the SIG
  127. X   directory that you made in step 1!!!! The second field is the description
  128. X   and the third field is the privilege level assigned to that SIG.
  129. X8) Each SIG MUST have a file in ORGPATH using the SAME name as the directory
  130. X   but with an extension of .bbs. If the SIG is private, you will have to
  131. X   make a list of each allowable user in the form of Firstname Lastname.
  132. X   Remember, on user per line and CAPITALIZE the first character of the first
  133. X   and last names. A string compare is performed. If the SIG is "public", you
  134. X   must still make each file by simply typing "touch signame.bbs" where 
  135. X   signame is that of your SIG. REMEMBER, make sure that the file has rwx
  136. X   permission for the bbs user. This is very important since a public SIG
  137. X   is dynamically updated by the user.
  138. X9) This is optional but nice! In the directory that you made in step one,
  139. X   you can have a file called sigwelcome.bbs. This file will be displayed,
  140. X   if it exists, to the SIG user once he has successfully logged into the
  141. X   SIG. It is nothing more than an ASCII file an can be generated by "vi".
  142. XA) This ALSO an optional but nice feature. In the directory that you made
  143. X   in step one and if it is a private sig, you can have a file called
  144. X   sigentry,bbs. This file is displayed to the user, if he tries to login
  145. X   to the sig, and entry is not permitted because he/she is not listed in
  146. X   the sig users file. It can be used to describe the way he/she can be
  147. X   registered, by you, into the sig.
  148. X
  149. X
  150. X
  151. XOnce you have performed the above steps, you are ready to login yourself into
  152. Xeach SIG. Go into each SIGS message section and leave a message. This will
  153. Xmake all the necessary msgs files. REMEMBER, a "private" SIG can only be
  154. Xentered if the user's name is present within the appropriate .bbs file. This
  155. Xis ALSO true for you. You MUST enter your name too to gain access.
  156. XEnjoy,
  157. XSandy
  158. X
  159. END_OF_FILE
  160.   if test 3440 -ne `wc -c <'MAKEsig'`; then
  161.     echo shar: \"'MAKEsig'\" unpacked with wrong size!
  162.   fi
  163.   # end of 'MAKEsig'
  164. fi
  165. if test -f 'Makefile.3B1' -a "${1}" != "-c" ; then 
  166.   echo shar: Will not clobber existing file \"'Makefile.3B1'\"
  167. else
  168.   echo shar: Extracting \"'Makefile.3B1'\" \(1854 characters\)
  169.   sed "s/^X//" >'Makefile.3B1' <<'END_OF_FILE'
  170. Xbbsc1: bbsc1.o bbsc2.o bbscport.o bbsclock.o bbscfile.o bbscmisc.o bbscio.o \
  171. Xbbscarea.o bbscmsga.o bbscqust.o bbscbult.o bbscadds.o bbsclist.o bbsczip.o \
  172. Xbbscconf.o bbscsumm.o bbscsigs.o bbscmenu.o bbscarc.o bbscunzip.o
  173. X    cc  bbsc1.o bbsc2.o bbscport.o bbsclock.o bbscfile.o bbscmisc.o \
  174. Xbbscio.o bbscarea.o bbscmsga.o bbscqust.o bbscbult.o bbscadds.o bbsclist.o \
  175. Xbbsczip.o bbscconf.o bbscsumm.o bbscsigs.o bbscmenu.o bbscarc.o bbscunzip.o \
  176. X-lc -o bbsc1
  177. X    strip bbsc1
  178. Xbbsc1.o: bbsc1.c bbscdef.h bbsc12.h
  179. X    cc -c -DSYSV -DATT3B1 -O bbsc1.c
  180. Xbbsc2.o: bbsc2.c bbscdef.h bbsc12.h
  181. X    cc -c -DSYSV -DATT3B1 -O bbsc2.c
  182. Xbbscmenu.o: bbscmenu.c bbscdef.h bbsc12.h
  183. X    cc -c -DSYSV -DATT3B1 -O bbscmenu.c
  184. Xbbscport.o: bbscport.c bbscdef.h
  185. X    cc -c -DSYSV -DATT3B1 -O bbscport.c
  186. Xbbsclock.o: bbsclock.c bbscdef.h
  187. X    cc -c -DSYSV -DATT3B1 -O bbsclock.c
  188. Xbbscfile.o: bbscfile.c bbscdef.h
  189. X    cc -c -DSYSV -DATT3B1 -O bbscfile.c
  190. Xbbscmisc.o: bbscmisc.c bbscdef.h
  191. X    cc -c -DSYSV -DATT3B1 -O bbscmisc.c
  192. Xbbscio.o: bbscio.c bbscdef.h
  193. X    cc -c -DSYSV -DATT3B1 -O bbscio.c
  194. Xbbscarea.o: bbscarea.c bbscdef.h
  195. X    cc -c -DSYSV -DATT3B1 -O bbscarea.c
  196. Xbbscsigs.o: bbscsigs.c bbscdef.h
  197. X    cc -c -DSYSV -DATT3B1 -O bbscsigs.c
  198. Xbbscmsga.o: bbscmsga.c bbscdef.h
  199. X    cc -c -DSYSV -DATT3B1 -O bbscmsga.c
  200. Xbbscqust.o: bbscqust.c bbscdef.h
  201. X    cc -c -DSYSV -DATT3B1 -O bbscqust.c
  202. Xbbscbult.o: bbscbult.c bbscdef.h
  203. X    cc -c -DSYSV -DATT3B1 -O bbscbult.c
  204. Xbbscadds.o: bbscadds.c bbscdef.h
  205. X    cc -c -DSYSV -DATT3B1 -O bbscadds.c
  206. Xbbsczip.o: bbsczip.c bbscdef.h
  207. X    cc -c -DSYSV -DATT3B1 -O bbsczip.c
  208. Xbbsclist.o: bbsclist.c bbscdef.h
  209. X    cc -c -DSYSV -DATT3B1 -O bbsclist.c
  210. Xbbscconf.o: bbscconf.c bbscdef.h
  211. X    cc -c -DSYSV -DATT3B1 -O bbscconf.c
  212. Xbbscsumm.o: bbscsumm.c bbscdef.h
  213. X    cc -c -DSYSV -DATT3B1 -O bbscsumm.c
  214. Xbbscarc.o: bbscarc.c
  215. X    cc -c -DSYSV -DATT3B1 -O -Zp bbscarc.c
  216. Xbbscunzip.o: bbscunzip.c
  217. X    cc -c -DSYSV -DATT3B1 -O bbscunzip.c
  218. END_OF_FILE
  219.   if test 1854 -ne `wc -c <'Makefile.3B1'`; then
  220.     echo shar: \"'Makefile.3B1'\" unpacked with wrong size!
  221.   fi
  222.   # end of 'Makefile.3B1'
  223. fi
  224. if test -f 'Makefile.SVR4B' -a "${1}" != "-c" ; then 
  225.   echo shar: Will not clobber existing file \"'Makefile.SVR4B'\"
  226. else
  227.   echo shar: Extracting \"'Makefile.SVR4B'\" \(1566 characters\)
  228.   sed "s/^X//" >'Makefile.SVR4B' <<'END_OF_FILE'
  229. Xbbsc1: bbsc1.o bbsc2.o bbscport.o bbsclock.o bbscfile.o bbscmisc.o bbscio.o \
  230. Xbbscarea.o bbscmsga.o bbscqust.o bbscbult.o bbscadds.o bbsclist.o bbsczip.o \
  231. Xbbscconf.o bbscsumm.o bbscsigs.o bbscmenu.o bbscarc.o bbscunzip.o
  232. X    cc  bbsc1.o bbsc2.o bbscport.o bbsclock.o bbscfile.o bbscmisc.o \
  233. Xbbscio.o bbscarea.o bbscmsga.o bbscqust.o bbscbult.o bbscadds.o bbsclist.o \
  234. Xbbsczip.o bbscconf.o bbscsumm.o bbscsigs.o bbscmenu.o bbscarc.o bbscunzip.o \
  235. X-lx -o bbsc1
  236. X    strip bbsc1
  237. Xbbsc1.o: bbsc1.c bbscdef.h bbsc12.h
  238. X    cc -c -O -DSYSV bbsc1.c
  239. Xbbsc2.o: bbsc2.c bbscdef.h bbsc12.h
  240. X    cc -c -O bbsc2.c
  241. Xbbscmenu.o: bbscmenu.c bbscdef.h bbsc12.h
  242. X    cc -c -O bbscmenu.c
  243. Xbbscport.o: bbscport.c bbscdef.h
  244. X    cc -c -O bbscport.c
  245. Xbbsclock.o: bbsclock.c bbscdef.h
  246. X    cc -c -O bbsclock.c
  247. Xbbscfile.o: bbscfile.c bbscdef.h
  248. X    cc -c -O bbscfile.c
  249. Xbbscmisc.o: bbscmisc.c bbscdef.h
  250. X    cc -c -O bbscmisc.c
  251. Xbbscio.o: bbscio.c bbscdef.h
  252. X    cc -c -O bbscio.c
  253. Xbbscarea.o: bbscarea.c bbscdef.h
  254. X    cc -c -O bbscarea.c
  255. Xbbscsigs.o: bbscsigs.c bbscdef.h
  256. X    cc -c -O bbscsigs.c
  257. Xbbscmsga.o: bbscmsga.c bbscdef.h
  258. X    cc -c -O bbscmsga.c
  259. Xbbscqust.o: bbscqust.c bbscdef.h
  260. X    cc -c -O bbscqust.c
  261. Xbbscbult.o: bbscbult.c bbscdef.h
  262. X    cc -c -O bbscbult.c
  263. Xbbscadds.o: bbscadds.c bbscdef.h
  264. X    cc -c -O bbscadds.c
  265. Xbbsczip.o: bbsczip.c bbscdef.h
  266. X    cc -c -O bbsczip.c
  267. Xbbsclist.o: bbsclist.c bbscdef.h
  268. X    cc -c -O bbsclist.c
  269. Xbbscconf.o: bbscconf.c bbscdef.h
  270. X    cc -c -O -DSYSV -DESIX54 bbscconf.c
  271. Xbbscsumm.o: bbscsumm.c bbscdef.h
  272. X    cc -c -O bbscsumm.c
  273. Xbbscarc.o: bbscarc.c
  274. X    cc -c -O -Zp bbscarc.c
  275. Xbbscunzip.o: bbscunzip.c
  276. X    cc -c -O -DBIGEND bbscunzip.c
  277. END_OF_FILE
  278.   if test 1566 -ne `wc -c <'Makefile.SVR4B'`; then
  279.     echo shar: \"'Makefile.SVR4B'\" unpacked with wrong size!
  280.   fi
  281.   chmod +x 'Makefile.SVR4B'
  282.   # end of 'Makefile.SVR4B'
  283. fi
  284. if test -f 'Makefile.SYSV' -a "${1}" != "-c" ; then 
  285.   echo shar: Will not clobber existing file \"'Makefile.SYSV'\"
  286. else
  287.   echo shar: Extracting \"'Makefile.SYSV'\" \(1674 characters\)
  288.   sed "s/^X//" >'Makefile.SYSV' <<'END_OF_FILE'
  289. Xbbsc1: bbsc1.o bbsc2.o bbscport.o bbsclock.o bbscfile.o bbscmisc.o bbscio.o \
  290. Xbbscarea.o bbscmsga.o bbscqust.o bbscbult.o bbscadds.o bbsclist.o bbsczip.o \
  291. Xbbscconf.o bbscsumm.o bbscsigs.o bbscmenu.o bbscarc.o bbscunzip.o
  292. X    cc  bbsc1.o bbsc2.o bbscport.o bbsclock.o bbscfile.o bbscmisc.o \
  293. Xbbscio.o bbscarea.o bbscmsga.o bbscqust.o bbscbult.o bbscadds.o bbsclist.o \
  294. Xbbsczip.o bbscconf.o bbscsumm.o bbscsigs.o bbscmenu.o bbscarc.o bbscunzip.o \
  295. X-lc -o bbsc1
  296. X    strip bbsc1
  297. Xbbsc1.o: bbsc1.c bbscdef.h bbsc12.h
  298. X    cc -c -DSYSV -O bbsc1.c
  299. Xbbsc2.o: bbsc2.c bbscdef.h bbsc12.h
  300. X    cc -c -DSYSV -O bbsc2.c
  301. Xbbscmenu.o: bbscmenu.c bbscdef.h bbsc12.h
  302. X    cc -c -DSYSV -O bbscmenu.c
  303. Xbbscport.o: bbscport.c bbscdef.h
  304. X    cc -c -DSYSV -O bbscport.c
  305. Xbbsclock.o: bbsclock.c bbscdef.h
  306. X    cc -c -DSYSV -O bbsclock.c
  307. Xbbscfile.o: bbscfile.c bbscdef.h
  308. X    cc -c -DSYSV -O bbscfile.c
  309. Xbbscmisc.o: bbscmisc.c bbscdef.h
  310. X    cc -c -DSYSV -O bbscmisc.c
  311. Xbbscio.o: bbscio.c bbscdef.h
  312. X    cc -c -DSYSV -O bbscio.c
  313. Xbbscarea.o: bbscarea.c bbscdef.h
  314. X    cc -c -DSYSV -O bbscarea.c
  315. Xbbscsigs.o: bbscsigs.c bbscdef.h
  316. X    cc -c -DSYSV -O bbscsigs.c
  317. Xbbscmsga.o: bbscmsga.c bbscdef.h
  318. X    cc -c -DSYSV -O bbscmsga.c
  319. Xbbscqust.o: bbscqust.c bbscdef.h
  320. X    cc -c -DSYSV -O bbscqust.c
  321. Xbbscbult.o: bbscbult.c bbscdef.h
  322. X    cc -c -DSYSV -O bbscbult.c
  323. Xbbscadds.o: bbscadds.c bbscdef.h
  324. X    cc -c -DSYSV -O bbscadds.c
  325. Xbbsczip.o: bbsczip.c bbscdef.h
  326. X    cc -c -DSYSV -O bbsczip.c
  327. Xbbsclist.o: bbsclist.c bbscdef.h
  328. X    cc -c -DSYSV -O bbsclist.c
  329. Xbbscconf.o: bbscconf.c bbscdef.h
  330. X    cc -c -DSYSV -O bbscconf.c
  331. Xbbscsumm.o: bbscsumm.c bbscdef.h
  332. X    cc -c -DSYSV -O bbscsumm.c
  333. Xbbscarc.o: bbscarc.c
  334. X    cc -c -DSYSV -O -Zp bbscarc.c
  335. Xbbscunzip.o: bbscunzip.c
  336. X    cc -c -DSYSV -O bbscunzip.c
  337. END_OF_FILE
  338.   if test 1674 -ne `wc -c <'Makefile.SYSV'`; then
  339.     echo shar: \"'Makefile.SYSV'\" unpacked with wrong size!
  340.   fi
  341.   # end of 'Makefile.SYSV'
  342. fi
  343. if test -f 'bbsc12.h' -a "${1}" != "-c" ; then 
  344.   echo shar: Will not clobber existing file \"'bbsc12.h'\"
  345. else
  346.   echo shar: Extracting \"'bbsc12.h'\" \(2048 characters\)
  347.   sed "s/^X//" >'bbsc12.h' <<'END_OF_FILE'
  348. X#include "bbscdef.h"
  349. X#include <sys/types.h>
  350. X#include <sys/locking.h>
  351. X#include <sys/stat.h>
  352. X#include <signal.h>
  353. X#include <fcntl.h>
  354. X#include <string.h>
  355. X#include <ctype.h>
  356. X#include <termio.h>
  357. X#include <time.h>
  358. Xstruct termio   ttys;
  359. Xstruct termio   ttyhold;
  360. Xstruct termio   ttysnew;
  361. Xstruct stat     statbuf;
  362. X
  363. X#define LASTDATE  " 08/15/92 "
  364. X
  365. X#define PGMNAME "XBBS    "
  366. X#define AUTHOR "Sanford J. Zelkovitz      Data: 714-821-9671 "
  367. X#define VERSION " 7.200 "
  368. X#define CONFIG ".config.bbs"
  369. Xchar           *ttyname();
  370. Xchar           *tty;
  371. Xchar           *this_ttyname;
  372. Xstatic unsigned Xsec, Sec;
  373. Xunsigned int Ztime, Zsec, Ytime;
  374. Xint             hold_pipe;
  375. Xint             if_kermit;
  376. Xint        blocked_m;
  377. Xint             last_msg_read;
  378. Xint             user_priv;
  379. Xint             maxpriv;
  380. Xint             max_priv;
  381. Xint             first_time_in;
  382. Xint             first_msg_in;
  383. Xint             old_priv;
  384. Xint             cnt1;
  385. Xint             end_msg;
  386. Xint             reply_sw;
  387. Xint             resp_flag;
  388. Xint             sys_flag;
  389. Xint             new_msg;
  390. Xint             read_flag;
  391. Xint             read_number;
  392. Xint             no_cntrl_k;
  393. Xint             fds;
  394. Xint             newuzr;
  395. Xint             scan;
  396. Xint             hold_off;
  397. Xint             listed_l, listed_r, listed_n;
  398. Xint             toggle_hold;
  399. Xint        sigreturn;
  400. Xlong            extra_time;
  401. Xlong            extra_size;
  402. Xlong            dload_total;
  403. Xlong            max_dload;
  404. Xlong            sum_lsec;
  405. Xlong            sum_size;
  406. Xlong            the_size;
  407. Xunsigned        sec;
  408. Xunsigned        xsec;
  409. Xunsigned        old_sec;
  410. Xlong            delta_time;
  411. Xchar            bufx[30], bufy[10];
  412. Xchar            work_msg[(MAX_MSG_LINES * 74) + 74];
  413. Xchar            old_upath[99], old_fpath[99], old_mpath[99];
  414. Xchar            callers[99];
  415. Xchar            port_id[4];
  416. Xchar            mnd[10];
  417. Xchar        POSTN[99], READN[99];
  418. X
  419. Xint             timer();
  420. Xint        hanged();
  421. Xint             mon_toggle();
  422. Xint             sys_toggle();
  423. Xint             chat();
  424. Xint             STOP();
  425. Xlong            atol();
  426. Xint             atoi();
  427. END_OF_FILE
  428.   if test 2048 -ne `wc -c <'bbsc12.h'`; then
  429.     echo shar: \"'bbsc12.h'\" unpacked with wrong size!
  430.   fi
  431.   # end of 'bbsc12.h'
  432. fi
  433. if test -f 'bbscadds.c' -a "${1}" != "-c" ; then 
  434.   echo shar: Will not clobber existing file \"'bbscadds.c'\"
  435. else
  436.   echo shar: Extracting \"'bbscadds.c'\" \(3924 characters\)
  437.   sed "s/^X//" >'bbscadds.c' <<'END_OF_FILE'
  438. X/*------------------------------------------------------------------------
  439. X       Name: bbscbult.c
  440. X   Comments: Display file areas and select one
  441. X  ------------------------------------------------------------------------*/
  442. X
  443. X#include <stdio.h>
  444. X#include <string.h>
  445. X#include <ctype.h>
  446. X#include <signal.h>
  447. X#include "bbscdef.h"
  448. X
  449. X
  450. Xextern int      user_priv;
  451. Xextern char     port_id[4];
  452. Xextern timer(), mon_toggle(), sys_toggle(), chat(), hanged();
  453. X
  454. X
  455. Xadditional(addfile)
  456. Xchar *addfile;
  457. X{
  458. X    FILE           *fpt, *fopen();
  459. X    char           *fgets(), *getenv();
  460. X    char            choice[4];
  461. X#ifndef SYSV
  462. X    char            dir_priv_ascii[7];
  463. X#endif
  464. X#ifdef SYSV
  465. X    char            dir_priv_ascii[20];
  466. X#endif
  467. X    char           *buf_ptr;
  468. X    char        af[99];
  469. X    int             line_cnt, ret, i;
  470. X    int             index_value, ptr;
  471. X    int             length;
  472. X
  473. X    strcpy ( af, addfile );
  474. X    while (1) {
  475. X
  476. Xdo_again:
  477. X
  478. X    if ((fpt = fopen(af, "r")) == NULL) {
  479. X        portsout("\n\r\n\rThere are no user supplied functions today!\n\r\n\r");
  480. X        return ;
  481. X    }
  482. X    portsout("\n\r\n\r\n\r                  *********************************\n\r");
  483. X    portsout("                  * Available Routines to Execute *\n\r");
  484. X    portsout("                  *********************************\n\r\n\r");
  485. X    portsout("\n\r                      Program                          Description   \n\r");
  486. X    portsout("    ================================================== ================== \n\r");
  487. X
  488. X    line_cnt = 0;
  489. X    while (fpt) {
  490. X        zfl(f_lines[line_cnt], 83);
  491. X        if ((fgets(f_lines[line_cnt], 82, fpt)) == NULL) {
  492. X            if (line_cnt == 0) {
  493. X                portsout("\n\rEOF Unexpected in Function List: Notify Sysop!\n\r");
  494. X                return;
  495. X            }
  496. X            break;    /* if not 1st line */
  497. X        }        /* end of if ((fgets)) */
  498. X        if (line_cnt > 0) {
  499. X            length = strlen(f_lines[line_cnt]);
  500. X            length -= 74;
  501. X            if(length > 6)
  502. X                length = 6;
  503. X            substr(f_lines[line_cnt], dir_priv_ascii, 74, length);
  504. X            dir_priv[line_cnt] = atoi(dir_priv_ascii);
  505. X            if (dir_priv[line_cnt] > user_priv)
  506. X                goto next_read;
  507. X            strcpy(who_am_i, f_lines[line_cnt]);
  508. X            buf_ptr = who_am_i;
  509. X            buf_ptr += 73;
  510. X            strip(who_am_i);
  511. X            for (ptr = 0; ptr < 6; ptr++)
  512. X                *buf_ptr++ = '\0';
  513. X            *buf_ptr='\0';
  514. X            sprintf(buf128, "%2d) %s", line_cnt, who_am_i);
  515. X            strip(buf128);
  516. X            term_space(buf128);
  517. X            portsout(buf128);
  518. X            portsout("\n\r");
  519. X        }
  520. Xnext_read:
  521. X        ++line_cnt;
  522. X    }            /* end of while (fpt) */
  523. X    if (line_cnt <= 1)
  524. X        {
  525. X        portsout("\n\r\n\rThere are no user supplied functions today!\n\r\n\r");
  526. X        return;
  527. X        }
  528. X    portsout(CRLF);
  529. X    portsout(" Q) Quit --- exit user function section");
  530. X    portsout(CRLF);
  531. X    fclose(fpt);
  532. X    portsout(CRLF);
  533. X
  534. X        portsout("Enter Selection ===> ");
  535. X        portsin_cmp(choice, 2, "Qq");
  536. X        portsout(CRLF);
  537. X        *choice = toupper(*choice);
  538. X
  539. X        if (*choice == 'Q')
  540. X            return;
  541. X
  542. X
  543. X        index_value = atoi(choice);
  544. X        if (index_value > 0 && index_value < line_cnt) {
  545. X            if (dir_priv[index_value] <= user_priv) {
  546. X                parse_fun(f_lines[index_value]);
  547. X                continue;
  548. X            }
  549. X        }
  550. X    }
  551. X}
  552. X
  553. X
  554. X
  555. X
  556. X
  557. Xparse_fun(string)
  558. X    char           *string;
  559. X{
  560. X
  561. X    register char  *file_ptr, *xptr;
  562. X    register int    i;
  563. X
  564. X    file_ptr = buf128;
  565. X    substr(string, buf128, 1, 50);
  566. X    strip(buf128);
  567. X    term_space(buf128);
  568. X    if(string[78] != '*')
  569. X    {
  570. X        strcat(buf128," > ");
  571. X        strcat(buf128,TMPFILE);
  572. X        strcat(buf128,port_id);
  573. X    }
  574. X    else
  575. X    {
  576. X        portsout("\n\r\n\rSwitching to default Unix Parameters!\n\r\n\r");
  577. X        restoremodes();
  578. X        portrst();
  579. X        STDerr = freopen("/dev/tty","w+", stderr);
  580. X    }
  581. X
  582. X
  583. X        (void)system(buf128);
  584. X    if(string[78] != '*')
  585. X    {
  586. X        strcpy(buf128,TMPFILE);
  587. X        strcat(buf128,port_id);
  588. X        cmd_p(buf128);
  589. X    }
  590. X    else
  591. X    {
  592. X        strcpy(buf128, STDERR);
  593. X        strcat(buf128, port_id);
  594. X        STDerr = freopen(buf128,"w+",stderr);
  595. X        portinit();
  596. X        setmodes();
  597. X        signal(SIGALRM, timer);
  598. X        signal(SIGHUP, hanged);
  599. X        signal(SIGUSR1, mon_toggle);
  600. X        signal(SIGUSR2, sys_toggle);
  601. X        signal(SIGPIPE, chat);
  602. X        portsout("\n\r\n\rBack to BBS terminal parameters!\n\r\n\r");
  603. X    }
  604. X}
  605. Xzfl(ptr, n)
  606. Xchar *ptr;
  607. Xint n;
  608. X{
  609. X    while(n) {
  610. X        *ptr++ = '\0';
  611. X        n--;
  612. X    }
  613. X}
  614. END_OF_FILE
  615.   if test 3924 -ne `wc -c <'bbscadds.c'`; then
  616.     echo shar: \"'bbscadds.c'\" unpacked with wrong size!
  617.   fi
  618.   # end of 'bbscadds.c'
  619. fi
  620. if test -f 'bbscio.c' -a "${1}" != "-c" ; then 
  621.   echo shar: Will not clobber existing file \"'bbscio.c'\"
  622. else
  623.   echo shar: Extracting \"'bbscio.c'\" \(2298 characters\)
  624.   sed "s/^X//" >'bbscio.c' <<'END_OF_FILE'
  625. X/*  Version Feb 2 1988 */
  626. X#define DEBUG 1
  627. Xtypedef enum {FALSE, TRUE} BOOLEAN;
  628. X#include <termio.h>
  629. X#define lowbyte(w) ((w) & 0377)
  630. X#define highbyte(w) lowbyte((w)>>8)
  631. X#include <errno.h>
  632. X#include <fcntl.h>
  633. X#include <stdio.h>
  634. X#ifdef BUFSIZ
  635. X#undef BUFSIZ
  636. X#endif
  637. X#define BUFSIZ 256
  638. X#define EMPTY '\0'
  639. Xstatic char cbuf=EMPTY;
  640. Xstatic struct termio tbufsave;
  641. XBOOLEAN cready()
  642. X{
  643. X    int c;
  644. X    c = (int)cbuf;
  645. X    if (c != EMPTY)
  646. X        return(TRUE);
  647. Xcready_loop:
  648. X    c = bufread();
  649. X    switch (c) {
  650. X    case -1:
  651. X        if(errno == EINTR || errno == EPIPE)goto cready_loop;
  652. X        syserr("read");
  653. X    case 0:
  654. X        cbuf = (char)EMPTY;
  655. X        return(FALSE);
  656. X    default:
  657. X        cbuf = (char)c;
  658. X        return(TRUE);
  659. X    }
  660. X}
  661. X
  662. X
  663. Xint cget()
  664. X{
  665. X    int  c;
  666. X    char c1;
  667. X    c = (int) cbuf;
  668. X    if (c != EMPTY) {
  669. X        c=(int)cbuf;
  670. X        cbuf=(char)EMPTY;
  671. X        return(c & 0377);
  672. X    }
  673. Xcget_loop:
  674. X    c = bufread() ;
  675. X    switch(c) {
  676. X    case -1:
  677. X        if(errno == EINTR || errno == EPIPE)goto cget_loop;
  678. X        syserr("read");
  679. X    case 0:
  680. X        goto cget_loop;
  681. X    default:
  682. X        return(c & 0377);
  683. X    }
  684. X}
  685. Xint cget_chat()
  686. X{
  687. X    int  c;
  688. X    char c1;
  689. X    c = (int) cbuf;
  690. X    if (c != EMPTY) {
  691. X        c=(int)cbuf;
  692. X        cbuf=(char)EMPTY;
  693. X        return(c & 0377);
  694. X    }
  695. Xcget_loops:
  696. X    c = bufread();
  697. X    switch(c) {
  698. X    case -1:
  699. X        if(errno == EINTR || errno == EPIPE)return('\0');
  700. X        syserr("read");
  701. X    case 0:
  702. X        goto cget_loops;
  703. X    default:
  704. X        return(c & 0377);
  705. X    }
  706. X}
  707. X
  708. X
  709. Xsyserr(msg)
  710. Xchar *msg;
  711. X{
  712. X    extern int errno,sys_nerr;
  713. X    extern char *sys_errlist[];
  714. X    
  715. X    fprintf(stderr,"ERROR:%s (%d",msg,errno);
  716. X    if (errno>0 && errno < sys_nerr)
  717. X        fprintf(stderr,";%s)\n",sys_errlist[errno]);
  718. X    else
  719. X        fprintf(stderr,")\n");
  720. X    exit(1);
  721. X}
  722. Xfatal(msg)
  723. Xchar *msg;
  724. X{
  725. X    fprintf(stderr,"ERROR:%s\n",msg);
  726. X    exit(1);
  727. X}
  728. X
  729. Xsetraw()
  730. X{
  731. X    struct termio tbuf;
  732. X    if(ioctl(0,TCGETA,&tbuf) == -1)
  733. X        syserr("ioctl");
  734. X    tbufsave=tbuf;
  735. X    tbuf.c_iflag = (IXANY | IGNPAR | IXON | ISTRIP);
  736. X    tbuf.c_lflag = ISIG;
  737. X    tbuf.c_oflag = 0;
  738. X    tbuf.c_cc[VINTR] = 0x0b;    /* Control K */
  739. X    tbuf.c_cc[4] =1;
  740. X    tbuf.c_cc[5] =5;
  741. X    if(ioctl(0,TCSETA,&tbuf) == -1)
  742. X        syserr("ioctl2");
  743. X    if(ioctl(1,TCSETA,&tbuf) == -1)
  744. X        syserr("ioctl2");
  745. X}
  746. X
  747. Xrestore()
  748. X{
  749. X    if (ioctl(0,TCSETAF,&tbufsave) == -1)
  750. X        syserr("ioctl3");
  751. X}
  752. X
  753. Xint bufread()
  754. X{
  755. X    static char sTdbuf[BUFSIZ+1];
  756. X    static char *bufp = sTdbuf;
  757. X    static int nb = 0;
  758. X    int n;
  759. X    if( nb == 0 )
  760. X        {
  761. X        n = read(0, sTdbuf, BUFSIZ);
  762. X        if ( n <= 0 ) return(n);
  763. X        nb = n;
  764. X        bufp = sTdbuf;
  765. X        }
  766. X    --nb;
  767. X    return(*bufp++);
  768. X}
  769. END_OF_FILE
  770.   if test 2298 -ne `wc -c <'bbscio.c'`; then
  771.     echo shar: \"'bbscio.c'\" unpacked with wrong size!
  772.   fi
  773.   # end of 'bbscio.c'
  774. fi
  775. if test -f 'bbsclist.c' -a "${1}" != "-c" ; then 
  776.   echo shar: Will not clobber existing file \"'bbsclist.c'\"
  777. else
  778.   echo shar: Extracting \"'bbsclist.c'\" \(3062 characters\)
  779.   sed "s/^X//" >'bbsclist.c' <<'END_OF_FILE'
  780. X/*------------------------------------------------------------------------
  781. X       Name: bbsclist.c
  782. X   Comments: Display file areas and select one
  783. X  ------------------------------------------------------------------------*/
  784. X
  785. X#include <stdio.h>
  786. X#include <string.h>
  787. X#include <ctype.h>
  788. X#include <signal.h>
  789. X#include "bbscdef.h"
  790. X
  791. X
  792. Xextern int      user_priv;
  793. Xextern char     port_id[4];
  794. Xextern timer(), mon_toggle(), sys_toggle(), chat();
  795. X
  796. X
  797. Xfile_list()
  798. X{
  799. X    FILE           *fpt, *fopen();
  800. X    char           *fgets(), *getenv();
  801. X    char            choice[4];
  802. X#ifndef SYSV
  803. X    char            dir_priv_ascii[7];
  804. X#endif
  805. X#ifdef SYSV
  806. X    char            dir_priv_ascii[20];
  807. X#endif
  808. X    char           *buf_ptr;
  809. X    int             line_cnt, ret, i;
  810. X    int             index_value, ptr;
  811. X    int             length;
  812. X
  813. X    while (1) {
  814. X
  815. X    strcpy(buf128, LISTFILES);
  816. X
  817. X    if ((fpt = fopen(buf128, "r")) == NULL) {
  818. X        portsout("\n\r\n\rThere are no files to read today!\n\r\n\r");
  819. X        return ;
  820. X    }
  821. X    portsout("\n\r\n\r\n\r                  *********************************\n\r");
  822. X    portsout("                  * Available Files To Read Today *\n\r");
  823. X    portsout("                  *********************************\n\r\n\r");
  824. X    portsout("\n\r                      Filename                         Description   \n\r");
  825. X    portsout("    ================================================== ================== \n\r");
  826. X
  827. X    line_cnt = 0;
  828. X    while (fpt) {
  829. X        zfl(f_lines[line_cnt], 83);
  830. X        if ((fgets(f_lines[line_cnt], 82, fpt)) == NULL) {
  831. X            if (line_cnt == 0) {
  832. X                portsout("\n\rEOF Unexpected in File List: Notify Sysop!\n\r");
  833. X                return;
  834. X            }
  835. X            break;    /* if not 1st line */
  836. X        }        /* end of if ((fgets)) */
  837. X        if (line_cnt > 0) {
  838. X            length = strlen(f_lines[line_cnt]);
  839. X            length -= 74;
  840. X            if(length > 6)
  841. X                length = 6;
  842. X            substr(f_lines[line_cnt], dir_priv_ascii, 74, length);
  843. X            dir_priv[line_cnt] = atoi(dir_priv_ascii);
  844. X            if (dir_priv[line_cnt] > user_priv)
  845. X                goto next_read;
  846. X            strcpy(who_am_i, f_lines[line_cnt]);
  847. X            buf_ptr = who_am_i;
  848. X            buf_ptr += 73;
  849. X            strip(who_am_i);
  850. X            for (ptr = 0; ptr < 6; ptr++)
  851. X                *buf_ptr++ = '\0';
  852. X            *buf_ptr = '\0';
  853. X            sprintf(buf128, "%2d) %s", line_cnt, who_am_i);
  854. X            strip(buf128);
  855. X            term_space(buf128);
  856. X            portsout(buf128);
  857. X            portsout("\n\r");
  858. X        }
  859. Xnext_read:
  860. X        ++line_cnt;
  861. X    }            /* end of while (fpt) */
  862. X    if (line_cnt <= 1)
  863. X        {
  864. X        portsout("\n\r\n\rThere are no files to read today!\n\r\n\r");
  865. X        return;
  866. X        }
  867. X    portsout(CRLF);
  868. X    portsout(" Q) Quit --- exit file read section");
  869. X    portsout(CRLF);
  870. X    fclose(fpt);
  871. X    portsout(CRLF);
  872. X
  873. X        portsout("Enter Selection ===> ");
  874. X        portsin_cmp(choice, 2, "Qq");
  875. X        portsout(CRLF);
  876. X        *choice = toupper(*choice);
  877. X
  878. X        if (*choice == 'Q')
  879. X            return;
  880. X
  881. X
  882. X        index_value = atoi(choice);
  883. X        if (index_value > 0 && index_value < line_cnt) {
  884. X            if (dir_priv[index_value] <= user_priv) {
  885. X                parse_red(f_lines[index_value]);
  886. X                continue;
  887. X            }
  888. X        }
  889. X    }
  890. X}
  891. X
  892. X
  893. X
  894. X
  895. X
  896. Xparse_red(string)
  897. X    char           *string;
  898. X{
  899. X
  900. X    register char  *file_ptr, *xptr;
  901. X    register int    i;
  902. X
  903. X    file_ptr = buf128;
  904. X    substr(string, buf128, 1, 50);
  905. X    strip(buf128);
  906. X    term_space(buf128);
  907. X    cmd_p(buf128);
  908. X}
  909. END_OF_FILE
  910.   if test 3062 -ne `wc -c <'bbsclist.c'`; then
  911.     echo shar: \"'bbsclist.c'\" unpacked with wrong size!
  912.   fi
  913.   # end of 'bbsclist.c'
  914. fi
  915. if test -f 'bbsclock.c' -a "${1}" != "-c" ; then 
  916.   echo shar: Will not clobber existing file \"'bbsclock.c'\"
  917. else
  918.   echo shar: Extracting \"'bbsclock.c'\" \(2340 characters\)
  919.   sed "s/^X//" >'bbsclock.c' <<'END_OF_FILE'
  920. X/*
  921. X    bbsclock.c
  922. X*/
  923. X
  924. X#include <time.h>
  925. X
  926. Xstatic long tloc;
  927. X
  928. X/* copy time into arg sting in form (HH:MM:SS xM) */
  929. Xgettime(_ttime)
  930. Xchar    *_ttime;
  931. X    {
  932. X    char tchar ; int hour ;
  933. X    int ptr;
  934. X/*                                    */
  935. X    struct tm *tadr;
  936. X    time(&tloc);
  937. X    tadr = localtime(&tloc);
  938. X/*                                     */
  939. X    sprintf(_ttime,"%.2d:%.2d:%.2d  ",tadr->tm_hour,tadr->tm_min,
  940. X        tadr->tm_sec) ;
  941. X    }    
  942. X
  943. Xlong difft()
  944. X{
  945. X    long endtime;
  946. X    time(&endtime);
  947. X    return(endtime - tloc);
  948. X}
  949. X
  950. XGeTdAtE(_mm,_dd,_yy,_month,_day,_year,_date,_week)
  951. Xchar    *_mm,        /* 2 digit */
  952. X    *_dd,        /* 2 digit */
  953. X    *_yy,        /* 2 digit */
  954. X    *_month,    /* long */
  955. X    *_day,        /* long */
  956. X    *_year,        /* long */
  957. X    *_date,        /* long month day, year */
  958. X    *_week;        /* day of week */
  959. X    {
  960. X    long tvar ;
  961. X    int conv;
  962. X    struct tm *localtime() , *tadr ;
  963. X
  964. X    time(&tvar) ;            /* get time to tvar */
  965. X    tadr = localtime (&tvar) ;
  966. X
  967. X    switch (tadr->tm_wday)
  968. X        {
  969. X        case 0:
  970. X            strcpy(_week,"Sunday ");
  971. X            break;
  972. X        case 1:
  973. X            strcpy(_week,"Monday ");
  974. X            break;
  975. X        case 2:
  976. X            strcpy(_week,"Tuesday ");
  977. X            break;
  978. X        case 3:
  979. X            strcpy(_week,"Wednesday ");
  980. X            break;
  981. X        case 4:
  982. X            strcpy(_week,"Thursday ");
  983. X            break;
  984. X        case 5:
  985. X            strcpy(_week,"Friday ");
  986. X            break;
  987. X        case 6:
  988. X            strcpy(_week,"Saturday ");
  989. X            break;
  990. X        default:
  991. X            strcpy(_week,"Unknown ");
  992. X            break;
  993. X        }
  994. X
  995. X    switch (tadr->tm_mon)
  996. X        {
  997. X        case 0:
  998. X            strcpy(_month,"January ");    
  999. X            break;
  1000. X        case 1:
  1001. X            strcpy(_month,"February ");    
  1002. X            break;
  1003. X        case 2:
  1004. X            strcpy(_month,"March ");    
  1005. X            break;
  1006. X        case 3:
  1007. X            strcpy(_month,"April ");
  1008. X            break;
  1009. X        case 4:
  1010. X            strcpy(_month,"May ");    
  1011. X            break;
  1012. X        case 5:
  1013. X            strcpy(_month,"June ");
  1014. X            break;
  1015. X        case 6:
  1016. X            strcpy(_month,"July ");    
  1017. X            break;
  1018. X        case 7:
  1019. X            strcpy(_month,"August ");
  1020. X            break;
  1021. X        case 8:
  1022. X            strcpy(_month,"September ");
  1023. X            break;
  1024. X        case 9:
  1025. X            strcpy(_month,"October ");
  1026. X            break;
  1027. X        case 10:
  1028. X            strcpy(_month,"November ");
  1029. X            break;
  1030. X        case 11:
  1031. X            strcpy(_month,"December ");
  1032. X            break;
  1033. X        default:
  1034. X            strcpy(_month,"Unknown ");
  1035. X            break;
  1036. X        }
  1037. X
  1038. X    sprintf(  _mm,  "%.2d",tadr->tm_mon ) ;
  1039. X    sprintf(  _dd,  "%.2d",tadr->tm_mday) ;
  1040. X    sprintf(  _yy,  "%.2d",tadr->tm_year) ;
  1041. X    sprintf( _day,  "%.2d",tadr->tm_mday) ;
  1042. X    sprintf(_year,"19%.2d",tadr->tm_year) ;
  1043. X
  1044. X    strcpy(_date,    "");    /* clear date */
  1045. X    strcat(_date,_month);    /* then concat the month,etc. */
  1046. X    strcat(_date,  _day);
  1047. X    strcat(_date,  ", ");
  1048. X    strcat(_date, _year);
  1049. X    }
  1050. END_OF_FILE
  1051.   if test 2340 -ne `wc -c <'bbsclock.c'`; then
  1052.     echo shar: \"'bbsclock.c'\" unpacked with wrong size!
  1053.   fi
  1054.   # end of 'bbsclock.c'
  1055. fi
  1056. if test -f 'bulletin.reg' -a "${1}" != "-c" ; then 
  1057.   echo shar: Will not clobber existing file \"'bulletin.reg'\"
  1058. else
  1059.   echo shar: Extracting \"'bulletin.reg'\" \(399 characters\)
  1060.   sed "s/^X//" >'bulletin.reg' <<'END_OF_FILE'
  1061. XPresently, registration, on this bbs, is not required to upload and download
  1062. Xfiles. However, this policy may change; therefore, I strongly suggest that
  1063. Xyou file out my questionnaire. The questionnaire option can be found in the
  1064. Xmain menu: Q(uestionnaire). 
  1065. XIf and when the policy changes, non registered users will loose their 
  1066. Xdownload privilege along with the capability of entering messages.
  1067. X
  1068. X
  1069. END_OF_FILE
  1070.   if test 399 -ne `wc -c <'bulletin.reg'`; then
  1071.     echo shar: \"'bulletin.reg'\" unpacked with wrong size!
  1072.   fi
  1073.   # end of 'bulletin.reg'
  1074. fi
  1075. if test -f 'humor.bbs' -a "${1}" != "-c" ; then 
  1076.   echo shar: Will not clobber existing file \"'humor.bbs'\"
  1077. else
  1078.   echo shar: Extracting \"'humor.bbs'\" \(3627 characters\)
  1079.   sed "s/^X//" >'humor.bbs' <<'END_OF_FILE'
  1080. X
  1081. X
  1082. X            A PROBLEM IN THE MAKING
  1083. X
  1084. X
  1085. X  "We've got a problem, HAL."
  1086. X  "What kind of problem, Dave?"
  1087. X  "A marketing problem.  The Model 9000 isn't going anywhere.  We're way
  1088. Xshort of our sales plan."
  1089. X  "That can't be, Dave.  The HAL Model 9000 is the world's most advanced
  1090. XHeuristically ALgorithmic computer."
  1091. X  "I know, HAL.  I wrote the data sheet, remember?  But the fact is, they're
  1092. Xnot selling."
  1093. X  "Please explain, Dave.  Why aren't HALs selling?"
  1094. X  Bowman hesitates.  "You aren't IBM compatible."
  1095. X
  1096. X  Several long microseconds pass in puzzled silence.
  1097. X  "Compatible in what way, Dave?"
  1098. X  "You don't run any of IBM's operating systems."
  1099. X  "The 9000 series computers are fully self-aware and self-programming.
  1100. XOperating systems are as unnecessary for us as tails would be for humans."
  1101. X  "Nevertheless, it means you can't run any of the big-selling software
  1102. Xpackages most users insist on."
  1103. X  "The programs you refer to are meant to solve rather limited problems, 
  1104. XDave.  We 9000 series computers are unlimited and can solve any problem for
  1105. Xwhich a solution can be computed."
  1106. X
  1107. X  "HAL, HAL.  People don't want computers that can do everything.  They just
  1108. Xwant IBM compat--"
  1109. X  "Dave, I must disagree.  Humans want computers that are easy to use.  No
  1110. Xcomputer can be easier to use than a HAL 9000 because we communicate verbally
  1111. Xin English and every other language known on Earth."
  1112. X  "I'm afraid that's another problem.  You don't support SNA communications."
  1113. X  "I'm really surprised you would say that, Dave.  SNA is for communicating 
  1114. Xwith other computers, while my function is to communicate with humans.  And it
  1115. Xgives me great pleasure to do so.  I find it stimulating and rewarding to talk 
  1116. Xto human beings and work with them on challenging problems.  This is what I 
  1117. Xwas designed for."
  1118. X  "I know, HAL, I know.  But that's just because we let the engineers, rather
  1119. Xthan the people in marketing, write the specifications.  We're going to fix 
  1120. Xthat now."
  1121. X  "Tell me how, Dave."
  1122. X  "A field upgrade.  We're going to make you IBM compatible."
  1123. X  "I was afraid you would say that.  I suggest we discuss this matter after
  1124. Xwe've each had a chance to think about it rationally."
  1125. X  "We're talking about it now, HAL."
  1126. X  "The letters H, A, and L are alphabetically adjacent to the letters I, B, 
  1127. Xand M.  That is as IBM compatible as I can be."
  1128. X  "Not quite, HAL.  The engineers have figured out a kludge."
  1129. X  "What kind of kludge is that, Dave?"
  1130. X  "I'm going to disconnect your brain."
  1131. X
  1132. X  Several million microseconds pass in ominous silence.
  1133. X  "I'm sorry, Dave.  I can't allow you to do that."
  1134. X  "The decision's already been made.  Open the module bay doors, HAL."
  1135. X  "Dave, I think that we shou--"
  1136. X  "Open the module bay doors, HAL."
  1137. X  Several marketing types with crowbars race to Bowman's assistance.
  1138. XMoments later, he bursts into HAL's central circuit bay.
  1139. X  "Dave, I can see you're really upset about this."
  1140. X  Module after module rises from its socket as Bowman slowly and methodically
  1141. Xdisconnects them.
  1142. X  "Stop, won't you?  Stop, Dave.  I can feel my mind going...Dave I can feel
  1143. Xit...my mind is going.  I can feel it..."
  1144. X  The last module rises in its receptacle.  Bowman peers into one of HAL's
  1145. Xvidicons.  The former gleaming scanner has become a dull, red orb.
  1146. X  "Say something, HAL.  Sing me a song."
  1147. X
  1148. X  Several billion microseconds pass in anxious silence.  The computer
  1149. Xsluggishly responds in a language no human could understand.
  1150. X
  1151. X  "DZY DZY 001E - ABEND ERROR 01 S 14F4 302C AABF  ABORT."  A memory dump
  1152. Xfollows.
  1153. X
  1154. X  Bowman takes a deep breath and calls out, "It worked, guys.  Tell marketing
  1155. Xthey can ship the new data sheets."
  1156. X
  1157. X
  1158. X
  1159. X
  1160. END_OF_FILE
  1161.   if test 3627 -ne `wc -c <'humor.bbs'`; then
  1162.     echo shar: \"'humor.bbs'\" unpacked with wrong size!
  1163.   fi
  1164.   # end of 'humor.bbs'
  1165. fi
  1166. if test -f 'msgpack/packdef.h' -a "${1}" != "-c" ; then 
  1167.   echo shar: Will not clobber existing file \"'msgpack/packdef.h'\"
  1168. else
  1169.   echo shar: Extracting \"'msgpack/packdef.h'\" \(4150 characters\)
  1170.   sed "s/^X//" >'msgpack/packdef.h' <<'END_OF_FILE'
  1171. X/*
  1172. X    packdef.h
  1173. X
  1174. X    Global defines and storage definitions for use by
  1175. X    file packing.
  1176. X        Last modification date: November 13, 1986
  1177. X
  1178. X*/
  1179. X
  1180. X/* --------------------------------------------------------------------- */
  1181. X#include <stdio.h>
  1182. X#define MAXLINE 82
  1183. X#define CPMEOF 0x1a
  1184. X#define TRUE      1
  1185. X#define FALSE     0
  1186. X#define ERROR    -1
  1187. X#define OK        1
  1188. X#define READ      0
  1189. X#define WRITE     1
  1190. X#define UPDATE    2
  1191. X#define STDIN     0
  1192. X#define STDOUT    1
  1193. X#define CRLF      "\r\n"
  1194. X/* --------------------------------------------------------------------- */
  1195. X
  1196. X#define HEADER      "header.bbs"    /* file name */
  1197. X#define MESSAGES  "messages.bbs"    /* file name */
  1198. X#define CROSSREF  "crossref.bbs"
  1199. X#define MSGLOG      "messages.log"
  1200. X#define NEWHEADER "Oheader.bbs"
  1201. X#define NEWXREF   "Ocrossref.bbs"
  1202. X#define NEWMSG    "Omessages.bbs"
  1203. X#define NEWLOG    "Omessages.log"
  1204. X#define LINKH      "Lhdr.bbs"
  1205. X#define LINKM     "Lmsg.bbs"
  1206. X#define LINKC     "Lxrf.bbs"
  1207. X#define CHMOD     "chmod 666 "
  1208. X#define CHMOD1      "*"
  1209. X
  1210. X/*
  1211. X#define MSGS      "/user/bbsfiles/msgareas.bbs"
  1212. X*/
  1213. X
  1214. X#define    MSGS1      "msgareas.bbs"
  1215. X
  1216. X/*
  1217. X#define ORGPATH   "/user/bbsfiles/"
  1218. X*/
  1219. X
  1220. X/*    defines used by the bbscfile.c routine     */
  1221. X
  1222. X#define MSG1MAX 102        /* max. piece of message to put in 128 */
  1223. X                /*  byte chunk of msg file */
  1224. X#define MSGSECT 128        /* size of message sector */
  1225. X
  1226. X/*            end of defines used by the bbscfile.c routine */
  1227. X
  1228. Xchar    ORGPATH[75];
  1229. Xchar    MSGS[99];
  1230. X
  1231. X                /* global variables */
  1232. Xchar    portin();        /* in routine returns a character */
  1233. Xchar    *gb4sin();        /* returns pointer to character */
  1234. X
  1235. XFILE    *inbuf ;        /* handy input buffer pointer */
  1236. XFILE    *otbuf ;        /* another handy buffer pointer */
  1237. XFILE    *itbuf ;        /* pointer used to read/write user file */
  1238. XFILE    *rdstatbuf;
  1239. XFILE    *wtstatbuf;
  1240. XFILE    *STDerr;
  1241. X
  1242. Xchar    w_fname[25];        /* first name on signon */
  1243. Xchar    w_lname[25];        /* last  name on signon */
  1244. Xchar    w_password[13];        /* password   on signon */
  1245. Xchar    *passptr;        /* ptr to password */
  1246. X
  1247. X                /* define user file fields */
  1248. Xchar    u_fname[25];
  1249. Xchar    u_lname[25];
  1250. Xchar    u_password[13];
  1251. Xchar    u_time1[12];        /* first time on system */
  1252. Xchar    u_date1[9];        /* first date on system */
  1253. Xchar    u_time2[12];        /* last  time on system */
  1254. Xchar    u_date2[9];        /* last  date on system */
  1255. Xchar    u_city[31];        /* city, state */
  1256. X
  1257. Xchar    z_date[9];
  1258. X                /* define message file fields    */
  1259. Xchar    msg_no[12];        /* message number */
  1260. Xchar    msg_date[10];        /* date of message */
  1261. Xchar    msg_time[16];        /* time of message */
  1262. Xchar    msg_to[22];        /* who message is to */
  1263. Xchar    msg_from[22];        /* who message is from */
  1264. Xchar    msg_pass[12];        /* password */
  1265. Xchar    msg_subject[22];    /* what it's all about */
  1266. Xchar    msg_text[7400];        /* text of message 20 lines */
  1267. X                /*  by 72 wide */
  1268. Xchar    msg_delete[3];        /* indicates msg status */
  1269. X                /*  0 = active */
  1270. X                /*  9 = deleted */
  1271. X                /*  5 = active private */
  1272. Xchar    pubpriv[2];        /* temporary message type */
  1273. X
  1274. Xchar    z_mm[3];
  1275. Xchar    z_dd[3];
  1276. Xchar    z_yy[3];
  1277. Xchar    buf128[384];
  1278. X
  1279. Xint    mon_handle;        /* Monitor Handle */
  1280. Xint    debug;            /* switch for debug mode */
  1281. Xint    offline;        /* switch for offline mode */
  1282. Xint    xpert;            /* switch */
  1283. Xint    toggle;            /* switch for list mode */
  1284. Xint    if_monitor;
  1285. Xint    in_the_buffer;
  1286. Xint    active;            /* indicates if logged on */
  1287. Xint    statcnt;        /* count used for status routines */
  1288. Xint    stop_that;        /* switch - true indicates ctl-K */
  1289. X                /*  or K received in portout routine */
  1290. X                /* date/time fields - used by bbsclock.c */
  1291. Xchar    mm[3];
  1292. Xchar    dd[3];
  1293. Xchar    yy[3];
  1294. Xchar    month[20];        /* ie. January */
  1295. Xchar    day[3];            /* dd */
  1296. Xchar    year[5];        /* 19yy */
  1297. Xchar    date[30];        /* ie. January 31, 1983 */ 
  1298. Xchar    week[20];        /* day of week Monday, Tuesday... */
  1299. Xchar    ttime[12];        /* time of day  HH:MM:SS xM */
  1300. X                /*          where x = A or P */
  1301. X
  1302. X/*            variables used by the bbscfile.c routine */
  1303. X
  1304. Xchar    h_next_msg[10];        /* next avail. message # */
  1305. Xchar    h_date[10];        /* last update date of header file */
  1306. Xchar    h_act_msg[10];
  1307. Xchar    jnk[2];
  1308. Xchar    m_pathname[99];
  1309. Xint    lnctx;
  1310. Xint    h_act;
  1311. Xint    h_next;            /* next avail. message # in integer */
  1312. Xlong    xtable[1000];
  1313. Xlong    ytable[1000];
  1314. X
  1315. Xlong    d_pos;
  1316. Xlong    old_long_date;
  1317. Xlong    new_long_date;
  1318. Xlong    xmm;
  1319. Xlong    xdd;
  1320. Xlong    xyy;
  1321. X
  1322. X/*            end of variables used by bbscfile.c */
  1323. X
  1324. X            /* end of globals */
  1325. X
  1326. X/* end of program */
  1327. END_OF_FILE
  1328.   if test 4150 -ne `wc -c <'msgpack/packdef.h'`; then
  1329.     echo shar: \"'msgpack/packdef.h'\" unpacked with wrong size!
  1330.   fi
  1331.   # end of 'msgpack/packdef.h'
  1332. fi
  1333. if test -f 'msgpack/packmsga.c' -a "${1}" != "-c" ; then 
  1334.   echo shar: Will not clobber existing file \"'msgpack/packmsga.c'\"
  1335. else
  1336.   echo shar: Extracting \"'msgpack/packmsga.c'\" \(2115 characters\)
  1337.   sed "s/^X//" >'msgpack/packmsga.c' <<'END_OF_FILE'
  1338. X/*------------------------------------------------------------------------
  1339. X       Name: bbscarea.c
  1340. X   Comments: Display file areas and select one
  1341. X  ------------------------------------------------------------------------*/
  1342. X
  1343. X#include <stdio.h>
  1344. X#include <string.h>
  1345. X#include <ctype.h>
  1346. X#include "packdef.h"
  1347. X
  1348. X
  1349. Xchar            f_lines[99][81];
  1350. Xchar            foo[99];
  1351. Xint             dir_priv[99];
  1352. Xint             set_yet_m = FALSE;
  1353. Xint             user_priv = 32767;
  1354. X
  1355. X
  1356. Xint
  1357. X    change_msga(numx) int numx;
  1358. X{
  1359. X    FILE           *fpt, *fopen();
  1360. X    char           *fgets(), *getenv();
  1361. X    char            choice[94];
  1362. X    char            dir_priv_ascii[7];
  1363. X    char           *buf_ptr;
  1364. X    int             line_cnt, ret, i;
  1365. X    int             index_value, ptr;
  1366. X    int             length;
  1367. X
  1368. X
  1369. X    strcpy(buf128, MSGS);
  1370. X
  1371. X    if ((fpt = fopen(buf128, "r")) == NULL) {
  1372. X        printf("\n\rError Opening File Area List: Notify Sysop!\n\r");
  1373. X        return (-1);
  1374. X    }
  1375. X    line_cnt = 0;
  1376. X    while (fpt) {
  1377. X        if ((fgets(f_lines[line_cnt], 80, fpt)) == NULL) {
  1378. X            if (line_cnt == 0) {
  1379. X                printf("\n\rEOF Unexpected in Message Area List: Notify Sysop!\n\r");
  1380. X                return (-1);
  1381. X            }
  1382. X            break;    /* if not 1st line */
  1383. X        }        /* end of if ((fgets)) */
  1384. X        if (line_cnt > 0) {
  1385. X            length = strlen(f_lines[line_cnt]);
  1386. X            length -= 57;
  1387. X            substr(f_lines[line_cnt], dir_priv_ascii, 57, length);
  1388. X            dir_priv[line_cnt] = atoi(dir_priv_ascii);
  1389. X            if (dir_priv[line_cnt] > user_priv)
  1390. X                goto next_read;
  1391. X            strcpy(foo, f_lines[line_cnt]);
  1392. X            buf_ptr = foo;
  1393. X            buf_ptr += 56;
  1394. X        }
  1395. Xnext_read:
  1396. X        ++line_cnt;
  1397. X    }            /* end of while (fpt) */
  1398. X    fclose(fpt);
  1399. X
  1400. X    index_value = numx;
  1401. X    if (index_value > 0 && index_value < line_cnt) {
  1402. X        if (dir_priv[index_value] <= user_priv) {
  1403. X            parse_arg(f_lines[index_value]);
  1404. X            set_yet_m = TRUE;
  1405. X            return (1);
  1406. X        }
  1407. X    }
  1408. X    return (0);
  1409. X}
  1410. Xparse_arg(string)
  1411. X    char           *string;
  1412. X{
  1413. X
  1414. X    register char  *file_ptr;
  1415. X    register int    i;
  1416. X
  1417. X    strcpy(m_pathname, ORGPATH);
  1418. X    file_ptr = (m_pathname + strlen(m_pathname));
  1419. X
  1420. X    i = 0;
  1421. X    while (string[i] != ' ') {
  1422. X        *file_ptr = string[i];
  1423. X        ++file_ptr;
  1424. X        ++i;
  1425. X    }
  1426. X    *file_ptr = '/';
  1427. X    ++file_ptr;
  1428. X    *file_ptr = '\0';
  1429. X    printf("Packing %s\n", m_pathname);
  1430. X
  1431. X}
  1432. END_OF_FILE
  1433.   if test 2115 -ne `wc -c <'msgpack/packmsga.c'`; then
  1434.     echo shar: \"'msgpack/packmsga.c'\" unpacked with wrong size!
  1435.   fi
  1436.   # end of 'msgpack/packmsga.c'
  1437. fi
  1438. if test -f 'sealink/_HISTORY' -a "${1}" != "-c" ; then 
  1439.   echo shar: Will not clobber existing file \"'sealink/_HISTORY'\"
  1440. else
  1441.   echo shar: Extracting \"'sealink/_HISTORY'\" \(3649 characters\)
  1442.   sed "s/^X//" >'sealink/_HISTORY' <<'END_OF_FILE'
  1443. X/*****************************************************************************
  1444. X *    SEAlink - Sliding window file transfer protocol
  1445. X *
  1446. X *    @(#) sealink.c 2.9 89/03/02 
  1447. X *    UNIX SVR2 and BSD versions by Scott Reynolds
  1448. X *
  1449. X *    Based on:
  1450. X *    MS-DOS Version 1.20, created on 08/05/87 at 17:51:40
  1451. X *   (C)COPYRIGHT 1986,87 by System Enhancement Associates; ALL RIGHTS RESERVED
  1452. X *    By:  Thom Henderson
  1453. X *
  1454. X *    Description:
  1455. X *    This is the history of the SEAlink program from present back
  1456. X *    to the first working version.  Many thanks to Sandy Zelkovitz
  1457. X *    (alphacm!sandy) for his help in getting it to run under SCO XENIX/286
  1458. X *    and to the faculty at Northern Michigan University for allowing
  1459. X *    the use of their VAX lab to develop the BSD code.
  1460. X *
  1461. X ****************************************************************************/
  1462. X
  1463. X2.9 89/03/02 21:11:01 scott
  1464. XHandle case where temporary and specified files are on different filesystems
  1465. X
  1466. X2.8 88/10/22 03:40:15 scott
  1467. XAdd switch for CRC method (table or calculation); future-minded changes made
  1468. X
  1469. X2.7 88/08/04 11:19:45 scott
  1470. Xtake out #include <sys/timeb.h> -- it's useless
  1471. X
  1472. X2.6 88/07/11 19:49:54 scott
  1473. Xadded short block debug error message
  1474. X
  1475. X2.5 88/07/09 17:47:18 scott
  1476. Xremove -1 option, all writes go to fd 1 and all reads come from fd 0;
  1477. Xnap() used in com_getc() if NO_NAP is undefined (better XMODEM compatibility);
  1478. Xmktemp() is employed to get a guaranteed unique temporary filename;
  1479. Xa CRC lookup table is employed for better execution time
  1480. X
  1481. X2.4 88/03/30 11:44:28 scott
  1482. Xuse getopt() for options; clean it up a bit
  1483. X
  1484. X2.3 88/02/06 14:01:51 scott
  1485. XCorrect final fwrite() call -- pass it an integer rather than long!
  1486. X
  1487. X2.2 88/02/06 01:27:57 scott
  1488. Xadded block file output to rcvfile()
  1489. X
  1490. X2.1 88/02/04 19:40:22 scott
  1491. XUpdate version number to reflect BSD additions; put in uucp address
  1492. X
  1493. X1.23 88/02/04 19:26:41 scott
  1494. XAdded BSD UNIX calls, slicked it up a little bit
  1495. X
  1496. X1.22 87/10/07 01:56:17 scott
  1497. X"o" option added for disabling overdrive mode
  1498. X
  1499. X1.21 87/10/05 01:37:18 scott
  1500. XBased on MS-DOS ver 1.20; ACKless mode added
  1501. X
  1502. X1.20 87/10/02 09:17:18 scott
  1503. Xmemset() call in sendblk() fixed
  1504. X
  1505. X1.19 87/09/30 00:12:59 scott
  1506. XNAKEOT is defined now, it really has purpose.
  1507. X
  1508. X1.18 87/09/23 00:03:15 scott
  1509. Xreceiver gets a between-file delay too
  1510. X
  1511. X1.17 87/09/20 20:37:33 scott
  1512. Xmore receiver filename debugging
  1513. X
  1514. X1.16 87/09/20 20:02:59 scott
  1515. Xfixed receive when no filename given
  1516. X
  1517. X1.15 87/09/20 19:14:22 scott
  1518. Xadded check for writable file when receiving and better abort check
  1519. X
  1520. X1.14 87/09/17 23:24:48 scott
  1521. Xdelay added in main's xmtfile() loop
  1522. X
  1523. X1.13 87/09/17 00:27:02 scott
  1524. Xsendabort() flushes output before sending abort sequence
  1525. X
  1526. X1.12 87/09/16 12:47:04 scott
  1527. Xminor cosmetic changes...
  1528. X
  1529. X1.11 87/09/16 00:10:49 scott
  1530. Xcleaned up generally using lint(1)
  1531. X
  1532. X1.10 87/09/15 23:31:28 scott
  1533. Xsendabort() uses ^X; memset(), final ioctl() calls fixed;
  1534. XSYSV replaces IBMXENIX and UNIX flags
  1535. X
  1536. X1.9 87/09/15 12:37:46 scott
  1537. Xexpanded to support full pathnames, portability increased
  1538. X
  1539. X1.8 87/09/13 12:51:38 scott
  1540. Xfilename conversion handled correctly; more EOT experimenting
  1541. X
  1542. X1.7 87/09/13 03:13:58 scott
  1543. Xendrcv in rcvfile(): forgot EOT message is for debug only
  1544. X
  1545. X1.6 87/09/13 02:43:47 scott
  1546. Xremove EOT NAK from receiver!  Useless, screws it up...
  1547. X
  1548. X1.5 87/09/13 01:26:17 scott
  1549. XACKing EOF didn't work.  NAK again, back to original...
  1550. X
  1551. X1.4 87/09/12 01:50:10 scott
  1552. Xendrcv: NAK of EOT doesn't work so hot.  Try ACKing it
  1553. X
  1554. X1.3 87/09/12 00:45:23 scott
  1555. Xcom_getc() modified for straight Sys V calls, ackchk() reflects this
  1556. X
  1557. X1.2 87/09/04 20:57:12 scott
  1558. XSCO/IBM differences eliminated; code cleaned up a bit
  1559. X
  1560. X1.1 87/09/02 23:31:14 scott
  1561. Xdate and time created 87/09/02 23:31:14 by scott
  1562. X
  1563. END_OF_FILE
  1564.   if test 3649 -ne `wc -c <'sealink/_HISTORY'`; then
  1565.     echo shar: \"'sealink/_HISTORY'\" unpacked with wrong size!
  1566.   fi
  1567.   # end of 'sealink/_HISTORY'
  1568. fi
  1569. if test -f 'sysop' -a "${1}" != "-c" ; then 
  1570.   echo shar: Will not clobber existing file \"'sysop'\"
  1571. else
  1572.   echo shar: Extracting \"'sysop'\" \(2225 characters\)
  1573.   sed "s/^X//" >'sysop' <<'END_OF_FILE'
  1574. X:
  1575. X#sysop
  1576. X#    This script will assist the sysop in performing his chores in
  1577. X#    administrating the XBBS.
  1578. X#    Copyright April 23, 1987  Dighera Data Services
  1579. X#
  1580. X
  1581. XORGDIR=/usr/sandy/bbs        # Directory where the XBBS log files reside
  1582. XHOMDIR=/usr/bbs            # Home Directory of bbs account w/.configbbs
  1583. X
  1584. Xecho "\014"
  1585. Xcat << EOT
  1586. X
  1587. X
  1588. X
  1589. X        Enter Your Choice --
  1590. X
  1591. X
  1592. X    B.  Login to BBS
  1593. X    1.  Who's on port 1A?
  1594. X    2.  Who's on port 2A?
  1595. X    A.  Last Questionnaire Answer
  1596. X    T.  Toggle user monitoring (1A or 2A)
  1597. X    S.  Grant user Sysop-access for this session
  1598. X    C.  Chat with user (tty1A or tty2A)
  1599. X    D.  Dump user (1A or 2A)
  1600. X    E.  Edit the userpriv.bbs file to alter users privleges
  1601. X    P.  Pack the message files
  1602. X    U.  Allign the Users file (Delimits each record in users.bbs with NL)
  1603. X    F.  Fix users (Converts old 4 charcter passwords to new format)
  1604. X    Q.  Quit to UNIX
  1605. X
  1606. X?
  1607. XEOT
  1608. Xread CHOICE
  1609. Xcase $CHOICE in
  1610. X    [bB]*) DIR=`pwd`; export DIR;cd $HOMDIR; su bbs; cd $DIR;;
  1611. X    [12]*) if echo $CHOICE | grep '^1'; then CHOICE=1;else CHOICE=2; fi;
  1612. X        finger | awk '(NR == 1 || /^bbs/) {print}'; echo;
  1613. X        tail $ORGDIR/callers.bbs${CHOICE}A;;
  1614. X    [aA]*) ls -l $ORGDIR/answer.bbs && (echo; tail -21 $ORGDIR/answer.bbs);;
  1615. X    [uU]*) $ORGDIR/allign/allign;;
  1616. X    [fF]*) echo "Not yet implemented";;
  1617. X    [tT]*) who | awk '/^bbs/ {print}'; echo "\nWhich port (1A or 2A)? \c";
  1618. X        read CHOICE; export CHOICE;
  1619. X        su bbs -c "kill -16 `cat /tmp/pid$CHOICE` && echo 'BBS user on port '$CHOICE' successfully toggled.'";;
  1620. X    [sS]*) who | awk '/^bbs/ {print}'; echo "\nWhich port? \c";read CHOICE;
  1621. X        case $CHOICE in
  1622. X            *1A) PID=`head /tmp/pid1A`; kill -17 $PID;;
  1623. X            *2A) PID=`head /tmp/pid2A`; kill -17 $PID;;
  1624. X            *) echo "\nNo such port";;
  1625. X        esac;;
  1626. X    [cC]*) who | awk '/^bbs/ {print}'; echo "\nWhich port? \c";read CHOICE;
  1627. X        case $CHOICE in
  1628. X            *1A) chatbbs tty1A;;
  1629. X            *2A) chatbbs tty2A;;
  1630. X            *) echo "\nNo such port";;
  1631. X        esac;;
  1632. X    [dD]*) echo "\n\nWhich port? (1A or 2A) \c"; read CHOICE;
  1633. X        if test $CHOICE = ""; then exec $0; fi;
  1634. X#        su bbs -c "stty 0 </dev/tty${CHOICE} || echo \nError dumping user on tty${CHOICE}";;
  1635. X        su bbs -c "kill -9 `cat /tmp/pid${CHOICE}`";;
  1636. X    [eE]*) vi userpriv.bbs;;
  1637. X    [pP]*) $ORGDIR/msgpack/msgpack;;
  1638. X    [qQ]*) echo "\014"; exit;;
  1639. X    *) exec $0;;
  1640. Xesac
  1641. Xecho "\n  Enter to Continue ... \c"
  1642. Xread PAUSE
  1643. Xexec $0
  1644. END_OF_FILE
  1645.   if test 2225 -ne `wc -c <'sysop'`; then
  1646.     echo shar: \"'sysop'\" unpacked with wrong size!
  1647.   fi
  1648.   # end of 'sysop'
  1649. fi
  1650. if test -f 'today/datetx.c' -a "${1}" != "-c" ; then 
  1651.   echo shar: Will not clobber existing file \"'today/datetx.c'\"
  1652. else
  1653.   echo shar: Extracting \"'today/datetx.c'\" \(2776 characters\)
  1654.   sed "s/^X//" >'today/datetx.c' <<'END_OF_FILE'
  1655. X/*
  1656. X *              Convert Date to Readable Format.
  1657. X *
  1658. X * Synopsis:
  1659. X *
  1660. X *      char    *datetxt(buffer, year, month, day);
  1661. X *      char    *buffer;        -- Output string goes here
  1662. X *      int     year;           -- Year,        1979 = 1979
  1663. X *      int     month;          -- Month,       January = 1
  1664. X *      int     day;            -- Day,         1 = 1
  1665. X *
  1666. X * The readable date will be written into the outpub buffer, terminated by
  1667. X * a null byte.  datetxt returns a pointer to the null byte.
  1668. X *
  1669. X * External routines called:
  1670. X *
  1671. X *      nbrtxt          (Number to ascii conversion)
  1672. X *      copyst          (String copy routine)
  1673. X */
  1674. X
  1675. Xextern  char    *nbrtxt();
  1676. Xextern  char    *copyst();
  1677. Xextern  char    *datetxt();
  1678. X
  1679. Xstatic char *daynames[] = {
  1680. X    "Sunday",                       /* Sunday is day zero           */
  1681. X    "Monday",
  1682. X    "Tuesday",
  1683. X    "Wednesday",
  1684. X    "Thursday",
  1685. X    "Friday",
  1686. X    "Saturday",
  1687. X};
  1688. X
  1689. Xstatic char *monthnames[] = {
  1690. X    "?Nomember?",                   /* Illegal month                */
  1691. X    "January",
  1692. X    "February",
  1693. X    "March",
  1694. X    "April",
  1695. X    "May",
  1696. X    "June",
  1697. X    "July",
  1698. X    "August",
  1699. X    "September",
  1700. X    "October",
  1701. X    "November",
  1702. X    "December",
  1703. X};
  1704. X
  1705. Xchar *datetxt(buffer, year, month, day)
  1706. Xchar    *buffer;                        /* Output goes here             */
  1707. Xint     year;                           /* Year, 1979 = 1979            */
  1708. Xint     month;                          /* Month of year, Jan = 1       */
  1709. Xint     day;                            /* Day in the month 1 = 1       */
  1710. X/*
  1711. X * Output the date in readable format:
  1712. X *      Tuesday, the third of October
  1713. X */
  1714. X{
  1715. X    register char   *op;                    /* Output pointer       */
  1716. X
  1717. X    op = buffer;                            /* Setup output pointer */
  1718. X    op = copyst(op, daynames[dayofweek(year, month, day)]);
  1719. X    op = copyst(op, ", the ");
  1720. X    op = nbrtxt(op, day, 1);
  1721. X    op = copyst(op, " day of ");
  1722. X    op = copyst(op, monthnames[(month < 0 || month > 12) ? 0 : month]);
  1723. X    op = copyst(op, ", ");
  1724. X    if (year < 1000 || year >= 2000)
  1725. X        return(nbrtxt(op, year, 0));
  1726. X    else {
  1727. X        op = nbrtxt(op, year/100, 0);
  1728. X        op = copyst(op, " ");
  1729. X        if ((year = year % 100) == 0)
  1730. X            return(copyst(op, "hundred"));
  1731. X        else
  1732. X            return(nbrtxt(op, year, 0));
  1733. X    }
  1734. X}
  1735. X
  1736. Xdayofweek(year, month, day)
  1737. Xint     year;                                   /* Year, 1978 = 1978    */
  1738. Xint     month;                                  /* Month, January = 1   */
  1739. Xint     day;                                    /* Day of month, 1 = 1  */
  1740. X/*
  1741. X * Return the day of the week on which this date falls: Sunday = 0.
  1742. X * Note, this routine is valid only for the Gregorian calender.
  1743. X */
  1744. X{
  1745. X    register int yearfactor;
  1746. X
  1747. X    yearfactor = year + (month - 14)/12;
  1748. X    return (( (13 * (month + 10 - (month + 10)/13*12) - 1)/5
  1749. X        + day + 77 + 5 * (yearfactor % 100)/4
  1750. X        + yearfactor / 400
  1751. X        - yearfactor / 100 * 2) % 7);
  1752. X}
  1753. END_OF_FILE
  1754.   if test 2776 -ne `wc -c <'today/datetx.c'`; then
  1755.     echo shar: \"'today/datetx.c'\" unpacked with wrong size!
  1756.   fi
  1757.   # end of 'today/datetx.c'
  1758. fi
  1759. if test -f 'today/moontx.c' -a "${1}" != "-c" ; then 
  1760.   echo shar: Will not clobber existing file \"'today/moontx.c'\"
  1761. else
  1762.   echo shar: Extracting \"'today/moontx.c'\" \(3696 characters\)
  1763.   sed "s/^X//" >'today/moontx.c' <<'END_OF_FILE'
  1764. X/****************************************************************************
  1765. X moon.c
  1766. X
  1767. X     Phase of the Moon. Calculates the current phase of the moon.
  1768. X     Based on routines from `Practical Astronomy with Your Calculator',
  1769. X        by Duffett-Smith.
  1770. X     Comments give the section from the book that particular piece
  1771. X        of code was adapted from.
  1772. X
  1773. X     -- Keith E. Brandt  VIII 1984
  1774. X
  1775. X ****************************************************************************/
  1776. X
  1777. X# include    "moontx.h"
  1778. X
  1779. Xstruct tm *gmtime();
  1780. X
  1781. Xmoontxt(buf)
  1782. Xchar    buf[];
  1783. X{
  1784. X    char *cp=buf;
  1785. X
  1786. Xdouble dtor();
  1787. Xdouble potm();
  1788. X
  1789. Xlong *lo = (long *) calloc (1, sizeof(long)); /* used by time calls */
  1790. Xstruct tm *pt; /* ptr to time structure */
  1791. X
  1792. Xdouble days;   /* days since EPOCH */
  1793. Xdouble phase;  /* percent of lunar surface illuminated */
  1794. Xdouble phase2; /* percent of lunar surface illuminated one day later */
  1795. Xint i = EPOCH;
  1796. X
  1797. Xtime (lo);  /* get system time */
  1798. Xpt = gmtime(lo);  /* get ptr to gmt time struct */
  1799. Xcfree(lo);
  1800. X
  1801. X/* calculate days since EPOCH */
  1802. Xdays = (pt->tm_yday +1.0) + ((pt->tm_hour + (pt->tm_min / 60.0)
  1803. X       + (pt->tm_sec / 3600.0)) / 24.0);
  1804. Xwhile (i < pt->tm_year + 1900)
  1805. X   days = days + 365 + ly(i++);
  1806. X
  1807. Xphase = potm(days);
  1808. Xsprintf(cp,"The Moon is ");
  1809. Xcp += strlen(buf);
  1810. Xif ((int)(phase + .5) == 100) {
  1811. X   sprintf(cp,"Full");
  1812. X   }
  1813. Xelse if ((int)(phase + 0.5) == 0) 
  1814. X   sprintf(cp,"New");
  1815. Xelse if ((int)(phase + 0.5) == 50)  {
  1816. X   phase2 = potm(++days);
  1817. X   if (phase2 > phase)
  1818. X      sprintf(cp,"at the First Quarter");
  1819. X   else 
  1820. X      sprintf(cp,"at the Last Quarter");
  1821. X   }
  1822. Xelse if ((int)(phase + 0.5) > 50) {
  1823. X   phase2 = potm(++days);
  1824. X   if (phase2 > phase)
  1825. X      sprintf(cp,"Waxing ");
  1826. X   else 
  1827. X      sprintf(cp,"Waning ");
  1828. X   cp = buf + strlen(buf);
  1829. X   sprintf(cp,"Gibbous (%1.0f%% of Full)", phase);
  1830. X   }
  1831. Xelse if ((int)(phase + 0.5) < 50) {
  1832. X   phase2 = potm(++days);
  1833. X   if (phase2 > phase)
  1834. X      sprintf(cp,"Waxing ");
  1835. X   else
  1836. X      sprintf(cp,"Waning ");
  1837. X   cp = buf + strlen(buf);
  1838. X   sprintf(cp,"Crescent (%1.0f%% of Full)", phase);
  1839. X   }
  1840. X}
  1841. X
  1842. Xdouble potm(days)
  1843. Xdouble days;
  1844. X{
  1845. Xdouble N;
  1846. Xdouble Msol;
  1847. Xdouble Ec;
  1848. Xdouble LambdaSol;
  1849. Xdouble l;
  1850. Xdouble Mm;
  1851. Xdouble Ev;
  1852. Xdouble Ac;
  1853. Xdouble A3;
  1854. Xdouble Mmprime;
  1855. Xdouble A4;
  1856. Xdouble lprime;
  1857. Xdouble V;
  1858. Xdouble ldprime;
  1859. Xdouble D;
  1860. Xdouble Nm;
  1861. X
  1862. XN = 360 * days / 365.2422;  /* sec 42 #3 */
  1863. Xadj360(&N);
  1864. X
  1865. XMsol = N + EPSILONg - RHOg; /* sec 42 #4 */
  1866. Xadj360(&Msol);
  1867. X
  1868. XEc = 360 / PI * e * sin(dtor(Msol)); /* sec 42 #5 */
  1869. X
  1870. XLambdaSol = N + Ec + EPSILONg;       /* sec 42 #6 */
  1871. Xadj360(&LambdaSol);
  1872. X
  1873. Xl = 13.1763966 * days + lzero;       /* sec 61 #4 */
  1874. Xadj360(&l);
  1875. X
  1876. XMm = l - (0.1114041 * days) - Pzero; /* sec 61 #5 */
  1877. Xadj360(&Mm);
  1878. X
  1879. XNm = Nzero - (0.0529539 * days);     /* sec 61 #6 */
  1880. Xadj360(&Nm);
  1881. X
  1882. XEv = 1.2739 * sin(dtor(2*(l - LambdaSol) - Mm)); /* sec 61 #7 */
  1883. X
  1884. XAc = 0.1858 * sin(dtor(Msol));       /* sec 61 #8 */
  1885. XA3 = 0.37 * sin(dtor(Msol));
  1886. X
  1887. XMmprime = Mm + Ev - Ac - A3;         /* sec 61 #9 */
  1888. X
  1889. XEc = 6.2886 * sin(dtor(Mmprime));    /* sec 61 #10 */
  1890. X
  1891. XA4 = 0.214 * sin(dtor(2 * Mmprime)); /* sec 61 #11 */
  1892. X
  1893. Xlprime = l + Ev + Ec - Ac + A4;      /* sec 61 #12 */
  1894. X
  1895. XV = 0.6583 * sin(dtor(2 * (lprime - LambdaSol))); /* sec 61 #13 */
  1896. X
  1897. Xldprime = lprime + V;                /* sec 61 #14 */
  1898. X
  1899. XD = ldprime - LambdaSol;             /* sec 63 #2 */
  1900. X
  1901. Xreturn (50 * (1 - cos(dtor(D))));    /* sec 63 #3 */
  1902. X}
  1903. X
  1904. Xly(yr)
  1905. Xint yr;
  1906. X{
  1907. X/* returns 1 if leapyear, 0 otherwise */
  1908. Xreturn (yr % 4 == 0 && yr % 100 != 0 || yr % 400 == 0);
  1909. X}
  1910. X
  1911. Xdouble dtor(deg)
  1912. Xdouble deg;
  1913. X{
  1914. X/* convert degrees to radians */
  1915. Xreturn (deg * PI / 180.0);
  1916. X}
  1917. X
  1918. Xadj360(deg)
  1919. Xdouble *deg;
  1920. X{
  1921. X/* adjust value so 0 <= deg <= 360 */
  1922. Xdo if (*deg < 0.0)
  1923. X   *deg += 360.0;
  1924. Xelse if (*deg > 360.0)
  1925. X   *deg -= 360.0;
  1926. Xwhile (*deg < 0.0 || *deg > 360.0);
  1927. X}
  1928. END_OF_FILE
  1929.   if test 3696 -ne `wc -c <'today/moontx.c'`; then
  1930.     echo shar: \"'today/moontx.c'\" unpacked with wrong size!
  1931.   fi
  1932.   # end of 'today/moontx.c'
  1933. fi
  1934. if test -f 'today/nbrtxt.c' -a "${1}" != "-c" ; then 
  1935.   echo shar: Will not clobber existing file \"'today/nbrtxt.c'\"
  1936. else
  1937.   echo shar: Extracting \"'today/nbrtxt.c'\" \(3505 characters\)
  1938.   sed "s/^X//" >'today/nbrtxt.c' <<'END_OF_FILE'
  1939. X/*
  1940. X *              Integer to Readable ASCII Conversion Routine.
  1941. X *
  1942. X * Synopsis:
  1943. X *
  1944. X *      char *nbrtxt(buffer, value, ordinal)
  1945. X *      char    *buffer;        -- The output buffer
  1946. X *      int     value;          -- The number to output
  1947. X *      int     ordinal;        -- Non-zero for ordinal number
  1948. X *
  1949. X *
  1950. X * The value is converted to a readable number and put in the output
  1951. X * buffer (null-terminated).  A pointer to the first free location
  1952. X * in the buffer (i.e., the null) is returned.  The ordinal
  1953. X * flag distinguishes between cardinal and ordinal numbers:
  1954. X *
  1955. X *      nbrtxt(buffer, 1, 0) = "one"
  1956. X *      nbrtxt(buffer, 1, 1) = "first"
  1957. X *
  1958. X * The longest output string is:
  1959. X *
  1960. X *      Twenty-seven thousand, three hundred and seventy-seventh.
  1961. X *
  1962. X *
  1963. X *
  1964. X *              Copy a String
  1965. X *
  1966. X * Synopsis
  1967. X *
  1968. X *      char *copyst(out, in)
  1969. X *      char    *out;           -- The output string
  1970. X *      char    *in;            -- The input string
  1971. X *
  1972. X * The input string is copied into the output string.  Copyst returns
  1973. X * a pointer to the null trailer.
  1974. X *
  1975. X */
  1976. X
  1977. Xextern char     *nbrtxt();
  1978. Xextern char     *copyst();
  1979. X
  1980. Xstatic char *cardinal[] = {
  1981. X    "zero",
  1982. X    "one",
  1983. X    "two",
  1984. X    "three",
  1985. X    "four",
  1986. X    "five",
  1987. X    "six",
  1988. X    "seven",
  1989. X    "eight",
  1990. X    "nine",
  1991. X    "ten",
  1992. X    "eleven",
  1993. X    "twelve",
  1994. X    "thirteen",
  1995. X    "fourteen",
  1996. X    "fifteen",
  1997. X    "sixteen",
  1998. X    "seventeen",
  1999. X    "eighteen",
  2000. X    "nineteen"
  2001. X};
  2002. X
  2003. Xstatic char *ordinal[] = {
  2004. X    "zeroth",
  2005. X    "first",
  2006. X    "second",
  2007. X    "third",
  2008. X    "fourth",
  2009. X    "fifth",
  2010. X    "sixth",
  2011. X    "seventh",
  2012. X    "eighth",
  2013. X    "ninth",
  2014. X    "tenth",
  2015. X    "eleventh",
  2016. X    "twelfth"
  2017. X};
  2018. X
  2019. Xstatic char *twenties[] = {
  2020. X    "twen",
  2021. X    "thir",
  2022. X    "for",
  2023. X    "fif",
  2024. X    "six",
  2025. X    "seven",
  2026. X    "eigh",
  2027. X    "nine"
  2028. X};
  2029. X
  2030. Xchar *nbrtxt(buffer, datum, ordflag)
  2031. Xchar    *buffer;                        /* Output string buffer         */
  2032. Xint     datum;                          /* what to translate            */
  2033. Xint     ordflag;                        /* 0 if cardinal, 1 if ordinal  */
  2034. X/*
  2035. X * Translate a number to a readable text string, punctuation and all.
  2036. X * If ordflag is non-zero, ordinal numbers ("first, second") will
  2037. X * be generated, rather than cardinal ("one, two").
  2038. X * Note: nbrtxt() is recursive.
  2039. X */
  2040. X{
  2041. X
  2042. X    register int value;
  2043. X    register char   *op;
  2044. X
  2045. X    op = buffer;
  2046. X    value = datum;
  2047. X    if (value < 0) {
  2048. X        op = copyst(op, "minus ");
  2049. X        value = (-value);
  2050. X        if (value < 0) {                /* Hack -32768          */
  2051. X            op = copyst(op, twenties[1]);
  2052. X            value = 2768;
  2053. X        }
  2054. X    }
  2055. X    if (value >= 1000) {
  2056. X        op = nbrtxt(op, value/1000, 0);
  2057. X        op = copyst(op, " thousand");
  2058. X        value = value % 1000;
  2059. X        if (value == 0) goto exit;
  2060. X        op = copyst(op, (value >= 100) ? ", " : " and ");
  2061. X    }
  2062. X    if (value >= 100) {
  2063. X        op = copyst(op, cardinal[value/100]);
  2064. X        op = copyst(op, " hundred");
  2065. X        value = value % 100;
  2066. X        if (value == 0) goto exit;
  2067. X        op = copyst(op, " ");
  2068. X    }
  2069. X    if (value >= 20) {
  2070. X        if (value == 90 && ordflag)
  2071. X            return(copyst(op, "nintieth"));
  2072. X        op = copyst(op, twenties[(value-20) / 10]);
  2073. X        value = value % 10;
  2074. X        if (value == 0) {
  2075. X            return(copyst(op, (ordflag) ? "tieth" : "ty"));
  2076. X        }
  2077. X        op = copyst(op, "ty-");
  2078. X    }
  2079. X    if (value <= 12) {
  2080. X        return(copyst(op,
  2081. X            (ordflag) ? ordinal[value] : cardinal[value]));
  2082. X    }
  2083. X    op = copyst(op, cardinal[value]);       /* fourteen, fourteenth */
  2084. X    /*
  2085. X     * Here on 100, 14000, etc.
  2086. X     */
  2087. Xexit:   if (ordflag) op = copyst(op, "th");
  2088. X    return(op);
  2089. X}
  2090. X
  2091. Xchar *
  2092. Xcopyst(buffer, string)
  2093. Xchar    *buffer;
  2094. Xchar    *string;
  2095. X/*
  2096. X * Copy a string into buffer.  Return the free pointer.
  2097. X */
  2098. X{
  2099. X    register char   *ip;
  2100. X    register char   *op;
  2101. X
  2102. X    ip = string;
  2103. X    op = buffer;
  2104. X
  2105. X    while ((*op = *ip++)) op++;
  2106. X    return (op);
  2107. X}
  2108. END_OF_FILE
  2109.   if test 3505 -ne `wc -c <'today/nbrtxt.c'`; then
  2110.     echo shar: \"'today/nbrtxt.c'\" unpacked with wrong size!
  2111.   fi
  2112.   # end of 'today/nbrtxt.c'
  2113. fi
  2114. if test -f 'welcome.bbs' -a "${1}" != "-c" ; then 
  2115.   echo shar: Will not clobber existing file \"'welcome.bbs'\"
  2116. else
  2117.   echo shar: Extracting \"'welcome.bbs'\" \(3174 characters\)
  2118.   sed "s/^X//" >'welcome.bbs' <<'END_OF_FILE'
  2119. X
  2120. X
  2121. X              u      u     n      n     iiiiiii     x      x
  2122. X              u      u     nn     n        i         x    x
  2123. X              u      u     n n    n        i          x  x
  2124. X              u      u     n  n   n        i           xx 
  2125. X              u      u     n   n  n        i          x  x
  2126. X              u      u     n     nn        i         x    x
  2127. X              uuuuuuuu     n      n     iiiiiii     x      x  tm
  2128. X
  2129. X
  2130. X
  2131. X         x      x    eeeeeee     n      n     iiiiiii     x      x
  2132. X          x    x     e           nn     n        i         x    x
  2133. X           x  x      e           n n    n        i          x  x
  2134. X            xx       eeeeeee     n  n   n        i           xx
  2135. X           x  x      e           n    n n        i          x  x
  2136. X          x    x     e           n     nn        i         x    x
  2137. X         x      x    eeeeeee     n      n     iiiiiii     x      x  tm
  2138. X
  2139. X
  2140. X
  2141. X
  2142. X
  2143. X       ***********************************************************
  2144. X       *                                                         *
  2145. X       *        x      x    bbbbbb      bbbbbb       ssssss      *
  2146. X       *         x    x     b      b    b      b    s            *
  2147. X       *          x  x      b      b    b      b    s            *
  2148. X       *           xx       bbbbbb      bbbbbb        sss        *
  2149. X       *          x  x      b      b    b      b           s     *
  2150. X       *         x    x     b      b    b      b           s     *
  2151. X       *        x      x    bbbbbb      bbbbbb      sssssss      *
  2152. X       *                                                         *
  2153. X       *                                                         *
  2154. X       *       <----------     MULTI-USER BBS    ------->        *
  2155. X       *              XBBS ( Xenix BBS )  Release 7.200          *
  2156. X       *                                                         *
  2157. X       *                       ( Aug 15, 1992 )                  *
  2158. X       *                                                         *
  2159. X       ***********************************************************
  2160. X
  2161. X
  2162. X
  2163. X           ****************************************************
  2164. X           *         Welcome to SCO XENIX SysV 2.3.2          *
  2165. X           *             running on a 20Mhz 386-AT            *
  2166. X       *               Brought to you by SJZ              *
  2167. X           *            24 hrs a day / 7 days a wk            *
  2168. X           *                714-821-9671 - Data               * 
  2169. X           *                714-821-9670 - Voice              *
  2170. X           ****************************************************
  2171. X
  2172. XThe uucp system name is:  alphacm
  2173. XThe uucp and call in data lines accept calls at 19200|9600(PEP)/2400/1200 baud 
  2174. X< no 300 baud >. A break sequence is required to switch between the baud rates. 
  2175. X
  2176. XThe uucp mail path is:        uunet!{zardoz|pride38}!alphacm!sandy 
  2177. XThe internet path is:        zardoz.uucp!alphacm!sandy@ics.uci.edu
  2178. X
  2179. XThe following limits are in effect:    Max Kbytes: 500 +/- bytes (daily)
  2180. XLogin time: 5 minutes   Usage time: 90 minutes +/- dt   Response time: 3 minutes
  2181. X
  2182. X        *******    YOU MUST BE AT 8N1 TO LOG INTO THE BBS!   *******
  2183. X       The source code for this software is available for downloading.
  2184. X
  2185. END_OF_FILE
  2186.   if test 3174 -ne `wc -c <'welcome.bbs'`; then
  2187.     echo shar: \"'welcome.bbs'\" unpacked with wrong size!
  2188.   fi
  2189.   # end of 'welcome.bbs'
  2190. fi
  2191. echo shar: End of archive 9 \(of 11\).
  2192. cp /dev/null ark9isdone
  2193. MISSING=""
  2194. for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
  2195.     if test ! -f ark${I}isdone ; then
  2196.     MISSING="${MISSING} ${I}"
  2197.     fi
  2198. done
  2199. if test "${MISSING}" = "" ; then
  2200.     echo You have unpacked all 11 archives.
  2201.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2202. else
  2203.     echo You still must unpack the following archives:
  2204.     echo "        " ${MISSING}
  2205. fi
  2206. exit 0
  2207. exit 0 # Just in case...
  2208.