home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume35 / mbox / part10 < prev    next >
Text File  |  1993-02-05  |  56KB  |  2,215 lines

  1. Newsgroups: comp.sources.misc
  2. From: Volker.Schuermann@unnet.w.open.de (Volker Schuermann)
  3. Subject: v35i045:  mbox - ix/Mbox, A BBS for UNIX and MINIX v1.6 PL10j7, Part10/15
  4. Message-ID: <1993Feb5.185838.10560@sparky.imd.sterling.com>
  5. X-Md4-Signature: 1b5e154c1b74014a32a697759e44086e
  6. Date: Fri, 5 Feb 1993 18:58:38 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Volker.Schuermann@unnet.w.open.de (Volker Schuermann)
  10. Posting-number: Volume 35, Issue 45
  11. Archive-name: mbox/part10
  12. Environment: MINIX, ISC, ESIX, SVR3
  13. Supersedes: mbox: Volume 31, Issue 16-27
  14.  
  15. #! /bin/sh
  16. # This is a shell archive.  Remove anything before this line, then feed it
  17. # into a shell via "sh file" or similar.  To overwrite existing files,
  18. # type "sh file -c".
  19. # Contents:  etc/deutsch.befehl etc/reflector.log src/Makefile
  20. #   src/bled.c src/lesen2.c src/mbox.h
  21. # Wrapped by kent@sparky on Fri Feb  5 12:18:12 1993
  22. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  23. echo If this archive is complete, you will see the following message:
  24. echo '          "shar: End of archive 10 (of 15)."'
  25. if test -f 'etc/deutsch.befehl' -a "${1}" != "-c" ; then 
  26.   echo shar: Will not clobber existing file \"'etc/deutsch.befehl'\"
  27. else
  28.   echo shar: Extracting \"'etc/deutsch.befehl'\" \(2904 characters\)
  29.   sed "s/^X//" >'etc/deutsch.befehl' <<'END_OF_FILE'
  30. X/***************************************************************************/
  31. X/* Wer diese Datei aendert sollte GENAU wissen was er tut. Die Reihen-     */
  32. X/* folge der Befehle ist NICHT willkuerlich festgelegt worden, sondern     */
  33. X/* entspricht der Vorgabe fuer GEOnet-Befehle und deren Abkuerzungen.      */
  34. X/*                                       */
  35. X/* S(chreiben) kommt vor SE(tup) und L(esen) vor LOE(schen) etc. ... wer   */
  36. X/* sich nicht voellig sicher ist, sollte die Datei einfach im Urzustand    */
  37. X/* belassen.                                   */
  38. X/*                                           */
  39. X/*                 Die Bedeutung der versch. Spalten                */
  40. X/* ======================================================================= */
  41. X/* ID            - Nummer des Befehls (siehe "loop()")               */
  42. X/* Intern        - Benoetigtes Userlevel                   */
  43. X/* Extern        - Bei einigen Befehle wird unterscheiden zwischen intern  */
  44. X/*           und extern. Z.B. beim Befehl "schreiben" wird diese     */
  45. X/*           Regelung angewendet, damit User zwar an die lokalen     */
  46. X/*           Bretter senden duerfen, nicht aber an die externen.     */
  47. X/* Prototyp      - Enthaelt diese Spalte eine '1', wird der Befehl bei der */
  48. X/*           Befehlsuebersicht angezeigt.                   */
  49. X/* Befehl        - Unter diesem Namen wird der Befehl aufgerufen           */
  50. X/*                                       */
  51. X/*                                       */
  52. X/* ACHTUNG: Zwischen Kommentar und Ueberschrift EINE Leerzeile einfuegen ! */
  53. X/***************************************************************************/
  54. X
  55. XID    Intern  Extern  Prototyp  Befehl 
  56. X===============================================
  57. X110    0    0    1    +
  58. X120    0    0    1    -
  59. X130    0    0    1    Anrufer
  60. X140    1    0    1    Ansage
  61. X150    0    0    1    Brett
  62. X160    0    2    1    Brief
  63. X170    0    0    1    Chat
  64. X490    0    0    1    Diskussion
  65. X170    0    0    0    Dialog
  66. X370    0    0    0    Datum
  67. X170    0    0    0    Co
  68. X999    0    0    1    Demo
  69. X440     0       0       1       Download
  70. X210    0    0    1    Lesen
  71. X480    1    1    1    Edit
  72. X180    0    0    1    Ende
  73. X180    0    0    0    Quit
  74. X180    0    0    0    Log
  75. X460    0    0    0    Area
  76. X460    0    0    1    Gruppe
  77. X180    0    0    0    Goodbye
  78. X190    0    0    1    Hilfe
  79. X195    0    1    0    ~PD
  80. X200    0    0    1    Inhalt
  81. X200    0    0    0    Dir
  82. X205    0    0    0    Id
  83. X215    0    0    0    Level
  84. X220    1    1    1    Loeschen
  85. X330     0       0       1       Makro
  86. X240    8    8    1    Minix
  87. X510    9    9    1    Monitor
  88. X240    8    8    0    Execute
  89. X450    1    1    1    Outdial
  90. X450    1    1    0    Od
  91. X270    0    0    1    Portinfo
  92. X270    0    0    0    Who
  93. X270    0    0    0    Wer
  94. X260    0    0    1    Postfach
  95. X260    0    0    0    Antrag
  96. X275    9    9    0    Relogin
  97. X400     0       0       1       Richtung
  98. X230    0    5    1    Schreiben
  99. X280    0    0    1    Setup
  100. X390     0    0    1    Spiele
  101. X430    1    1    1    Suchen
  102. X470    0    0    1    Sysinfo
  103. X280    0    0    0    Passwort
  104. X280    0    0    0    Ansi
  105. X280    0    0    0    Bell
  106. X280    0    0    0    Anschrift
  107. X290    0    0    1    Status
  108. X410     0       0       1       Statistik
  109. X300    0    0    1    User
  110. X310    1    0    1    Unterschrift
  111. X230     0       5       1       Upload
  112. X500    0    0    1    Umlaut
  113. X320    0    0    1    Version        
  114. X340    1    1    1    Weiterleiten
  115. X380    0    0    0    Zeit
  116. X125    9    9    0    Admin
  117. X130    0    0    0    Protokoll
  118. X250    0    0    1    PM
  119. X150    0    0    0    Cd
  120. X300    0    0    0    Finger
  121. X160    0    2    0    Mail
  122. X180    0    0    0    Quit
  123. X180    0    0    0    Exit
  124. X180    0    0    0    Logout
  125. X420    0    0    0    RING
  126. X350     0       0       0       Sleep
  127. X360     0       0       0       Keypressed
  128. X998    7    7    0    ~MAIL_DUMMY
  129. END_OF_FILE
  130.   if test 2904 -ne `wc -c <'etc/deutsch.befehl'`; then
  131.     echo shar: \"'etc/deutsch.befehl'\" unpacked with wrong size!
  132.   fi
  133.   # end of 'etc/deutsch.befehl'
  134. fi
  135. if test -f 'etc/reflector.log' -a "${1}" != "-c" ; then 
  136.   echo shar: Will not clobber existing file \"'etc/reflector.log'\"
  137. else
  138.   echo shar: Extracting \"'etc/reflector.log'\" \(0 characters\)
  139.   sed "s/^X//" >'etc/reflector.log' <<'END_OF_FILE'
  140. END_OF_FILE
  141.   if test 0 -ne `wc -c <'etc/reflector.log'`; then
  142.     echo shar: \"'etc/reflector.log'\" unpacked with wrong size!
  143.   fi
  144.   # end of 'etc/reflector.log'
  145. fi
  146. if test -f 'src/Makefile' -a "${1}" != "-c" ; then 
  147.   echo shar: Will not clobber existing file \"'src/Makefile'\"
  148. else
  149.   echo shar: Extracting \"'src/Makefile'\" \(11550 characters\)
  150.   sed "s/^X//" >'src/Makefile' <<'END_OF_FILE'
  151. X#---------------------------------------------------------------------------
  152. X#
  153. X#                      ix/MBox  M A K E F I L E
  154. X#             Bulletin Board System for UNIX(-Derivations)
  155. X#            
  156. X#               Volker Schuermann
  157. X#              Wuppertal, FRG, 26.10.1991
  158. X#
  159. X#
  160. X#                     Modified for SVR3    
  161. X#        
  162. X#          Walter Buerger <walterb@weller.ruhr.sub.org>
  163. X#              Ralf Heidelberg <ralf@heibox.ruhr.sub.org>
  164. X#          Solingen/Wuppertal, FRG, 08.11.1991
  165. X#
  166. X#
  167. X#                        Modified for ISC 2.21
  168. X#
  169. X#              Hergo Pape <hergo@ivcmd.BOERDE.DE>
  170. X#               Magdeburg, FRG, 16.11.1991
  171. X#
  172. X#        
  173. X#                 DIFF-Support
  174. X#
  175. X#        Ralf Heidelberg <ralf@heibox.ruhr.sub.org>
  176. X#            Wuppertal, FRG, 07.01.1992
  177. X#
  178. X#
  179. X#               Modified for ST Minix/c86
  180. X#      
  181. X#              Olaf <olaf@oski.toppoint.de>
  182. X#                        Kiel, FRG, 14.01.1992
  183. X#
  184. X#
  185. X#                           SVR4 Support by 
  186. X#
  187. X#                Andreas Laumann <andreas@xenox.w.open.de>
  188. X#                   Wuppertal, FRG, 30.05.1992
  189. X#
  190. X#
  191. X#---------------------------------------------------------------------------
  192. X# CFLAGS: 
  193. X# 
  194. X# -D_MBOX         Has to be set ALWAYS!
  195. X# -D_SYS7         UNIX System 7 (MINIX, COHERENT, ...)
  196. X# -D_MINIX        MINIX special stuff
  197. X# -D_ISC          Interactive UNIX goodies
  198. X# -D_SCO          For SCO UNIX only
  199. X# -D_SVR4         For AT&T's System V Release 4 
  200. X# -D_LINUX      For Linus' LINUX v0.99pl2
  201. X# -D_LONGNAMES    Long filenames allowed (SVR4, BSD, ULTRIX, ...)
  202. X# -D_ESTDIO       Earl Chew's "estdio.h" and GNU C 1.37
  203. X# -D_CORELEFT     To check your memory (-D_CORELEFT=10000)
  204. X# -D_DATESTAMP    Add time&date to console LOGFILE
  205. X# -D_NOINDEX      Index files for NEWS will be created interactive for
  206. X#          each group that is called by a user
  207. X#          Otherwise MB-DAEMON has to be called by [cron] daily
  208. X# -D_BAUDRATE     If you've a HST-Modem with FIXED BAUDRATE
  209. X# -D_MULTIMEDIA   "Multimedia"-Features (i.e. read RTF-Files etc.)
  210. X# -D_CNEWS      To prevent problems with C-NEWS' aliasing mechanism
  211. X# -D_PMCOPY       Copy POSTMASTERs BBS-PM to "yourdomain!root"
  212. X# -D_UMLAUT       Allow german "Umlauts" (i.e. allow 8bit MAIL/NEWS) 
  213. X# -D_ADDRMODE     Never (!) use this - it's local UNNET stuff
  214. X#---------------------------------------------------------------------------
  215. X# This is a workaround for the System V (not SVR4) /bin/sh bug 
  216. X
  217. XSHELL = /bin/sh
  218. X
  219. X# The following definition tells all ix/MBox BBS parts where they have to 
  220. X# live in the future. 
  221. X
  222. XMBOXHOME=/local/mbox
  223. X
  224. X# All BBS binaries will be stored in the BIN dircetory ... except [mbrsh]
  225. X# NOTE that the path to BIN has to be on all users PATH!
  226. X
  227. XBIN=/usr/bin
  228. X
  229. X#---------------------------------------------------------------------------
  230. X# And now some predefined settings for various compilers/systems:
  231. X#
  232. X# MINIX 386 (BCC)
  233. X CC= bcc
  234. X LN= ln
  235. X CHMEM= chmem
  236. X CFLAGS= -D_MINIX -D_SYS7 -D_MBOX -D_BAUDRATE -D_MULTIMEDIA \
  237. X    -DHOME="\"$(MBOXHOME)"\" -D_UMLAUT
  238. X LIB=
  239. X CONVERT= mv a.out $@
  240. X CHOWN= chown $(OWNER).$(GROUP) 
  241. X CHGRP= :
  242. X STRIP= strip $@
  243. X#
  244. X#
  245. X# MINIX 386 & ESTDIO.H
  246. X# CC= cc
  247. X# LN= ln
  248. X# CHMEM= chmem
  249. X# CFLAGS= -D_MINIX -D_SYS7 -D_ESTDIO -D_MBOX -DHOME="\"$(MBOXHOME)"\"
  250. X# LIB= -lestdio
  251. X# CONVERT= mv a.out $@
  252. X# CHOWN= chown $(OWNER).$(GROUP) 
  253. X# CHGRP= :
  254. X# STRIP= strip $@
  255. X#
  256. X#
  257. X# MINIX 386 (GCC 1.37)
  258. X# CC= gcc
  259. X# LN= ln
  260. X# CHMEM= : 
  261. X# CFLAGS= -O -D_MINIX -D_SYS7 -D_MBOX -D_ESTDIO -DHOME="\"$(MBOXHOME)"\" \
  262. X#    -D_BAUDRATE -D_MULTIMEDIA -traditional
  263. X# LIB=
  264. X# CONVERT= /usr/local/bin/gcc2minix < a.out > $@
  265. X# CHOWN= chown $(OWNER).$(GROUP) 
  266. X# CHGRP= :
  267. X# STRIP= strip $@
  268. X#
  269. X#
  270. X# ESIX SVR3 
  271. X# CC= cc
  272. X# LN= ln
  273. X# CHMEM= :
  274. X# CFLAGS= -O -D_MBOX -DHOME="\"$(MBOXHOME)"\"
  275. X# LIB= -lcurses -s
  276. X# CONVERT= mv a.out $@
  277. X# CHOWN= chown $(OWNER) 
  278. X# CHGRP= chgrp $(GROUP)
  279. X# STRIP= $@
  280. X#
  281. X#
  282. X# ISC 2.21 & "Shared Libs" 
  283. X# CC= gcc
  284. X# LN= ln
  285. X# CHMEM= :
  286. X# CFLAGS= -O -D_MBOX -D_ISC -traditional -DHOME="\"$(MBOXHOME)"\"
  287. X# LIB= -ltermcap -lcurses -lc_s -s
  288. X# CONVERT= mv a.out $@
  289. X# CHOWN= chown $(OWNER) 
  290. X# CHGRP= chgrp $(GROUP)
  291. X# STRIP= :
  292. X#
  293. X#
  294. X# Dell 2.1 (SVR4) & GCC 2.1
  295. X# CC= gcc
  296. X# LN= ln
  297. X# CHMEM= :
  298. X# CFLAGS= -traditional -g -D_MBOX -D_SVR4 -D_DATESTAMP -D_BAUDRATE \
  299. X#     -D_LONGNAMES -D_MULTIMEDIA -D_CNEWS -DHOME="\"$(MBOXHOME)"\"
  300. X# LIB= -ltermlib
  301. X# DBM= 
  302. X# CONVERT= mv a.out $@
  303. X# CHOWN= chown $(OWNER) 
  304. X# CHGRP= chgrp $(GROUP)
  305. X# STRIP= :
  306. X#
  307. X#
  308. X# LINUX 
  309. X# CC= cc
  310. X# LN= ln
  311. X# CHMEM= :
  312. X# CFLAGS= -O -D_MBOX -DHOME="\"$(MBOXHOME)"\" -traditional
  313. X# LIB= -ltermcap
  314. X# CONVERT= mv a.out $@
  315. X# CHOWN= chown $(OWNER) 
  316. X# CHGRP= chgrp $(GROUP)
  317. X# STRIP= $@
  318. X
  319. X# This is the pager which BLED uses to display his helpfile 
  320. XBLPAGER=/bin/cat
  321. X
  322. X# In this directory, you hide your helpfiles and manuals
  323. XHELPDIR=/usr/doc
  324. X
  325. X
  326. X# Sorry, but SETUID root.root is still necessary ...
  327. XOWNER=root
  328. XGROUP=root
  329. X
  330. X
  331. XMBOX.OBJ=main.o getch.o tools.o getline.o \
  332. X    intro.o nerror.o show.o    loop.o help.o admin.o mail.o control.o \
  333. X    misc.o lesen.o lesen2.o pd.o portinfo.o befehl.o misc2.o \
  334. X    postfach.o ctrlx.o makro.o weiterl.o coreleft.o games.o suchen.o \
  335. X    baudrate.o outdial.o faces.o uptodate.o dis.o
  336. X
  337. XBLED.OBJ=bled.o getch.o bltools.o blgetline.o derror.o
  338. X
  339. XXMD.OBJ=xmd.o tools.o derror.o
  340. X
  341. XMBRSH.OBJ=mbrsh.o
  342. X
  343. XMBD.OBJ=tools.o mb-daemon.o derror.o
  344. X
  345. XDIFF_FILES=admin.c befehl.c bled.c control.c coreleft.c \
  346. X    ctrlx.c defs.h derror.c games.c getch.c getline.c help.c intro.c \
  347. X    lesen.c lesen2.c loop.c mail.c main.c makro.c mb-daemon.c mbox.h \
  348. X    mbrsh.c misc.c misc2.c nerror.c patchlevel.h pd.c portinfo.c \
  349. X    postfach.c show.c suchen.c tools.c weiterl.c xmd.c baudrate.c \
  350. X    outdial.c faces.c dis.c
  351. X
  352. XPROGS=mbox bled mb-daemon mbrsh xmd
  353. X
  354. Xdefault:; @echo ''
  355. X      @echo 'One of the following:'
  356. X      @echo ''
  357. X      @echo 'make all       <-   Create every object file'
  358. X      @echo 'make world     <-   Make directories and set permissions'
  359. X      @echo 'make inst      <-   Install the BBS (make all, world, etc.)'
  360. X      @echo 'make english   <-   Prepare for english version'
  361. X      @echo 'make german    <-   Prepare for german version'
  362. X      @echo 'make clean     <-   Remove object files'
  363. X      @echo 'make mbox      <-   Make the BBS itself (ix/MBox BBS)'
  364. X      @echo 'make mb-daemon <-   Compile "mb-daemon" (NEWS Scanner)'
  365. X      @echo 'make xmd       <-   Create "xmd" (Mailing Agent)'
  366. X      @echo 'make mbrsh     <-   Build "mbrsh" (External Shell)'
  367. X      @echo 'make bled      <-   Make "bled" (B[etter] L[ine] ED[itor])'
  368. X      @echo ''
  369. X      @echo 'Active definitions:'
  370. X      @echo ''
  371. X      @echo 'Compiler [$(CC)]'
  372. X      @echo 'CFLAGS   [$(CFLAGS)]'
  373. X      @echo 'Lib(s)   [$(LIB)]'
  374. X      @echo 'Root-ID  [$(OWNER).$(GROUP)]'
  375. X      @echo ''
  376. X
  377. Xall: $(PROGS)
  378. X    @echo ''
  379. X    @echo '- All files are made' 
  380. X    @echo ''
  381. X
  382. Xmbox:    $(MBOX.OBJ)
  383. X    @echo ''
  384. X    @echo '- The BBS is going to be compiled...'
  385. X    @echo ''
  386. X    $(CC) $(CFLAGS) $(MBOX.OBJ) $(LIB) 
  387. X    @$(CONVERT)
  388. X    @$(CHGRP) $@
  389. X    @$(CHOWN) $@
  390. X    @chmod +x mbox
  391. X    @chmod ug+s mbox
  392. X    @$(CHMEM) +280000 mbox
  393. X    @$(STRIP)
  394. X
  395. Xbled:    $(BLED.OBJ) 
  396. X    @echo ''
  397. X    @echo '- The Editor (BLED) is going to be compiled...'
  398. X    @echo ''
  399. X    $(CC) $(CFLAGS) $(BLED.OBJ) $(LIB) 
  400. X    @$(CONVERT)
  401. X    @$(CHMEM) +10000 bled    
  402. X    @$(STRIP)
  403. X    @chmod +x bled
  404. X
  405. Xxmd:    $(XMD.OBJ) 
  406. X    @echo ''
  407. X    @echo '- The Mailing Agent (xmd) is going to be compiled...'
  408. X    @echo ''
  409. X    $(CC) $(CFLAGS) $(XMD.OBJ) $(LIB) 
  410. X    @$(CONVERT)
  411. X    @$(STRIP)
  412. X    @chmod +x xmd
  413. X
  414. Xmbrsh:  $(MBRSH.OBJ) 
  415. X    @echo ''
  416. X    @echo '- The external SHELL (mbrsh) is going to be compiled...'
  417. X    @echo ''
  418. X    $(CC) $(CFLAGS) $(MBRSH.OBJ) $(LIB) 
  419. X    @$(CONVERT)
  420. X    @$(STRIP)
  421. X    @chmod +x mbrsh
  422. X
  423. Xmb-daemon:    $(MBD.OBJ) 
  424. X    @echo ''
  425. X    @echo '- The NEWS Scanner (mb-daemon) is going to be compiled...'
  426. X    @echo ''
  427. X    $(CC) $(CFLAGS) $(MBD.OBJ) $(LIB) 
  428. X    @$(CONVERT)
  429. X    @chmod +x mb-daemon
  430. X    @chmod ug+s mb-daemon
  431. X    @$(CHMEM) +64000 mb-daemon        
  432. X    @$(STRIP)
  433. X
  434. Xinst:    world all
  435. X    @echo
  436. X    @echo -n '- The BBS is going to be installed...'
  437. X    @cp mbox $(BIN)
  438. X    @cp bled $(BIN)
  439. X    @cp mbrsh $(MBOXHOME)
  440. X    @cp mb-daemon $(BIN)
  441. X    @cp xmd $(BIN)
  442. X    @cp bled.doc $(HELPDIR)
  443. X    @$(CHOWN) $(MBOXHOME)/* $(MBOXHOME)/etc/*
  444. X    @$(CHGRP) $(MBOXHOME)/* $(MBOXHOME)/etc/*
  445. X    @chmod +s $(BIN)/mbox
  446. X    @chmod +s $(BIN)/mb-daemon
  447. X    @echo  'done.'
  448. X    @echo
  449. X
  450. Xcopy:
  451. X    cp mbox bled mb-daemon xmd $(BIN)
  452. X    cp mbrsh $(MBOXHOME)
  453. X
  454. Xenglish:;
  455. X    @echo
  456. X    @echo -n '- Preparing english version...'
  457. X    @rm $(MBOXHOME)/src/mbox.msg
  458. X    @ln $(MBOXHOME)/src/mbox.english $(MBOXHOME)/src/mbox.msg
  459. X    @rm $(MBOXHOME)/etc/help.*
  460. X    @ln $(MBOXHOME)/etc/english.befehle $(MBOXHOME)/etc/help.befehle
  461. X    @ln $(MBOXHOME)/etc/english.hilfe $(MBOXHOME)/etc/help.hilfe
  462. X    @ln $(MBOXHOME)/etc/english.shorthelp $(MBOXHOME)/etc/help.shorthelp
  463. X    @echo 'done.'
  464. X    @echo ''
  465. X
  466. Xgerman:;
  467. X    @echo
  468. X    @echo -n '- Preparing german version...'
  469. X    @rm $(MBOXHOME)/src/mbox.msg
  470. X    @ln $(MBOXHOME)/src/mbox.deutsch $(MBOXHOME)/src/mbox.msg
  471. X    @rm $(MBOXHOME)/etc/help.*
  472. X    @ln $(MBOXHOME)/etc/deutsch.befehle $(MBOXHOME)/etc/help.befehle
  473. X    @ln $(MBOXHOME)/etc/deutsch.hilfe $(MBOXHOME)/etc/help.hilfe
  474. X    @ln $(MBOXHOME)/etc/deutsch.shorthelp $(MBOXHOME)/etc/help.shorthelp
  475. X    @echo 'done.'
  476. X    @echo ''
  477. X
  478. Xworld:;    @echo
  479. X    @echo -n '- Making directories...'
  480. X    @if test -d $(MBOXHOME) ; then echo -n ''; else mkdir $(MBOXHOME) ; fi
  481. X    @if test -d $(BIN) ; then echo -n ''; else mkdir $(BIN) ; fi
  482. X    @if test -d $(MBOXHOME)/etc ; then echo -n ''; \
  483. X        else mkdir $(MBOXHOME)/etc ; fi
  484. X    @if test -d $(MBOXHOME)/lib ; then echo -n ''; \
  485. X        else mkdir $(MBOXHOME)/lib ; fi
  486. X    @if test -d $(MBOXHOME)/src ; then echo -n ''; \
  487. X        else mkdir $(MBOXHOME)/src ; fi
  488. X    @if test -d $(MBOXHOME)/usr ; then echo -n ''; \
  489. X        else mkdir $(MBOXHOME)/usr ; fi
  490. X    @$(CHOWN) $(MBOXHOME) $(MBOXHOME)/*
  491. X    @$(CHGRP) $(MBOXHOME) $(MBOXHOME)/*
  492. X    @chmod ug+rwx $(MBOXHOME)/lib
  493. X    @chmod o-rwx $(MBOXHOME)/lib
  494. X    @chmod ug+rwx $(MBOXHOME)/src
  495. X    @chmod o-rwx $(MBOXHOME)/src
  496. X    @chmod ug+rwx $(MBOXHOME)/etc
  497. X    @chmod o-rwx $(MBOXHOME)/etc
  498. X    @chmod ug+rwx $(MBOXHOME)/usr
  499. X    @chmod o-rwx $(MBOXHOME)/usr
  500. X    @echo 'done.'
  501. X    @echo ''
  502. X
  503. X
  504. Xclean:;    
  505. X    @echo ''
  506. X    @echo -n '- Old stuff is going to be deleted...' 
  507. X    @rm -f *.o mbox mbrsh bled xmd mb-daemon bltools.c blgetline.c core
  508. X    @echo 'done.'
  509. X    @echo ''
  510. X
  511. Xblgetline.o:    mbox.h patchlevel.h
  512. X    @if test -f blgetline.c ; then echo -n '' ; \
  513. X        else $(LN) getline.c blgetline.c ; fi
  514. X    $(CC) -c $(CFLAGS) blgetline.c
  515. X
  516. Xbltools.o:    mbox.h patchlevel.h
  517. X    @rm -f bltools.c
  518. X    @cat undef.c > bltools.c
  519. X    @cat tools.c >> bltools.c
  520. X    $(CC) -c $(CFLAGS) bltools.c
  521. X
  522. Xbled.o:    mbox.h patchlevel.h
  523. X    $(CC) -c $(CFLAGS) -DHILFE="\"$(BLPAGER) $(HELPDIR)/bled.doc"\" bled.c
  524. X
  525. X
  526. X
  527. X# For automagic update service (Beta-Testers only) ...
  528. XDIFF     = /usr/bin/cdiff
  529. XSRC      = /mbox/src
  530. XSRC_ORIG = /mbox/1.6
  531. XADRESSE  = "volkers@unnet.w.open.DE"
  532. X
  533. X
  534. Xdiff: $(DIFF_FILES)
  535. X    @echo DiffMailer by ralf@heibox.ruhr.sub.org >$@
  536. X    @echo Project: ix/MBox 1.6 >>$@
  537. X    @echo Adresse: $(ADRESSE)
  538. X    @echo Folgende Aenderungen sind in $? vorzunehmen >>$@
  539. X    @date >>$@
  540. X    @echo >>$@
  541. X    @for f in $? ; do \
  542. X    echo ----- $$f -----; \
  543. X    echo ----- $$f ----- >>$@; \
  544. X    $(DIFF) $(SRC)/$$f $(SRC_ORIG) | cat >>$@; \
  545. X    done
  546. X    @cat diff | mail -s "ix/MBox PATCHES" volkers@unnet.w.open.de
  547. X
  548. X
  549. Xadmin.o:        mbox.h defs.h
  550. Xbefehl.o:        mbox.h defs.h
  551. Xbled.o:            mbox.h defs.h
  552. Xbaudrate.o:        mbox.h defs.h
  553. Xcontrol.o:        mbox.h defs.h
  554. Xderror.o:        mbox.h defs.h
  555. Xdis.o:            mbox.h defs.h
  556. Xfaces.o:        mbox.h defs.h
  557. Xgames.o:        mbox.h defs.h
  558. Xgetline.o:        mbox.h defs.h
  559. Xhelp.o:            mbox.h defs.h
  560. Xintro.o:        mbox.h defs.h
  561. Xlesen:            mbox.h defs.h
  562. Xlesen2.o:        mbox.h defs.h
  563. Xloop.o:            mbox.h defs.h
  564. Xmail.o:            mbox.h defs.h
  565. Xmain.o:            mbox.h defs.h
  566. Xmakro.o:        mbox.h defs.h
  567. Xmbd.o:            mbox.h defs.h
  568. Xmbrsh.o:        mbox.h defs.h
  569. Xmisc.o:            mbox.h defs.h
  570. Xmisc2.o:        mbox.h defs.h
  571. Xnerror.o:        mbox.h defs.h
  572. Xoutdial.o:        mbox.h defs.h
  573. Xpd.o:            mbox.h defs.h
  574. Xportinfo.o:        mbox.h defs.h
  575. Xpostfach.o:        mbox.h defs.h
  576. Xshow.o:            mbox.h defs.h
  577. Xsuchen.o:        mbox.h defs.h
  578. Xtools.o:        mbox.h defs.h
  579. Xuptodate.o:        mbox.h defs.h
  580. Xweiterl.o:        mbox.h defs.h
  581. Xxmd.o:            mbox.h defs.h
  582. X
  583. X
  584. END_OF_FILE
  585.   if test 11550 -ne `wc -c <'src/Makefile'`; then
  586.     echo shar: \"'src/Makefile'\" unpacked with wrong size!
  587.   fi
  588.   # end of 'src/Makefile'
  589. fi
  590. if test -f 'src/bled.c' -a "${1}" != "-c" ; then 
  591.   echo shar: Will not clobber existing file \"'src/bled.c'\"
  592. else
  593.   echo shar: Extracting \"'src/bled.c'\" \(11597 characters\)
  594.   sed "s/^X//" >'src/bled.c' <<'END_OF_FILE'
  595. X#include <stdio.h>
  596. X#include <setjmp.h>
  597. X#include <signal.h>
  598. X
  599. X#define VERSION "LED 3.5 (Unix)"
  600. X#define AUTOR   "Volker.Schuermann@unnet.w.open.de"
  601. X
  602. X#ifndef STRING
  603. X#define STRING 85
  604. X#endif
  605. X
  606. X#include "mbox.msg"
  607. X
  608. X
  609. X#define CR     13
  610. X#define LF     10
  611. X#define BS      8
  612. X#define CTRL_X 24
  613. X#define CTRL_D  4
  614. X
  615. X
  616. X#define TMP "/tmp"
  617. X
  618. X#define APPEND 1
  619. X#define INSERT 2
  620. X#define FINISH 3
  621. X#define QUIT   4
  622. X#define UPLOAD 5
  623. X
  624. X#ifdef _MBOX
  625. X#undef _MBOX
  626. X#endif
  627. X
  628. Xstatic int melted;
  629. X
  630. Xstatic unsigned char tmp1[STRING];
  631. Xstatic unsigned char tmp2[STRING];
  632. X
  633. Xstatic int von, bis;
  634. Xstatic int max_line;
  635. X
  636. Xstatic unsigned char imode;
  637. X
  638. Xstatic unsigned char THE_FILE[STRING];
  639. Xstatic int  THE_LINE;
  640. X
  641. Xint UMLAUT;
  642. X
  643. X
  644. X
  645. X
  646. Xint melt(startlin)
  647. Xint startlin;
  648. X{
  649. X  FILE *fp;
  650. X  FILE *ff;
  651. X  FILE *fg;
  652. X  unsigned char s[255];
  653. X  unsigned char tmp3[STRING];
  654. X  int i;
  655. X
  656. X
  657. X  if (melted == 0) return 0;
  658. X
  659. X  sprintf(tmp3, "%s/bled3.%d", TMP, getpid());
  660. X
  661. X  fg = fopen(tmp3, "w");
  662. X  if (fg == NULL) {
  663. X    printf("\n%s\n", tmp3);
  664. X    exit(-1);
  665. X  }
  666. X  fp = fopen(tmp1, "r");
  667. X  if (fp == NULL) {
  668. X    printf("\n%s\n", tmp1);
  669. X    exit(-1);
  670. X  }
  671. X  i = 0;
  672. X  while ((i < startlin) && (fgets(s, 250, fp) != NULL)) {
  673. X    fputs(s, fg);
  674. X    i++;
  675. X  }
  676. X  ff = fopen(tmp2, "r");
  677. X  if (ff != NULL) {
  678. X    while (fgets(s, 250, ff) != NULL) {
  679. X        fputs(s, fg);
  680. X        i++;
  681. X    }
  682. X    fclose(ff);
  683. X  }
  684. X  while (fgets(s, 250, fp) != NULL) {
  685. X    fputs(s, fg);
  686. X  }
  687. X  fclose(fg);
  688. X  fclose(fp);
  689. X
  690. X  unlink(tmp1);
  691. X  rename(tmp3, tmp1);
  692. X  unlink(tmp3);
  693. X
  694. X  return 0;
  695. X}
  696. X
  697. X
  698. X
  699. Xbledmove(from, to)
  700. Xunsigned char from[], to[];
  701. X{
  702. X  FILE *fp;
  703. X  FILE *ff;
  704. X  unsigned char s[255];
  705. X
  706. X
  707. X  fp = fopen(from, "r");
  708. X  if (fp == NULL) {
  709. X    printf("\n%s\n", from);
  710. X    exit(-1);
  711. X  }
  712. X  ff = fopen(to, "w");
  713. X  if (ff == NULL) {
  714. X    printf("\n%s\n", from);
  715. X    exit(-1);
  716. X  }
  717. X  while (fgets(s, 250, fp) != NULL) {
  718. X    fputs(s, ff);
  719. X  }
  720. X  fclose(fp);
  721. X  fclose(ff);
  722. X}
  723. X
  724. X
  725. X
  726. X
  727. X
  728. Xzeigen(mode)
  729. Xunsigned char mode;
  730. X{
  731. X  FILE *fp;
  732. X  unsigned char t[STRING];
  733. X  unsigned char s[255];
  734. X  int i;
  735. X
  736. X  if ((von != 0) && (bis == 0)) bis = von;
  737. X  if ((von == 0) && (bis == 0)) bis = 32000;
  738. X
  739. X  if (von > bis) {
  740. X    /*
  741. X    printf("\n\nLED: Fehler bei der Zeilenangabe.\n");
  742. X    */    
  743. X    printf("\n\nLED: %s\n", BLD01_MSG);
  744. X    return;
  745. X  }
  746. X  fp = fopen(tmp1, "r");
  747. X  if (fp == NULL) {
  748. X    printf("\n%s\n", tmp1);
  749. X    exit(-1);
  750. X  }
  751. X  i = 1;
  752. X  printf("\n\n");
  753. X  while (fgets(s, 250, fp) != NULL) {
  754. X    if ((i >= von) && (i <= bis)) {
  755. X        if (mode == 'l')
  756. X            printf("L%04.4d %s", i, s);
  757. X        else
  758. X            printf("%s", s);
  759. X    }
  760. X    i++;
  761. X  }
  762. X  fclose(fp);
  763. X}
  764. X
  765. X
  766. X
  767. Xloeschen()
  768. X{
  769. X  FILE *fp;
  770. X  FILE *ff;
  771. X  unsigned char t[STRING];
  772. X  unsigned char s[255];
  773. X  int i;
  774. X
  775. X  if ((von != 0) && (bis == 0)) bis = von;
  776. X  if ((von == 0) && (bis == 0)) bis = 32000;
  777. X
  778. X  if (von > bis) {
  779. X    /*
  780. X    printf("\n\nLED: Fehler bei der Zeilenangabe.\n");
  781. X    */    
  782. X    printf("\n\nLED: %s\n", BLD01_MSG);
  783. X    return;
  784. X  }
  785. X  ff = fopen(tmp2, "w");
  786. X  if (ff == NULL) {
  787. X    printf("\n%s\n", tmp2);
  788. X    exit(-1);
  789. X  }
  790. X  fp = fopen(tmp1, "r");
  791. X  if (fp == NULL) {
  792. X    printf("\n%s\n", tmp1);
  793. X    exit(-1);
  794. X  }
  795. X  i = 1;
  796. X  printf("\n\n");
  797. X  while (fgets(s, 250, fp) != 0) {
  798. X    if ((i < von) || (i > bis)) {
  799. X        fputs(s, ff);
  800. X    }
  801. X    i++;
  802. X  }
  803. X  fclose(fp);
  804. X  fclose(ff);
  805. X
  806. X  unlink(tmp1);
  807. X  rename(tmp2, tmp1);
  808. X}
  809. X
  810. X
  811. X
  812. Xupload()
  813. X{
  814. X  FILE *fp;
  815. X  unsigned char c;
  816. X  unsigned char lf;
  817. X
  818. X  fp = fopen(tmp2, "w");
  819. X  if (fp == NULL) {
  820. X    printf("\n%s\n", tmp2);
  821. X    exit(-1);
  822. X  }
  823. X  /*
  824. X  printf("\n\nLED: Uebertragung beginnt. (Beenden mit CTRL-X !)\n\n");
  825. X  */
  826. X  printf("\n\nLED: %s\n\n", BLD02_MSG);
  827. X
  828. X  c = 0;
  829. X  lf = CR;
  830. X
  831. X
  832. X  while ((c != CTRL_X) && (c != CTRL_D)) {
  833. X
  834. X        c = getint();
  835. X
  836. X    if ((c == CR) && (lf == CR)) fputc(LF, fp);
  837. X    if (c == CR) lf = CR;
  838. X    if (c == LF) lf = LF;
  839. X    if ((c != CTRL_X) && (c != CTRL_D) && (c != CR)) {
  840. X        fputc(c, fp);
  841. X    }
  842. X  }
  843. X  fclose(fp);
  844. X}
  845. X
  846. X
  847. X
  848. Xkorrigieren()
  849. X{
  850. X  FILE *fp;
  851. X  FILE *ff;
  852. X  unsigned char s[255];
  853. X  unsigned char t[255];
  854. X  int i, z;
  855. X
  856. X  if (von == 0) {
  857. X    /*
  858. X    printf("\n\nLED: Fehler bei der Zeilenangabe.\n");
  859. X    */    
  860. X    printf("\n\nLED: %s\n", BLD01_MSG);
  861. X    return;
  862. X  }
  863. X  fp = fopen(tmp1, "r");
  864. X  if (fp == NULL) {
  865. X    printf("\n%s\n", tmp1);
  866. X    exit(-1);
  867. X  }
  868. X  ff = fopen(tmp2, "w");
  869. X  if (ff == NULL) {
  870. X    printf("\n%s\n", tmp1);
  871. X    exit(-1);
  872. X  }
  873. X  i = 1;
  874. X  while (fgets(s, 250, fp) != NULL) {
  875. X    if (i == von) {
  876. X        t[0] = '\0';
  877. X        strcpy(t, s); 
  878. X        z = strlen(t);
  879. X        while(t[z] < 33) z--;
  880. X        z++;
  881. X        t[z] = '\0';
  882. X        s[0] = '\0';
  883. X        if (length(t) < 74)
  884. X            printf("\n\nK%04.4d ", i);
  885. X        else
  886. X            printf("\n\n");
  887. X        strcat(s, getline(74, 1001, ' ', t));
  888. X        strcat(s, "\n");
  889. X        printf("\n");
  890. X    }
  891. X    fputs(s, ff);
  892. X    i++;
  893. X  }
  894. X  fclose(ff);
  895. X  fclose(fp);
  896. X  unlink(tmp1);
  897. X  rename(tmp2, tmp1);
  898. X}
  899. X
  900. X
  901. X
  902. X
  903. Xcrunch(s)
  904. Xunsigned char s[];
  905. X{
  906. X  unsigned char t[STRING];
  907. X  int i = 0, a = 0;
  908. X
  909. X  von = 0;
  910. X  bis = 0;
  911. X
  912. X  while (s[i] != '\0') {
  913. X    if ((s[i] == ',') || (s[i] == '-')) a = i;
  914. X    i++;
  915. X  }
  916. X  if (a == 0) a = i;
  917. X  t[0] = '\0';
  918. X  strcat(t, strcopy(s, 3, (a - 1)));
  919. X  von = atoi(t);
  920. X  t[0] = '\0';
  921. X  strcat(t, strcopy(s, (a + 1), i));
  922. X  bis = atoi(t);
  923. X  if ((a != i) && (bis == 0)) bis = 32000;
  924. X}
  925. X
  926. X
  927. X
  928. X
  929. X
  930. Xint befehl(s)
  931. Xunsigned char s[];
  932. X{
  933. X  unsigned char c = s[1];
  934. X
  935. X  if ((s[2] != ' ') && (s[2] != '\0') && (s[1] != '\0')) {
  936. X    /*
  937. X    printf("\n\nLED: Syntax-Fehler.\n");
  938. X    */
  939. X    printf("\n\nLED: %s\n", BLD03_MSG);
  940. X    return 0;
  941. X  }
  942. X  crunch(s);
  943. X
  944. X  switch (c) {
  945. X      case '\0':
  946. X            return FINISH;
  947. X            break;
  948. X      case '?':
  949. X            printf("\n\n%c", CR);
  950. X            ansi("mr");
  951. X            /*
  952. X            printf(" %s  -  Befehlsuebersicht ", VERSION);
  953. X            */
  954. X            printf(" %s  -  %s ", VERSION, BLD04_MSG);
  955. X            ansi("me");
  956. X            printf("\n\n");
  957. X            /*
  958. X            printf(".l [ZEILE]|[VON,BIS]   lesen\n");
  959. X            printf(".L [ZEILE]|[VON,BIS]   lesen (keine Zeilennummern)\n");
  960. X            printf(".i AB                  einfuegen\n");
  961. X            printf(".a                     anhaengen (beendet einfuegen)\n");
  962. X            printf(".k ZEILE               korrigieren\n");
  963. X            printf(".d [ZEILE]|[VON,BIS]   loeschen\n");
  964. X            printf(".u                     uebertragen (ASCII-Upload)\n");
  965. X            printf(".q                     abbrechen\n");
  966. X            printf(".h                     ausfuehrliche Hilfe\n");
  967. X            printf(".                      sichern & beenden\n\n");
  968. X            printf("ZEILE, VON, BIS, AB sind gueltige Zeilennummern.\n");
  969. X            printf("Angaben in [KLAMMERN] sind optional. Werden\n");
  970. X            printf("keine Angaben gemacht gilt AB=1, VON=1, BIS=32000.\n");
  971. X            */
  972. X            printf("%s\n", BLD05_MSG);
  973. X            printf("%s\n", BLD06_MSG);
  974. X            printf("%s\n", BLD07_MSG);
  975. X            printf("%s\n", BLD08_MSG);
  976. X            printf("%s\n", BLD09_MSG);
  977. X            printf("%s\n", BLD10_MSG);            
  978. X            printf("%s\n", BLD11_MSG);
  979. X            printf("%s\n", BLD12_MSG);
  980. X            printf("%s\n", BLD13_MSG);
  981. X            printf("%s\n", BLD14_MSG);
  982. X            printf("\n");
  983. X            printf("%s\n", BLD15_MSG);
  984. X            printf("%s\n", BLD16_MSG);
  985. X            printf("%s\n", BLD17_MSG);
  986. X            break;
  987. X      case 'h':            printf("\n\n%c", CR);
  988. X            ansi("mr");
  989. X            /*
  990. X            printf(" %s  -  Hilfe ", VERSION);
  991. X            */
  992. X            printf(" %s  -  %s ", VERSION, BLD18_MSG);
  993. X            ansi("me");
  994. X            printf("\n\n");
  995. X            system( HILFE );
  996. X            break;
  997. X      case 'a':    
  998. X            return APPEND;    
  999. X            break;
  1000. X      case 'i':
  1001. X            return INSERT;    
  1002. X            break;
  1003. X      case 'l':
  1004. X      case 'L':
  1005. X            zeigen(c);
  1006. X            return APPEND;
  1007. X            break;
  1008. X      case 'd':
  1009. X            loeschen();
  1010. X            return APPEND;
  1011. X            break;
  1012. X      case 'k':
  1013. X      case 'c':
  1014. X            korrigieren();
  1015. X            return APPEND;
  1016. X      case 'u':
  1017. X            upload();
  1018. X            return UPLOAD;
  1019. X      case 'q':
  1020. X            unlink(tmp1);
  1021. X            unlink(tmp2);
  1022. X            /*
  1023. X            printf("\n\nLED: Abgebrochen. Datei NICHT gesichert.\n\n");
  1024. X            */
  1025. X            printf("\n\nLED: %s\n\n", BLD19_MSG);
  1026. X            exit(0);
  1027. X            break;
  1028. X      default:        /*
  1029. X            printf("\n\nLED: Befehl unbekannt.\n");
  1030. X            */
  1031. X            printf("\n\nLED: %s\n", BLD20_MSG);
  1032. X}
  1033. X  return 0;
  1034. X}
  1035. X
  1036. X
  1037. X
  1038. X
  1039. X
  1040. Xint erfassen(line, mode)
  1041. Xint line, mode;
  1042. X{
  1043. X  FILE *fp;
  1044. X  unsigned char s[STRING];
  1045. X  unsigned char t[STRING];
  1046. X  unsigned char def[STRING];
  1047. X  int ok = 0;
  1048. X  int elin = line;
  1049. X  int startlin = line - 1;
  1050. X  int a, b;
  1051. X
  1052. X  melted = 1;            /* Sicher ist sicher ... */
  1053. X  THE_LINE = startlin;
  1054. X
  1055. X  fp = fopen(tmp2, "w");
  1056. X  if (fp == NULL) return -1;
  1057. X
  1058. X  def[0] = '\0';
  1059. X
  1060. X  do {
  1061. X    if (elin > max_line) max_line = elin;
  1062. X    printf("\n%c%04.4d ", imode, elin);
  1063. X    s[0] = '\0';
  1064. X    if (def[0] == '\0')
  1065. X        strcat(s, getline(73, 1, ' ', " "));
  1066. X    else
  1067. X        strcat(s, getline(73, 1001, ' ', def));
  1068. X
  1069. X    if (strcomp("<BREAK>", s) == 0) {
  1070. X        sprintf(s, ".?");
  1071. X    }
  1072. X    if (s[0] == '.') {
  1073. X        fclose(fp);
  1074. X        melted = melt(startlin);
  1075. X
  1076. X        ok = befehl(s);
  1077. X
  1078. X        if (ok == UPLOAD) {
  1079. X            melted = 1;
  1080. X            melted = melt(startlin);
  1081. X            ok = APPEND;
  1082. X        }
  1083. X        if (ok == INSERT) {
  1084. X            imode = 'I';
  1085. X            if (von < 1) von = 1;
  1086. X            if (von > max_line) {
  1087. X                ok = APPEND;
  1088. X            }
  1089. X             else {
  1090. X                startlin = von - 1;
  1091. X                THE_LINE = startlin;
  1092. X                elin = von;
  1093. X            }
  1094. X        }
  1095. X        if (ok == APPEND) {
  1096. X            imode = 'A';
  1097. X            unlink(tmp2);
  1098. X            rename(tmp1, tmp2);
  1099. X            startlin = getfile(tmp2);
  1100. X            if (startlin < 1) startlin = 0;
  1101. X            elin = startlin + 1;
  1102. X            THE_LINE = startlin;
  1103. X        }
  1104. X        fp = fopen(tmp2, "w");
  1105. X        if (fp == NULL) return -1;
  1106. X
  1107. X    } else {
  1108. X        def[0] = '\0';
  1109. X        a = length(s);
  1110. X        if (a == 73) {
  1111. X            while ((s[a] != ' ') && (a > 40)) a--;
  1112. X            if (s[a] == ' ') {
  1113. X                strcat(def, strcopy(s, (a + 1), 73));
  1114. X                s[a] = '\0';
  1115. X                for (b = a; b < 73; b++) printf("%c", BS);
  1116. X                for (b = a; b < 73; b++) printf(" ");
  1117. X            }
  1118. X        }
  1119. X        fprintf(fp, "%s\n", s);
  1120. X        elin++;
  1121. X        melted++;
  1122. X    }
  1123. X  } while (ok != FINISH);
  1124. X  return elin;
  1125. X}
  1126. X
  1127. X
  1128. X
  1129. Xsigcatch(sig)
  1130. Xint sig;
  1131. X{
  1132. X
  1133. X  switch (sig) {
  1134. X      case SIGINT:
  1135. X      case SIGQUIT:
  1136. X      case SIGHUP:
  1137. X      case SIGABRT:
  1138. X      case SIGTERM:
  1139. X    melted++;
  1140. X    melt(THE_LINE);
  1141. X    bledmove(tmp1, THE_FILE);
  1142. X    unlink(tmp1);
  1143. X    unlink(tmp2);
  1144. X    /*
  1145. X    printf("\n\nLED: Prozess terminiert. Datei gesichert.\n\n");
  1146. X    */
  1147. X    printf("\n\nLED: %s\n\n", BLD21_MSG);
  1148. X    exit(-1);
  1149. X    break;
  1150. X  }
  1151. X}
  1152. X
  1153. X
  1154. X
  1155. Xint getfile(path)
  1156. Xunsigned char path[];
  1157. X{
  1158. X  FILE *fp;
  1159. X  FILE *ff;
  1160. X  int i = 0;
  1161. X  unsigned char s[STRING];
  1162. X
  1163. X  ff = fopen(tmp1, "w");
  1164. X  if (ff == NULL) {
  1165. X    printf("\n%s\n", tmp1);
  1166. X  }
  1167. X  fp = fopen(path, "r");
  1168. X  if (fp == NULL) {
  1169. X    fclose(ff);
  1170. X    return -1;
  1171. X  }
  1172. X  if (fgets(s, STRING, fp) != 0) i++;
  1173. X  if ((s[0] == 1) && (s[1] == 3)) {    /* MAGIC NUMBER */
  1174. X    return -2;
  1175. X  }
  1176. X  fputs(s, ff);
  1177. X
  1178. X  while (fgets(s, STRING, fp) != NULL) {
  1179. X    fputs(s, ff);
  1180. X    i++;
  1181. X  }
  1182. X  fclose(fp);
  1183. X  fclose(ff);
  1184. X
  1185. X  return i;
  1186. X}
  1187. X
  1188. X
  1189. X
  1190. Xmain(argc, argv)
  1191. Xint argc;
  1192. Xunsigned char *argv[];
  1193. X{
  1194. X  unsigned char s[STRING];
  1195. X
  1196. X  int eof = 0;
  1197. X
  1198. X
  1199. X  UMLAUT = 0;
  1200. X
  1201. X  if (argc < 2) {
  1202. X    /*
  1203. X    printf("\nLED: Keine Datei angegeben.\n\n");
  1204. X    */
  1205. X    printf("\nLED: %s\n\n", BLD22_MSG);
  1206. X    return;
  1207. X  }
  1208. X  /*
  1209. X  signal(SIGINT, sigcatch);
  1210. X  signal(SIGQUIT, sigcatch);
  1211. X  signal(SIGHUP, sigcatch);
  1212. X  signal(SIGABRT, sigcatch);
  1213. X  signal(SIGTERM, sigcatch);
  1214. X  */
  1215. X  signal(SIGINT,  SIG_IGN);
  1216. X  signal(SIGQUIT, SIG_IGN);
  1217. X  signal(SIGHUP,  SIG_IGN);
  1218. X  signal(SIGABRT, SIG_IGN);
  1219. X  signal(SIGTERM, SIG_IGN);
  1220. X
  1221. X#ifndef _SYS7
  1222. X
  1223. X  setbuf(stdout, NULL);
  1224. X
  1225. X#endif
  1226. X
  1227. X  ansi( "INIT" );
  1228. X
  1229. X  sprintf(s, " %s ", VERSION);
  1230. X  headline(s);
  1231. X  /*
  1232. X  printf("\nMomentchen ...");
  1233. X  */
  1234. X  printf("\n%s", BLD23_MSG);
  1235. X
  1236. X  sprintf(tmp1, "%s/bled1.%d", TMP, getpid());
  1237. X  sprintf(tmp2, "%s/bled2.%d", TMP, getpid());
  1238. X
  1239. X  sprintf(THE_FILE, "%s", argv[1]);
  1240. X  THE_LINE = 0;
  1241. X
  1242. X  eof = getfile(THE_FILE);
  1243. X  printf("%c", CR);
  1244. X  if (eof == -2) {
  1245. X    /*
  1246. X    printf("Datei \"%s\" enthaelt ein ausfuehrbares Programm.\n\n", THE_FILE);
  1247. X    */
  1248. X    printf("%s \"%s\" %s\n\n", BLD24_MSG, THE_FILE, BLD25_MSG);
  1249. X    return;
  1250. X  }
  1251. X  if (eof == -1)
  1252. X    /*
  1253. X    printf("Datei wird angelegt.");
  1254. X    */
  1255. X    printf("%s", BLD26_MSG);
  1256. X  else
  1257. X    /*
  1258. X    printf("Datei enthaelt %d Zeilen.", eof);
  1259. X    */
  1260. X    printf("%s %d %s", BLD27_MSG, eof, BLD28_MSG);
  1261. X  
  1262. X  /*
  1263. X  printf(" Befehlsuebersicht: \".?\"\n");
  1264. X  */
  1265. X  printf(" %s: \".?\"\n", BLD04_MSG);
  1266. X
  1267. X  if (eof < 1) eof = 0;
  1268. X  melted = 0;
  1269. X  max_line = eof;
  1270. X  eof++;
  1271. X
  1272. X  imode = 'A';
  1273. X
  1274. X  if (erfassen(eof, APPEND) < 1) {
  1275. X    /*
  1276. X    printf("\n\nLED: Probleme ...\n\n");
  1277. X    */
  1278. X    printf("\n\nLED: %s\n\n", BLD29_MSG);
  1279. X  }
  1280. X  bledmove(tmp1, THE_FILE);
  1281. X  unlink(tmp1);
  1282. X  unlink(tmp2);
  1283. X
  1284. X  /*
  1285. X  printf("\n\nUnd 'tschuess ...\n\n");
  1286. X  */
  1287. X  printf("\n\n%s\n\n", BLD30_MSG);
  1288. X}
  1289. END_OF_FILE
  1290.   if test 11597 -ne `wc -c <'src/bled.c'`; then
  1291.     echo shar: \"'src/bled.c'\" unpacked with wrong size!
  1292.   fi
  1293.   # end of 'src/bled.c'
  1294. fi
  1295. if test -f 'src/lesen2.c' -a "${1}" != "-c" ; then 
  1296.   echo shar: Will not clobber existing file \"'src/lesen2.c'\"
  1297. else
  1298.   echo shar: Extracting \"'src/lesen2.c'\" \(10703 characters\)
  1299.   sed "s/^X//" >'src/lesen2.c' <<'END_OF_FILE'
  1300. X/***************************************************************************/
  1301. X/*        PROGRAMM  ix/Mbox                           */
  1302. X/*             DATEI  lesen2.c                           */
  1303. X/*        FUNKTIONEN  anzeigen(), lesen2(), inhalt2(), loeschen2()       */
  1304. X/*             AUTOR  vs (Volker Schuermann/MINIX-Version)           */
  1305. X/*  LETZTE AENDERUNG  30.10.1992                       */
  1306. X/***************************************************************************/
  1307. X
  1308. X#include <stdio.h>
  1309. X
  1310. X#include "mbox.h"
  1311. X
  1312. X
  1313. Xextern unsigned char headinfo[STRING];
  1314. X
  1315. X/***************************************************************************/
  1316. X/*      FUNKTION  anzeigen()                           */
  1317. X/*  BESCHREIBUNG  Artikel selektieren und anzeigen.               */
  1318. X/*     PARAMETER  art  =  Artikel(-Nummer)                                 */
  1319. X/*          von  =  Artikel-Nummer (Minimum)                         */
  1320. X/*          bis  =  Artikel-Nummer (Maximum)                         */
  1321. X/*     RUECKGABE  siehe "show()"                       */
  1322. X/***************************************************************************/
  1323. X
  1324. Xint anzeigen(art, von, bis)
  1325. Xint art, von, bis;
  1326. X{
  1327. X  unsigned char entry[STRING];
  1328. X  unsigned char s[STRING];
  1329. X  int mr;
  1330. X  int ok;
  1331. X
  1332. X  if (strcomp(BRETT, "PM") != 0) {
  1333. X    sprintf(entry, "%s/%d", BRETT, art);
  1334. X  }
  1335. X  else {
  1336. X    sprintf(entry, "%s/usr/%d/%d", HOME, USER.id, art);
  1337. X  }
  1338. X
  1339. X  mr = 0;
  1340. X  if ((USER.more == 1) || (USER.more == 3)) mr = 2;
  1341. X
  1342. X  sprintf(s, "%d", art);
  1343. X
  1344. X  if (((art >= von) && (art <= bis)) ||
  1345. X      ((art >= bis) && (art <= von))) {
  1346. X
  1347. X    ok = pruefe(s);    
  1348. X
  1349. X    if(ok == 0){
  1350. X        if(USER.more != 0){
  1351. X            sprintf(headinfo, " %s %d (%s) ", LE201_MSG, art, NG);
  1352. X            headline( headinfo );
  1353. X        }
  1354. X        else{
  1355. X            ansi("md");
  1356. X            printf("%s %d\n", LE202_MSG, art);
  1357. X            ansi("me");
  1358. X        }
  1359. X        show( "?", 99, 99 );
  1360. X        ok = show(entry, 9999, mr);
  1361. X        if(ok != -1){
  1362. X            if(USER.more != 0) more();
  1363. X        }
  1364. X        else return ok;
  1365. X    }
  1366. X  }
  1367. X  return ok;
  1368. X}
  1369. X
  1370. X
  1371. X
  1372. X/***************************************************************************/
  1373. X/*      FUNKTION  lesen2()                            */
  1374. X/*  BESCHREIBUNG  Artikel selektieren (je nach Parameter) und anzeigen.    */
  1375. X/*     PARAMETER  arg  =  Selektions-Schluessel                            */
  1376. X/*          mode =  DUMMY (!)                                        */
  1377. X/*     RUECKGABE  keine                                                       */
  1378. X/***************************************************************************/
  1379. X
  1380. Xvoid lesen2(arg, mode)
  1381. Xunsigned char arg[];
  1382. Xunsigned char mode;
  1383. X{
  1384. X  FILE *fp;
  1385. X  unsigned char ex[255];
  1386. X  unsigned char s[STRING];
  1387. X  unsigned char entry[STRING];
  1388. X  int a = 56, b = 63;
  1389. X  int i, d, e;
  1390. X  int von, bis;
  1391. X  int ALLE;
  1392. X  int PM = 0;
  1393. X  int art[MAX_PER_NG];
  1394. X  int artp;
  1395. X  int k, l;
  1396. X  int LR = 0;
  1397. X
  1398. X
  1399. X  i = 0;
  1400. X  k = -1;
  1401. X  l = -1;
  1402. X  while (arg[i] != '\0') {
  1403. X    if (arg[i] == '-') k = i;
  1404. X    if (arg[i] == '*') l = i;
  1405. X    i++;
  1406. X  }
  1407. X
  1408. X  if ((arg[0] != '\0') && (k == -1) && (l == -1)) {
  1409. X    ansi("md");
  1410. X    printf(" %s\n", LE203_MSG);
  1411. X    ansi("me");
  1412. X    return;
  1413. X  }
  1414. X
  1415. X  von = 1;
  1416. X  bis = 32000;
  1417. X
  1418. X  if (l != -1) {
  1419. X    ALLE = 1;
  1420. X  }
  1421. X  if (k != -1) {
  1422. X    strcpy(s, (unsigned char *) strcopy(arg, 0, (k - 1)));
  1423. X    von = atoi(s);
  1424. X    strcpy(s, (unsigned char *) strcopy(arg, (k + 1), length(arg)));
  1425. X    bis = atoi(s);
  1426. X
  1427. X    if (von == 0) von = 1;
  1428. X    if (bis == 0) bis = 32000;
  1429. X    ALLE = 1;
  1430. X  }
  1431. X  if ((k == -1) && (l == -1)) {
  1432. X    ALLE = 0;
  1433. X  }
  1434. X  if ((von == 1) && (bis == 32000)) LR++;
  1435. X
  1436. X  if ((USER.leserichtung != 1) && (LR != 0)) {
  1437. X    i = von;
  1438. X    von = bis;
  1439. X    bis = i;
  1440. X  }
  1441. X  if (strcomp(BRETT, "PM") != 0) {
  1442. X    PM = 0;
  1443. X  }
  1444. X  else {
  1445. X    PM = 1;
  1446. X  }
  1447. X
  1448. X  d = a + 10;
  1449. X  e = a + 14;
  1450. X
  1451. X  fp = fopen(INHALT, "r");
  1452. X  if (fp == NULL) {
  1453. X    inhalt2(arg, mode);
  1454. X    return;
  1455. X  }
  1456. X  artp = -1;
  1457. X
  1458. X  while (fgets(ex, 250, fp) != NULL) {
  1459. X    if (ALLE == 1) {
  1460. X        artp++;
  1461. X        art[artp] = atoi(ex);
  1462. X    }
  1463. X    else {
  1464. X        strcpy(s, (unsigned char *) strcopy(ex, a, b));
  1465. X        if (LASTLOG < dateconv(s)) {
  1466. X            artp++;
  1467. X            art[artp] = atoi(ex);
  1468. X        }
  1469. X        if (LASTLOG == dateconv(s)) {
  1470. X            strcpy(s, (unsigned char *) strcopy(ex, d, e));
  1471. X            if (LASTTIME <= timeconv(s)) {
  1472. X                artp++;
  1473. X                art[artp] = atoi(ex);
  1474. X            }
  1475. X        }
  1476. X    }
  1477. X    if(artp >= MAX_PER_NG){
  1478. X        nerror("lesen2.c", 188, "lesen2", "Zuviele", "Artikel");
  1479. X    }
  1480. X  }
  1481. X  fclose(fp);
  1482. X
  1483. X
  1484. X
  1485. X  if (artp == -1) {
  1486. X    ansi("md");
  1487. X    printf(" %s", LE204_MSG);
  1488. X    ansi("me");
  1489. X    printf("\n");
  1490. X    return;
  1491. X  }
  1492. X  ansi("cl");
  1493. X
  1494. X  if (strcomp(BRETT, "PM") != 0) {
  1495. X    i = von;
  1496. X    von = bis;
  1497. X    bis = i;
  1498. X  }
  1499. X
  1500. X  show("?", 0, 99);
  1501. X
  1502. X  if (von > bis) {
  1503. X    for (i = artp; i >= 0; i--) {
  1504. X        if (anzeigen(art[i], von, bis) == -1) return;
  1505. X    }
  1506. X  }
  1507. X  else {
  1508. X    for (i = 0; i <= artp; i++) {
  1509. X        if (anzeigen(art[i], von, bis) == -1) return;
  1510. X    }
  1511. X  }
  1512. X
  1513. X  return;
  1514. X}
  1515. X
  1516. X
  1517. X
  1518. X
  1519. X/***************************************************************************/
  1520. X/*      FUNKTION  inhalt2()                            */
  1521. X/*  BESCHREIBUNG  Inhalt selektieren (je nach Parameter) und anzeigen.        */
  1522. X/*     PARAMETER  arg  =  Selektions-Schluessel                            */
  1523. X/*          mode =  DUMMY (!)                                        */
  1524. X/*     RUECKGABE  keine                                                       */
  1525. X/***************************************************************************/
  1526. X
  1527. Xvoid inhalt2(arg, mode)
  1528. Xunsigned char arg[];
  1529. Xunsigned char mode;
  1530. X{
  1531. X  FILE *fp;
  1532. X  FILE *ff;
  1533. X  unsigned char ex[LONGSTRING];
  1534. X  unsigned char s[STRING];
  1535. X  unsigned char tmp[STRING];
  1536. X  int a = 56, b = 63;
  1537. X  int e, d, i;
  1538. X  int von, bis;
  1539. X  int k, l;
  1540. X  int plus, minus;
  1541. X  int PM;
  1542. X  int ALLE;
  1543. X  int LR = 0;
  1544. X
  1545. X
  1546. X  i = 0;
  1547. X  k = -1;
  1548. X  l = -1;
  1549. X  while (arg[i] != '\0') {
  1550. X    if (arg[i] == '-') k = i;
  1551. X    if (arg[i] == '*') l = i;
  1552. X    i++;
  1553. X  }
  1554. X
  1555. X  von = 1;
  1556. X  bis = 32000;
  1557. X
  1558. X  if ((arg[0] != '\0') && (k == -1) && (l == -1)) {
  1559. X    strcpy(s, (unsigned char *) strcopy(arg, 0, length(arg)));
  1560. X    von = atoi(s);    
  1561. X    bis = von;
  1562. X    ALLE = 1;
  1563. X  }
  1564. X
  1565. X  if (l != -1) {
  1566. X    ALLE = 1;
  1567. X  }
  1568. X  if (k != -1) {
  1569. X    strcpy(s, (unsigned char *) strcopy(arg, 0, (k - 1)));
  1570. X    von = atoi(s);
  1571. X    strcpy(s, (unsigned char *) strcopy(arg, (k + 1), length(arg)));
  1572. X    bis = atoi(s);
  1573. X
  1574. X    if (von == 0) von = 1;
  1575. X    if (bis == 0) bis = 32000;
  1576. X    ALLE = 1;
  1577. X  }
  1578. X
  1579. X  fp = fopen(INHALT, "r");
  1580. X  if (fp == NULL) {
  1581. X    brett( "~" );
  1582. X    return;
  1583. X  }
  1584. X  sprintf(tmp, "%s/I.%d", TMP, getpid());
  1585. X  ff = fopen(tmp, "w");
  1586. X
  1587. X  sprintf(ex, " %s (%s) ", LE205_MSG, NG);
  1588. X  ex[80] = '\0';
  1589. X  headline(ex);
  1590. X
  1591. X  fgets(ex, 250, fp);    /* alte Ueberschrift ausblenden */
  1592. X  fgets(ex, 250, fp);   /* dito */
  1593. X
  1594. X  if(strcomp(PDNG, NG) == 0){
  1595. X    printf("%s\n", GBL08_MSG); 
  1596. X  }
  1597. X  else{
  1598. X    printf("%s\n", GBL05_MSG);
  1599. X  }
  1600. X  printf("===============================================================================\n", ff);
  1601. X  
  1602. X
  1603. X  PM = 1;
  1604. X  if (strcomp(BRETT, "PM") != 0) {
  1605. X    i = von;
  1606. X    von = bis;
  1607. X    bis = i;
  1608. X    PM = 0;
  1609. X  }
  1610. X  plus = 0;
  1611. X  minus = 0;
  1612. X
  1613. X  d = a + 10;
  1614. X  e = a + 14;
  1615. X
  1616. X  if (((von == 1) && (bis == 32000)) || ((von == 32000) && (bis == 1))) LR++;
  1617. X
  1618. X  if ((USER.leserichtung != 1) && (LR != 0)) {
  1619. X    i = von;
  1620. X    von = bis;
  1621. X    bis = i;
  1622. X  }
  1623. X  if (von > bis) {
  1624. X    while (fgets(ex, 250, fp) != NULL) {
  1625. X        i = atoi(ex);
  1626. X        if(i != 0) minus++;
  1627. X        if (ALLE == 1) {
  1628. X            if ((i >= bis) && (i <= von)) {
  1629. X                fputs(ex, ff);
  1630. X                plus++;
  1631. X            }
  1632. X        } else {
  1633. X            strcpy(s, (unsigned char *) strcopy(ex, a, b));
  1634. X            if (LASTLOG < dateconv(s)) {
  1635. X                fputs(ex, ff);
  1636. X                plus++;
  1637. X            }
  1638. X            if (LASTLOG == dateconv(s)) {
  1639. X                strcpy(s, (unsigned char *) strcopy(ex, d, e));
  1640. X                if (LASTTIME <= timeconv(s)) {
  1641. X                    fputs(ex, ff);
  1642. X                    plus++;
  1643. X                }
  1644. X            }
  1645. X        }
  1646. X    }
  1647. X    fclose(ff);
  1648. X
  1649. X    if (PM == 1)
  1650. X        sprintf(s, "sort -nr -o %s %s", tmp, tmp);
  1651. X    else
  1652. X        sprintf(s, "sort -n -o %s %s", tmp, tmp);
  1653. X    system(s);
  1654. X  }
  1655. X  else {
  1656. X    while (fgets(ex, 250, fp) != 0) {
  1657. X        i = atoi(ex);
  1658. X        if(i != 0) minus++;
  1659. X        if (ALLE == 1) {
  1660. X            if ((i >= von) && (i <= bis)) {
  1661. X                fputs(ex, ff);
  1662. X                plus++;
  1663. X            }
  1664. X        } 
  1665. X        else {
  1666. X            strcpy(s, (unsigned char *) strcopy(ex, a, b));
  1667. X            if (LASTLOG < (long) dateconv(s)) {
  1668. X                fputs(ex, ff);
  1669. X                plus++;
  1670. X            }
  1671. X            if (LASTLOG == (long) dateconv(s)) {
  1672. X                strcpy(s, (unsigned char *) strcopy(ex, d, e));
  1673. X                if (LASTTIME <= (long) timeconv(s)) {
  1674. X                    fputs(ex, ff);
  1675. X                    plus++;
  1676. X                }
  1677. X            }
  1678. X        }
  1679. X    }
  1680. X    fclose(ff);
  1681. X  }
  1682. X  fclose(fp);
  1683. X
  1684. X  if (plus != 0) show(tmp, 9999, USER.more + 100);
  1685. X
  1686. X  unlink(tmp);
  1687. X
  1688. X  if (plus == 0) {
  1689. X    ansi("md");
  1690. X    printf("%s", LE206_MSG);
  1691. X    ansi("me");
  1692. X    if ((minus - plus) > 0)
  1693. X        printf("\n%s %d %s", LE207_MSG, minus, LE208_MSG);
  1694. X    else
  1695. X        printf("\n%s", LE209_MSG);
  1696. X  }
  1697. X  else if ((plus < 19) || (plus > 21)) {
  1698. X    if ((minus - plus) > 0)
  1699. X        printf("\n%s %d %s", LE210_MSG, (minus - plus), LE211_MSG);
  1700. X    else
  1701. X        printf("\n%s", LE212_MSG);
  1702. X  }
  1703. X  printf("\n");
  1704. X
  1705. X  return;
  1706. X}
  1707. X
  1708. X
  1709. X
  1710. X/***************************************************************************/
  1711. X/*      FUNKTION  loeschen2()                            */
  1712. X/*  BESCHREIBUNG  Persoenliche Post selektieren (je nach Parameter) und    */
  1713. X/*                loeschen.                           */
  1714. X/*     PARAMETER  arg  =  Selektions-Schluessel                            */
  1715. X/*          mode =  DUMMY (!)                                        */
  1716. X/*     RUECKGABE  keine                                                       */
  1717. X/***************************************************************************/
  1718. X
  1719. Xvoid loeschen2(arg, mode)
  1720. Xunsigned char arg[];
  1721. Xunsigned char mode;
  1722. X{
  1723. X  FILE *fp;
  1724. X  FILE *ff;
  1725. X  unsigned char ex[255];
  1726. X  unsigned char s[STRING];
  1727. X  unsigned char tmp[STRING];
  1728. X  int a, b, i;
  1729. X  int von, bis;
  1730. X  int k;
  1731. X  int plus;
  1732. X  int PM;
  1733. X  int COPIES = 0;
  1734. X
  1735. X  if((USER.level == GUEST_LEV) || (arg[0] == '\0')){
  1736. X    return;
  1737. X  }
  1738. X
  1739. X  i = 0;
  1740. X  k = -1;
  1741. X  while (arg[i] != '\0') {
  1742. X    if (arg[i] == '-') k = i;
  1743. X    i++;
  1744. X  }
  1745. X
  1746. X  if ((arg[0] == '>') || (arg[0] == '<')){
  1747. X    COPIES++;
  1748. X    arg[0] = '\0';
  1749. X    k = -1;
  1750. X  }
  1751. X
  1752. X  if ((arg[0] != '\0') && (k == -1)) {
  1753. X    ansi("md");
  1754. X    printf(" %s\n", LE213_MSG);
  1755. X    ansi("me");
  1756. X    return;
  1757. X  }
  1758. X  von = 1;
  1759. X  bis = 32000;
  1760. X
  1761. X  if (k != -1) {
  1762. X    strcpy(s, (unsigned char *) strcopy(arg, 0, (k - 1)));
  1763. X    von = atoi(s);
  1764. X    strcpy(s, (unsigned char *) strcopy(arg, (k + 1), length(arg)));
  1765. X    bis = atoi(s);
  1766. X
  1767. X    if (von == 0) von = 1;
  1768. X    if (bis == 0) bis = 32000;
  1769. X  }
  1770. X  if (strcomp(BRETT, "PM") != 0) {
  1771. X    a = 60;
  1772. X    b = 69;
  1773. X  } else {
  1774. X    a = 58;
  1775. X    b = 65;
  1776. X  }
  1777. X
  1778. X  maybe_locked(INHALT, "r");
  1779. X
  1780. X  sprintf(tmp, "%s/%d.l2", TMP, getpid());
  1781. X  sprintf(s, "cp %s %s > /dev/null", INHALT, tmp);
  1782. X  system(s);
  1783. X
  1784. X  fp = fopen(tmp, "r");
  1785. X  if (fp == NULL) {
  1786. X    nerror("lesen2.c", 217, "loeschen2", "Datei-Lesefehler", tmp);
  1787. X  }
  1788. X  fgets(ex, 250, fp);
  1789. X  fgets(ex, 250, fp);
  1790. X
  1791. X  PM = 1;
  1792. X  if (strcomp(BRETT, "PM") != 0) {
  1793. X    i = von;
  1794. X    von = bis;
  1795. X    bis = i;
  1796. X    PM = 0;
  1797. X  }
  1798. X  plus = 0;
  1799. X
  1800. X  if (von > bis) {
  1801. X    while (fgets(ex, 250, fp) != NULL) {
  1802. X        i = atoi(ex);
  1803. X        if (COPIES != 0) {
  1804. X            if(ex[5] != '>') i = -1;
  1805. X        }
  1806. X        if ((i >= bis) && (i <= von)) {
  1807. X            sprintf(s, "%d", i);
  1808. X            loeschen(s);
  1809. X            plus++;
  1810. X        }
  1811. X    }
  1812. X  }
  1813. X  else {
  1814. X    while (fgets(ex, 250, fp) != NULL) {
  1815. X        i = atoi(ex);
  1816. X        if (COPIES != 0) {
  1817. X            if(ex[5] != '>') i = -1;
  1818. X        }
  1819. X        if ((i >= von) && (i <= bis)) {
  1820. X            sprintf(s, "%d", i);
  1821. X            loeschen(s);
  1822. X            plus++;
  1823. X        }
  1824. X    }
  1825. X  }
  1826. X  fclose(fp);
  1827. X
  1828. X  if (plus == 0) {
  1829. X    ansi("md");
  1830. X    printf(" <- %s\n", LE214_MSG);
  1831. X    ansi("me");
  1832. X    return;
  1833. X  }
  1834. X  unlink(tmp);
  1835. X
  1836. X  return;
  1837. X}
  1838. END_OF_FILE
  1839.   if test 10703 -ne `wc -c <'src/lesen2.c'`; then
  1840.     echo shar: \"'src/lesen2.c'\" unpacked with wrong size!
  1841.   fi
  1842.   # end of 'src/lesen2.c'
  1843. fi
  1844. if test -f 'src/mbox.h' -a "${1}" != "-c" ; then 
  1845.   echo shar: Will not clobber existing file \"'src/mbox.h'\"
  1846. else
  1847.   echo shar: Extracting \"'src/mbox.h'\" \(13205 characters\)
  1848.   sed "s/^X//" >'src/mbox.h' <<'END_OF_FILE'
  1849. X/***************************************************************************/
  1850. X/*        PROGRAMM  ix/MBox                           */
  1851. X/*             DATEI  mbox.h                           */
  1852. X/*             AUTOR  vs (Volker Schuermann/MINIX-Version)           */
  1853. X/*  LETZTE AENDERUNG  04.09.1992                       */
  1854. X/***************************************************************************/
  1855. X#include "mbox.msg"
  1856. X#include "defs.h"
  1857. X#include "patchlevel.h"
  1858. X
  1859. X
  1860. X/***************************************************************************/
  1861. X/* >ORGANIZATION  -  frei waehlbar (moeglichst identisch mit dem ent-      */
  1862. X/*             sprechenden Eintrag fuer NEWS)               */
  1863. X/* >SYSTEM        -  frei waehlbar (Name der Mailbox)                  */
  1864. X/***************************************************************************/
  1865. X
  1866. X#define ORGANIZATION     "THE UNDERGROUND NETWORK"
  1867. X#define SYSTEM           "The Time Traveling Agency"  
  1868. X
  1869. X
  1870. X
  1871. X/***************************************************************************/
  1872. X/*  VERSION       -  wird vom Autor (und nur vom dem) geandert           */
  1873. X/*                   Co-Autoren, Portierer etc. koennen sich gefaelligst   */
  1874. X/*             ihren eigenen Eintrag basteln.                   */
  1875. X/*  AUTOR         -  das bin ich - Hallo auch !                   */
  1876. X/***************************************************************************/
  1877. X
  1878. X#define VERSION             "ix/MBox 1.6"
  1879. X#define AUTOR            "by <volkers@unnet.w.open.DE>"
  1880. X
  1881. X
  1882. X
  1883. X
  1884. X/***************************************************************************/
  1885. X/* >UUCPSITE       - Systemname innerhalb der UUCP-Netze           */
  1886. X/* >UUCPID2        - Adresse (Domain-) im Internet               */
  1887. X/* >UUCPID1        - Adresse (Domain-) im lokalen UUCP-Netz            */
  1888. X/* >UUCPBANG       - Adresse als BANG-Pfad                   */
  1889. X/*  UUCPCOSTS      - Gebuehrenaufstellung                   */
  1890. X/* >SMARTHOST       -                                */
  1891. X/***************************************************************************/
  1892. X
  1893. X#define UUCPSITE         "unnet"
  1894. X#define UUCPID2          "unnet.w.open.DE"        
  1895. X#define UUCPID1             "unnet.ruhr.SUB.ORG"
  1896. X#define UUCPBANG         "~!unido!horga!xenox!unnet!"
  1897. X#define UUCPCOSTS        "/usr/spool/uucp/.costs"
  1898. X#define SMARTHOST    "xenox"
  1899. X
  1900. X
  1901. X
  1902. X/***************************************************************************/
  1903. X/*  X_MAIL_DEMON    - Name des X-Mail-Daemons (HAENDE WEG !!!)            */
  1904. X/***************************************************************************/
  1905. X
  1906. X#define X_MAIL_DEMON     "X-Mail-Daemon"
  1907. X
  1908. X
  1909. X
  1910. X
  1911. X/***************************************************************************/
  1912. X/*  LIB             - Pfad zum MBox-Directory LIB               */
  1913. X/*  TMP              - Directory fuer temporaere Dateien           */
  1914. X/* >NEWS         - Pfad zum SPOOL-Directory fuer NEWS           */
  1915. X/*  NEWSGROUPS       - Pfad zur Datei mit den Erlaeuterungen der Gruppen   */
  1916. X/*  ERRMBOX          - Mailbox des Error-Users (POSTMASTER)           */
  1917. X/*  MAILDROP         - Pfad zu den Maildrops der SH-User           */
  1918. X/* >NGROUPS          - Pfad zur "active"-Datei von NEWS               */
  1919. X/*  AGROUPS         - Pfad zur MBox-"active"-Datei               */
  1920. X/***************************************************************************/
  1921. X
  1922. X#define LIB             "./lib"
  1923. X#define TMP             "/tmp"
  1924. X#define NEWS             "/usr/spool/news"
  1925. X#define NEWSGROUPS    "/usr/lib/news/newsgroups"
  1926. X#define ERRMBOX          "/usr/spool/mail/postmaster"
  1927. X#define MAILDROP         "/usr/spool/mail"
  1928. X#define NGROUPS          "/usr/lib/news/active"
  1929. X#define AGROUPS          "./etc/active"
  1930. X
  1931. X
  1932. X
  1933. X
  1934. X
  1935. X/***************************************************************************/
  1936. X/* >CONSOLE          - Geraet/Datei fuer die Logbuch-Ausgaben           */
  1937. X/*            Ist CONSOLE als "REDIRECT" definiert, wird aus der */
  1938. X/*                      Datei CDIRECTFL der Name der Ausgabedatei gelesen  */
  1939. X/*            gelesen                               */
  1940. X/*  CDIRECTFL         - Geraet/Datei wohin CONSOLE-Info ausgeben wird       */
  1941. X/*                Die Datei ENTHAELT DEN NAMEN der Ausgabedatei !!!  */
  1942. X/* >CPRN              - Geraet/Datei fuer Fehler-Ausgaben           */
  1943. X/* >POSTMASTER        - Name des SYSOPs (identisch mit dessen SH-Account)  */
  1944. X/*  MAX_BPS           - Maximale Modem-Ubertragungsrate in BPS             */
  1945. X/* >PMS_TTY           - Nummer des einzigen Terminals, auf dem sich "root" */
  1946. X/*            anmelden darf                       */
  1947. X/*  GUEST             - MBox-Account fuer Besucher               */
  1948. X/*  UDBASE            - Pfad zur Teilnehmer-Datenbank               */
  1949. X/*  UDSEQ             - Pfad zur Teilnehmer-SEQ-Datei               */
  1950. X/***************************************************************************/
  1951. X
  1952. X#define CONSOLE             "REDIRECT"
  1953. X#define CDIRECTFL        "/etc/mbox.out"
  1954. X#define CPRN             "/tmp/errlog"
  1955. X#define POSTMASTER       "volkers"
  1956. X#define PMS_TTY          "/dev/tty4"
  1957. X#define MAX_BPS          19200
  1958. X#define GUEST            "GAST"
  1959. X#define UDBASE           "./etc/users.data"
  1960. X#define UDSEQ            "./etc/users.seq"
  1961. X
  1962. X
  1963. X
  1964. X
  1965. X/***************************************************************************/
  1966. X/*  BEFEHLE        - Pfad zur Befehls-Tabelle                   */
  1967. X/*  HILFE          - Pfad zu den HELP-Texten                   */
  1968. X/*  KURZHILFE       - Kurzuebersicht                       */
  1969. X/*  INTRO          - Pfad zur INTRO-Meldung                   */
  1970. X/*  LOGO           - Optionaler Text als Mailbox-LOGO                */
  1971. X/*  SYSINFO       - Allgemeine Infos zur MBox                   */
  1972. X/***************************************************************************/
  1973. X
  1974. X#define BEFEHLE             "./etc/help.befehle"  
  1975. X#define HILFE             "./etc/help.hilfe"
  1976. X#define KURZHILFE        "./etc/help.shorthelp"
  1977. X#define INTRO            "./etc/intro"
  1978. X#define LOGO             "./etc/logo"
  1979. X#define SYSINFO        "./etc/sysinfo"
  1980. X
  1981. X
  1982. X
  1983. X/***************************************************************************/
  1984. X/*  SEQ             - Pfad zur MBox-SEQ-Datei (Anzahl der Anrufe)       */
  1985. X/*  CALLS           - Pfad zur MBox-CALLS-Datei (Logfile)           */
  1986. X/*  WHO             - Pfad zur MBox-WHO-Datei (gerade aktive User)       */
  1987. X/***************************************************************************/
  1988. X
  1989. X#define SEQ              "./etc/mbox.seq"
  1990. X#define CALLS            "./etc/mbox.calls"
  1991. X#define WHO              "./etc/mbox.who"
  1992. X
  1993. X
  1994. X
  1995. X
  1996. X/***************************************************************************/
  1997. X/*  EDITORS          - Pfad zur Liste der verfuegbaren Eddies           */
  1998. X/*  GAMES            - Pfad zur Liste der Online-Spiele               */
  1999. X/*  MAX_GAMES          - Anzahl der max. angebotenen Spiele           */
  2000. X/* >CHAT             - Pfad zum CHAT-Programm                   */
  2001. X/*  RSH              - MBox-RSH; NICHT identisch mit RemoteSH/RestrictedSH */
  2002. X/*  UDCS         - Pfad zur Liste der 'User defined Commands'       */
  2003. X/*  PACKERS         - Pfad zur Liste der Komprimierer/Archivierer         */
  2004. X/***************************************************************************/
  2005. X
  2006. X#define EDITORS          "./etc/mbox.editors"
  2007. X#define GAMES             "./etc/mbox.games"
  2008. X#define MAX_GAMES    10
  2009. X#define CHAT             "/usr/bin/chat"
  2010. X#define RSH              "./mbrsh"
  2011. X#define UDCS        "./etc/mbox.udc"
  2012. X#define PACKERS        "./etc/mbox.packers"
  2013. X
  2014. X
  2015. X
  2016. X
  2017. X/***************************************************************************/
  2018. X/*  ROOT_UID          - siehe "/etc/passwd"                   */
  2019. X/*  ROOT_GID          - dito                           */
  2020. X/*  GUEST_GID           - dito (unbedingt != GID fuer "normale" User)        */
  2021. X/***************************************************************************/
  2022. X
  2023. X#define ROOT_UID          0
  2024. X#define ROOT_GID          0
  2025. X#define GUEST_GID         1
  2026. X
  2027. X
  2028. X
  2029. X
  2030. X
  2031. X/***************************************************************************/
  2032. X/* >FIRST_EX_TTY       - Nummer des ersten seriellen Terminals           */
  2033. X/*  MAX_TERMINALS      - Max. Anzahl der aktiven Terminals            */
  2034. X/***************************************************************************/
  2035. X
  2036. X#define FIRST_EX_TTY    64
  2037. X#define MAX_TERMINALS    20
  2038. X
  2039. X
  2040. X
  2041. X
  2042. X/***************************************************************************/
  2043. X/* >SIGNATURE          - Name des '.signature'-File im $HOME eins SH-Users */
  2044. X/* >TSET               - Pfad zum TSET-Programm                   */
  2045. X/* >EXPIRE             - Pfad zum EXPIRE-Programm               */
  2046. X/*  MB-DAEMON          - Pfad zum MB-DAEMON-Programm               */
  2047. X/*  MB_DLOG            - Pfad zum MB-DAEMON-Statistik-File           */
  2048. X/*  XMDLOG           - Pfad zum XMD-Protokoll-File                   */
  2049. X/*  XMD_ALIAS           - Pfad zur Alias-Datei des XMD               */
  2050. X/*  RETURNED_MAIL      - Absender einer unzustellbaren Mail                */
  2051. X/***************************************************************************/
  2052. X
  2053. X#define SIGNATURE        ".wmailsign"
  2054. X#define TSET             "./etc/tset"
  2055. X#define EXPIRE           "/usr/lib/news/expire"
  2056. X#define MB_DAEMON        "/usr/bin/mb-daemon"
  2057. X#define MB_DLOG          "./etc/mbd.log"
  2058. X#define XMDLOG             "/usr/adm/xmd.log"
  2059. X#define XMD_ALIAS    "./etc/xmd.alias"
  2060. X#define RETURNED_MAIL   "From postmaster"
  2061. X
  2062. X
  2063. X
  2064. X/***************************************************************************/
  2065. X/* >COMPRESS        - Pfad zum Standard-COMPRESS               */
  2066. X/* >GREP         - Pfad zum SUCH-Programm (GREP -L: Filename only !)*/
  2067. X/* >SORTEDCUT           - Zaehlt die Downloads pro File               */
  2068. X/* >SECONDCUT           - Zaehlt die Anrufe pro User               */
  2069. X/* >UUX                 - Fuehrt Kommandos auf fremden Sites aus       */
  2070. X/*  TAR            - Tar-Synopsis zum bilden eines neuen Archives     */
  2071. X/***************************************************************************/
  2072. X
  2073. X#define COMPRESS         "/usr/bin/compress"
  2074. X#define GREP             "/usr/bin/grep -l"
  2075. X#define SORTEDCUT       "cut -d' ' -i2 -f3 %s | sort - | uniq -c | sort -r - | sed '/ \\//s//   \\//g' > %s"
  2076. X#define SECONDCUT    "cut -c6-35 %s | sed '/  /s//    /g' | sort - | uniq -c | sort -r - > %s"
  2077. X#define UUX        "uux -r"
  2078. X#define TAR        "/usr/bin/tar cf"
  2079. X
  2080. X
  2081. X
  2082. X/***************************************************************************/
  2083. X/*  PDNG         - Name der Freeware/Shareware/PD-NG           */
  2084. X/*  PDLOG                - PD-Download-Protokoll               */
  2085. X/*  PDSCRIPT         - Pfad zum Protokoll der UPLOADs           */
  2086. X/* >NEWS_MINIMUM         - Mindestens verfuegbare NGs               */
  2087. X/*  MAX_PER_NG           - Maximale Anzahl der Eintraege pro NG           */
  2088. X/*  EXPIRE_DAYS          - Ab wann loeschen, wenn MAX_PER_NG erreicht ist  */
  2089. X/*  MAX_XMD_ALIAS     - Wieviele Namen kann XMD "umleiten"              */
  2090. X/*  NAT_DOMAIN1          - Nationale Domains (gebuehrenfrei)           */
  2091. X/*  NAT_DOMAIN2          - (dito)                       */
  2092. X/*  NAT_DOMAIN3          - (dito)                       */
  2093. X/***************************************************************************/
  2094. X
  2095. X#define PDNG             "local.pd"
  2096. X#define PDLOG             "./etc/pd.log"
  2097. X#define PDSCRIPT         "./etc/pd.script"
  2098. X#define NEWS_MINIMUM     "local xenox de amnet zerberus"
  2099. X#define MAX_PER_NG       2000
  2100. X#define EXPIRED_DAYS     32
  2101. X#define MAX_XMD_ALIAS   20
  2102. X#define NAT_DOMAIN1      ".de"
  2103. X#define NAT_DOMAIN2      ".sub.org"
  2104. X#define NAT_DOMAIN3      ".de" 
  2105. X
  2106. X
  2107. X
  2108. X
  2109. X
  2110. X/***************************************************************************/
  2111. X/*  SZ            - ZModem Download                   */
  2112. X/*  SX              - X-Modem                       */
  2113. X/*  SB                  - Y-Modem                       */
  2114. X/*  RZ              - ZModem Upload                   */
  2115. X/*  RX                    - X-Modem                        */
  2116. X/*  RB                    - Y-Modem                       */
  2117. X/***************************************************************************/
  2118. X
  2119. X#define SZ               "/usr/bin/sz"
  2120. X#define SX               "/usr/bin/sx"
  2121. X#define SB              "/usr/bin/sb"
  2122. X
  2123. X#define RZ               "/usr/bin/rz"
  2124. X#define RX             "/usr/bin/rx"
  2125. X#define RB             "/usr/bin/rb"
  2126. X
  2127. X
  2128. X
  2129. X
  2130. X
  2131. X/***************************************************************************/
  2132. X/*  TARIF                 - Pfennige pro Einheit (Telefongebuehren)       */
  2133. X/*  NZNT                  - Sekunden pro Einheit Nahzone/Normal-Tarif       */
  2134. X/*  NZBT                  -                      Nahzone/Billig-Tarif       */
  2135. X/*  RZNT                  -                  Regionalzone/Normal-Tarif */
  2136. X/*  RZBT          -             Regionalzone/Billig-Tarif */
  2137. X/*  WZNT          -             Weitzone/Normal-Tarif     */
  2138. X/*  WZBT          -             Weitzone/Billig-Tarif     */
  2139. X/***************************************************************************/
  2140. X
  2141. X#define TARIF            23
  2142. X#define NZNT             360
  2143. X#define NZBT             720
  2144. X#define RZNT              60
  2145. X#define RZBT            120
  2146. X#define WZNT             21
  2147. X#define WZBT             42
  2148. X
  2149. X
  2150. X
  2151. X
  2152. X/***************************************************************************/
  2153. X/*  PRO_ENTRIES          - Maximal Eintraege in MBOX.CALLS             */
  2154. X/*  MAX_TAGE          - Max. Eintraege im PRO-Diagramm           */
  2155. X/***************************************************************************/
  2156. X
  2157. X#define PRO_ENTRIES      999
  2158. X#define MAX_TAGE    16
  2159. X
  2160. X
  2161. X
  2162. X/***************************************************************************/
  2163. X/*  MVERSION          - Version des MB-DAEMON               */
  2164. X/*  REFLECT_NG          - Auf diese Gruppe wird "reflektiert"           */
  2165. X/*  REFLECT_LOG          - LOG-File des Reflektors               */
  2166. X/*  DIRLIST          - Wird gesendet bei DIRLIST-Request            */
  2167. X/*  REFLECTUID          - UID des Reflektors (siehe /etc/passwd)         */
  2168. X/*  TZS              - ?? Fehler in der Zeitberechnung ??           */
  2169. X/***************************************************************************/
  2170. X
  2171. X#define MVERSION        "+++ Un.Net Reflecting Device - Version 1.6 (PL10j7) / MB-DAEMON +++"
  2172. X#define REFLECT_NG      "xenox.test"
  2173. X#define REFLECT_LOG     "/local/mbox/etc/reflector.log"
  2174. X#define DIRLIST         "/public/pd/DIRLIST"
  2175. X#define REFLECTUID      22
  2176. X#define TZS        1
  2177. X
  2178. X
  2179. X/***************************************************************************/
  2180. X/*  MIME-VERSION      - MIME Versionsnummer (f. MultiMedia-Mail)       */
  2181. X/***************************************************************************/
  2182. X
  2183. X#define MIME_VERSION    "1.0"
  2184. X
  2185. X
  2186. X
  2187. END_OF_FILE
  2188.   if test 13205 -ne `wc -c <'src/mbox.h'`; then
  2189.     echo shar: \"'src/mbox.h'\" unpacked with wrong size!
  2190.   fi
  2191.   # end of 'src/mbox.h'
  2192. fi
  2193. echo shar: End of archive 10 \(of 15\).
  2194. cp /dev/null ark10isdone
  2195. MISSING=""
  2196. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
  2197.     if test ! -f ark${I}isdone ; then
  2198.     MISSING="${MISSING} ${I}"
  2199.     fi
  2200. done
  2201. if test "${MISSING}" = "" ; then
  2202.     echo You have unpacked all 15 archives.
  2203.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2204. else
  2205.     echo You still must unpack the following archives:
  2206.     echo "        " ${MISSING}
  2207. fi
  2208. exit 0
  2209. exit 0 # Just in case...
  2210.