home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / comp / sources / misc / 3915 < prev    next >
Encoding:
Text File  |  1992-09-08  |  63.6 KB  |  2,218 lines

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