home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume31 / mbox / part06 < prev    next >
Encoding:
Text File  |  1992-07-09  |  61.0 KB  |  2,050 lines

  1. Newsgroups: comp.sources.misc
  2. From: Volker.Schuermann@unnet.w.open.de@unnet (Volker Schuermann)
  3. Subject:  v31i022:  mbox - A BBS for UNIX and MINIX v1.6 PL10, Part06/11
  4. Message-ID: <1992Jul10.050339.27565@sparky.imd.sterling.com>
  5. X-Md4-Signature: a24a1c952ebbf7c61fa38a72491b929f
  6. Date: Fri, 10 Jul 1992 05:03:39 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Volker.Schuermann@unnet.w.open.de@unnet (Volker Schuermann)
  10. Posting-number: Volume 31, Issue 22
  11. Archive-name: mbox/part06
  12. Environment: MINIX, ISC, ESIX, SVR3
  13. Supersedes: mbox: Volume 29, Issue 63-72
  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. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  20. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  21. # Contents:  etc/deutsch.befehl etc/deutsch.hilfe etc/help.hilfe
  22. #   src/pd.c
  23. # Wrapped by kent@sparky on Thu Jul  9 23:26:02 1992
  24. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  25. echo If this archive is complete, you will see the following message:
  26. echo '          "shar: End of archive 6 (of 11)."'
  27. if test -f 'etc/deutsch.befehl' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'etc/deutsch.befehl'\"
  29. else
  30.   echo shar: Extracting \"'etc/deutsch.befehl'\" \(2848 characters\)
  31.   sed "s/^X//" >'etc/deutsch.befehl' <<'END_OF_FILE'
  32. X/***************************************************************************/
  33. X/* Wer diese Datei aendert sollte GENAU wissen was er tut. Die Reihen-     */
  34. X/* folge der Befehle ist NICHT willkuerlich festgelegt worden, sondern     */
  35. X/* entspricht der Vorgabe fuer GEOnet-Befehle und deren Abkuerzungen.      */
  36. X/*                                       */
  37. X/* S(chreiben) kommt vor SE(tup) und L(esen) vor LOE(schen) etc. ... wer   */
  38. X/* sich nicht voellig sicher ist, sollte die Datei einfach im Urzustand    */
  39. X/* belassen.                                   */
  40. X/*                                           */
  41. X/*                 Die Bedeutung der versch. Spalten                */
  42. X/* ======================================================================= */
  43. X/* ID            - Nummer des Befehls (siehe "loop()")               */
  44. X/* Intern        - Benoetigtes Userlevel                   */
  45. X/* Extern        - Bei einigen Befehle wird unterscheiden zwischen intern  */
  46. X/*           und extern. Z.B. beim Befehl "schreiben" wird diese     */
  47. X/*           Regelung angewendet, damit User zwar an die lokalen     */
  48. X/*           Bretter senden duerfen, nicht aber an die externen.     */
  49. X/* Prototyp      - Enthaelt diese Spalte eine '1', wird der Befehl bei der */
  50. X/*           Befehlsuebersicht angezeigt.                   */
  51. X/* Befehl        - Unter diesem Namen wird der Befehl aufgerufen           */
  52. X/*                                       */
  53. X/*                                       */
  54. X/* ACHTUNG: Zwischen Kommentar und Ueberschrift EINE Leerzeile einfuegen ! */
  55. X/***************************************************************************/
  56. X
  57. XID    Intern  Extern  Prototyp  Befehl 
  58. X===============================================
  59. X110    0    0    1    +
  60. X120    0    0    1    -
  61. X130    0    0    1    Anrufer
  62. X140    1    0    1    Ansage
  63. X150    0    0    1    Brett
  64. X160    0    2    1    Brief
  65. X170    0    0    1    Chat
  66. X170    0    0    0    Dialog
  67. X370    0    0    0    Datum
  68. X170    0    0    0    Co
  69. X999    0    0    1    Demo
  70. X440     0       0       1       Download
  71. X210    0    0    1    Lesen
  72. X480    1    1    1    Edit
  73. X180    0    0    1    Ende
  74. X180    0    0    0    Quit
  75. X180    0    0    0    Log
  76. X460    0    0    0    Area
  77. X460    0    0    1    Gruppe
  78. X180    0    0    0    Goodbye
  79. X190    0    0    1    Hilfe
  80. X195    0    1    0    ~PD
  81. X200    0    0    1    Inhalt
  82. X200    0    0    0    Dir
  83. X205    0    0    0    Id
  84. X215    0    0    0    Level
  85. X220    1    1    1    Loeschen
  86. X330     0       0       1       Makro
  87. X240    6    6    1    Minix
  88. X240    6    6    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. X320    0    0    1    Version        
  113. X340    1    1    1    Weiterleiten
  114. X380    0    0    0    Zeit
  115. X125    1    9    0    Admin
  116. X130    0    0    0    Protokoll
  117. X250    0    0    1    PM
  118. X150    0    0    0    Cd
  119. X300    0    0    0    Finger
  120. X160    0    2    0    Mail
  121. X180    0    0    0    Quit
  122. X180    0    0    0    Exit
  123. X180    0    0    0    Logout
  124. X420    0    0    0    RING
  125. X350     0       0       0       Sleep
  126. X360     0       0       0       Keypressed
  127. X998    7    7    0    ~MAIL_DUMMY
  128. END_OF_FILE
  129.   if test 2848 -ne `wc -c <'etc/deutsch.befehl'`; then
  130.     echo shar: \"'etc/deutsch.befehl'\" unpacked with wrong size!
  131.   fi
  132.   # end of 'etc/deutsch.befehl'
  133. fi
  134. if test -f 'etc/deutsch.hilfe' -a "${1}" != "-c" ; then 
  135.   echo shar: Will not clobber existing file \"'etc/deutsch.hilfe'\"
  136. else
  137.   echo shar: Extracting \"'etc/deutsch.hilfe'\" \(18178 characters\)
  138.   sed "s/^X//" >'etc/deutsch.hilfe' <<'END_OF_FILE'
  139. X#?
  140. XBefehl "?"
  141. X
  142. XDie beim aktuellen Level verfuegbaren Befehle werden angezeigt. Um auch die
  143. Xuebrigen Befehle anzeigen zu lassen, muss als Argument ein "*" angegeben
  144. Xwerden.
  145. X
  146. X#0
  147. XBefehl "0" ("1 - 9")
  148. X
  149. XUeber die Ziffern 0-9 wird der dynamische Befehlspuffer aufgerufen. Die Ziffer
  150. X0 zeigt die aktuelle Belegung dieser "Hot-Keys" an, 1-9 rufen denn gespreicherten
  151. XBefehl ab. Ausserdem kann man diese Befehle auch mit Hilfe der Cursortasten
  152. XUP und DOWN durchblaettern.
  153. X
  154. X#+
  155. XBefehl "+"
  156. X
  157. XDas naechste Brett mit neuen Nachrichten wird aufgerufen. Innerhalb des Brettes
  158. Xkann mit den ueblichen Befehlen (Inhalt, Lesen) gearbeitet werden.
  159. X
  160. X#-
  161. XBefehl "-"
  162. X
  163. XDas vorherige Brett mit neuen Nachrichten wird aufgerufen. Innerhalb des
  164. XBrettes kann mit den ueblichen Befehlen (Inhalt, Lesen) gearbeitet werden.
  165. X
  166. X#ANRUFER
  167. XBefehl "Anrufer" ("Protokoll")
  168. X
  169. XEine Liste der Anrufer wird angezeigt. Wird "*" als Parameter angegeben,
  170. Xzeigt das System ALLE Eintaege des Protokolls an, sonst nur die letzten 21.
  171. X
  172. XDie Option "#" (also "Anrufer #") erstellt eine Statistik aus den Daten
  173. Xder Anrufer-Liste.
  174. X
  175. X#ANSAGE
  176. XBefehl "Ansage"
  177. X
  178. XWenn ein anderer Teilnehmer Ihnen eine persoenliche Nachricht senden will,
  179. Xwird ihm der "Ansage"-Text angezeigt. Sollten sie z.B. fuer laenger Zeit
  180. Xverreisen und desshalb nicht sofort antworten koennen, teilen sie das im
  181. X"Ansage"-Text mit.
  182. X
  183. X#BRETT
  184. XBefehl "Brett" ("cd")
  185. X
  186. XDie Nachrichten dieser MBox sind nach Themen geordnet in verschiedenen
  187. XBrettern zusammengefasst. Der Ausdruck "Brett" ist in diesem Zusammenhang
  188. Xgleichbedeutend mit dem Begriff "Newsgroup" der UUCP-Terminologie.
  189. X
  190. X
  191. XDie verschiedenen Einsatzmoeglichkeiten des Befehls:
  192. X
  193. X"Brett"             Alle Bretter mit neuen Artikeln werden angezeigt.
  194. X"Brett *"           Alle Bretter des Systems werden angezeigt. (Level)
  195. X
  196. X"Brett **"          ALLE Bretter des Systems werden angezeigt.
  197. X
  198. X"Brett +"           Es wird in's naechst hoehere Brett gewechselt.
  199. X
  200. X"Brett -"           Es wird in's naechst niedrigere Brett gewechselt. 
  201. X
  202. X"Brett !"           Der Name des aktuellen Brettes wird ausgegeben.
  203. X
  204. X"Brett BRETT"       Es wird in Brett "BRETT" gewechselt. Alle INHALT- und LESE-
  205. X                    Befehle beziehen sich jetzt auf "BRETT". 
  206. X
  207. X
  208. XDa verschienden Bretter allerdings nach dem Schema "Oberbrett.Unterbrett" auf-
  209. Xgebaut sind, gibt es noch einige spezielle Parameter:
  210. X
  211. X"Brett #"           Die sogenannten Oberbretter werden angezeigt. 
  212. X
  213. X"Brett OBERBRETT"   Wechselt ins Oberbrett OBERBRETT. Der Befehl INHALT
  214. X                    zeigt nun die Unterbretter dieses Oberbrettes an !!!
  215. X
  216. X"Brett UNTERBRETT"  Es wird ins Brett OBERBRETT.UNTERBRETT gewechselt.
  217. X
  218. X"Brett .."          Von OBERBRETT.UNTERBRETT gelangt man so wieder auf die
  219. X                    Ebene OBERBRETT.
  220. X
  221. X#BRIEF
  222. XBefehl "Brief" ("Mail");
  223. X
  224. XPersoenliche Post wird an Teilnehmer dieser MBox oder aber auch an User auf
  225. Xeinem fremden Rechner verschickt. 
  226. X
  227. XUm einen "internen" Teilnehmer anzuschreiben wird Folgendes eingegeben:
  228. X
  229. X"Brief USERNAME", "Brief ALIAS" oder "Brief SH-ACCOUNT"
  230. X
  231. XZ.B.: "Brief Volker Schuermann", "Brief volkers"
  232. X
  233. XDie MBox erkennt anhand dieser Angaben den Empfaenger und ruft zur Eingabe
  234. Xden Editor auf. Nun kann eine Nachricht geschrieben werden. Die persoenliche
  235. XUNTERSCHRIFT (siehe dort) wird der Nachricht angehaengt und mit verschickt.
  236. X
  237. X
  238. XBei einem Brief an "externe" Teilnehmer sieht die Anschrift etwas anderes
  239. Xaus:
  240. X
  241. X"Brief HOST!USER", "Brief USER@HOST.DOMAIN"
  242. X
  243. XZ.B.: "Brief unnet!volkers", "brief volkers@unnet.ruhr.sub.org"
  244. X
  245. XAnsonsten verhaelt sich der Vorgang genauso wie bei einer "internen" Nachricht.
  246. X
  247. XACHTUNG: Als eingetragener Teilnehmer duerfen Sie auch Post von "externen"
  248. XUsern empfangen. Folgende Adressierungs-Methode ist dabei verbindlich:
  249. X
  250. X"mail unnet!VORNAME.NAME"
  251. X
  252. XDie Adresse "unnet!VORNAME.NAME" entspricht "VORNAME.NAME@unnet.ruhr.sub.org"
  253. Xoder auch "..!unido!uka!smurf!horga!xenox!unnet!VORNAME.NAME" ... je nach 
  254. XDomain des Brief-Autoren.
  255. X
  256. X"VORNAME.NAME" steht in diesem Fall fuer Ihren (User-) Namen, kann aber auch
  257. Xkomplett durch Ihr Alias ersetzt werden (AUSNAHME !) ...
  258. X
  259. XZ.B.: "mail Volker.Schuermann@unnet.ruhr.sub.org"
  260. X
  261. X
  262. X#CHAT
  263. XBefehl "Chat" ("Dialog")
  264. X
  265. XSie betreten den Konferenzbereich. Dort koennen Sie sich mit anderen Teil-
  266. Xnehmern unterhalten. Dabei spielt es keine Rolle, ob Ihre Gespraechspartner
  267. Xebenfalls die MBox benutzen, oder auf Betriebssystem-Ebene arbeiten.
  268. X
  269. X#DOWNLOAD
  270. XBefehl "Download"
  271. X
  272. XDieser Befehl uebertraegt Artikel mit Hilfe eines Protokolls. Angeboten
  273. Xwerden ASCII (einfaches Auflisten der Textdatei) und SX/SZ/SB. Moegliche
  274. XParameter sind:
  275. X
  276. X"Download NUMMER"       Uebertraegt den Artikel No. "NUMMER".
  277. X
  278. X"Download NUM1-NUM2"    Uebertraegt die Artikel von No. "NUM1" bis "NUM2".
  279. X
  280. X"Download NUM-"         Alle Artikel von "NUM" bis 32000 werden uebertragen.
  281. X
  282. X"Download -NUM"         Alle Artikel von 1 bis "NUM" werden uebertragen.
  283. X
  284. XACHTUNG: "Download ??-??" uebertraegt alle angeforderten Artikel OHNE
  285. XUnterbrechung. Die UNIX-Befehle "RX/RZ/RB" unterstuetzen diesen Modus.
  286. X
  287. X#EDIT
  288. XBefehl "Edit"
  289. X
  290. XEin Artikel kann nachtraeglich ueberarbeitet werden. Abhaengig vom USER-
  291. XLevel wird der Zugriff entweder auf alle Artikel gewaehrt, oder aber nur
  292. Xauf solche Artikel, die der jeweilige User selbst gesendet hat.
  293. X
  294. X#ENDE
  295. XBefehl "Ende" ("Quit")
  296. X
  297. XDas Programm wird beendet. Teilnehmer ohne SH-Account loesen mit diesem
  298. XBefehl auch die Verbindung ... also VORSICHT !
  299. X
  300. XNormalerweise wird nach der Eingabe des Befehls "Ende" das Scanner-Datum und
  301. Xdie Scanner-Zeit aktualisiert. Gibt man als Parameter ein "*" an, wird
  302. Xdiese Aktion unterbunden.
  303. X
  304. X#GRUPPE
  305. XBefehl "Gruppe" ("Area")
  306. X
  307. XDieser Befehl wird dazu benutzt, Gruppen oder Untergruppen zu ueberspringen.
  308. XAbhaengig von der Option '+', '-', '++', '--' werden nur Untergruppen oder
  309. Xganze Gruppen vorwaerts oder rueckwaerts ausgelassen, und direkt zu naechsten
  310. XGruppe gesprungen.
  311. X
  312. X#HILFE
  313. XBefehl "Hilfe"
  314. X
  315. XZu allen Befehlen dieses Systems gibt es mit "HILFE" eine kurze Information.
  316. X
  317. X"Hilfe"           eine Zusammenfassung der Befehle wird angezeigt.
  318. X"Hilfe *"         die gesamte Hilfsdatei wird ausgegeben.
  319. X"Hilfe BEFEHL"    zeigt nur den Eintrag zum Befehl "BEFEHL".
  320. X
  321. X#INHALT
  322. XBefehl "Inhalt" ("dir")
  323. X
  324. XWird als Parameter ein "*" angegeben, zeigt die MBox ein Inhaltsverzeichnis
  325. Xmit allen Eintraegen im aktuellen Brett an, sonst nur Neuzugaenge.
  326. X
  327. XIst das aktuelle Brett ein OBERBRETT, wird statt des Inhaltsverzeichnisses
  328. Xdie Liste der UNTERBRETTER ausgegeben.
  329. X
  330. X#LESEN
  331. XBefehl "Lesen" 
  332. X
  333. XDie per Parameter angeforderten Nachrichten werden angezeigt. Die Reihenfolge
  334. Xinnerhalb der einzelnen Artikel haengt von der Positionierung der Artikel-
  335. XNummern ab.
  336. X
  337. X"Lesen NUMMER"       Zeigt den Artikel No. "NUMMER" an.
  338. X
  339. X"Lesen NUM1-NUM2"    Zeigt die Artikel von No. "NUM1" bis "NUM2" an
  340. X                     Ist "NUM2" groesser als "NUM1" wird die Reihenfolge
  341. X                     bei der Ausgabe umgekehrt.
  342. X
  343. X"Lesen NUM-"         Alle Artikel von "NUM" bis 32000 werden angezeigt
  344. X
  345. X"Lesen -NUM"         Alle Artikel von 1 bis "NUM" werden angezeigt
  346. X
  347. X"Lesen"              Es werden alle neuen Artikel gezeigt (siehe INHALT)
  348. X
  349. X"Lesen *"            Saemtliche Eintraege eines Brettes werden ausgegeben
  350. X
  351. X
  352. XBei seitenweiser Ausgabe (siehe SETUP) kann mit der LEERTASTE weiterge-
  353. Xblaettert werden. Die Tasten "q" o. "Q" beenden die Anzeige.
  354. X
  355. XDie Ausgabe laesst sich mit "x", "X", "DEL", "CTRL-X" und "CTRL-D" komplett
  356. Xabbrechen (z.B. bei "Lesen *").
  357. X
  358. XIst der Artikel beendet, erscheint eine Eingabeaufforderung. Dort kann man
  359. Xentscheiden zwischen ABBRECHEN, BEANTWORTEN, NAECHSTE, VORHERIGE und
  360. XWIEDERHOLEN ... mit Hilfe dieser Auswahl kann man durch die einzelnen
  361. XNachrichten eines Brettes blaettern.
  362. X
  363. X#LOESCHEN
  364. XBefehl "Loeschen"
  365. X
  366. XDie per Parameter benannten Nachrichten werden geloescht. Wird keinerlei
  367. XAngabe gemacht, loescht das System ALLE Eintraege !
  368. X
  369. X"Loeschen NUMMER"     Loescht den Artikel No. "NUMMER"
  370. X
  371. X"Loeschen NUM1-NUM2"  Loescht die Artikel von No. "NUM1" bis "NUM2"
  372. X
  373. X"Loeschen NUM-"       Alle Artikel von "NUM" bis 32000 werden geloescht
  374. X
  375. X"Loeschen -NUM"       Alle Artikel von 1 bis "NUM" werden entfernt
  376. X
  377. X"Loeschen"            Es werden alle (!) persoenlichen Mails geloescht
  378. X
  379. XACHTUNG: Der Befehl ist NICHT rueckgaengig zu machen ! Da wir hier unter
  380. X         UNIX arbeiten, halten wird uns an die Devise: "Der User weiss was
  381. X         er tut, also KEINE Rueckfragen - wenn er loeschen will, will er
  382. X         loeschen ..."     
  383. X
  384. X#MAKRO
  385. XBefehl "Makro"
  386. X
  387. XUm haeufig wiederkehrende Befehlsfolgen nicht jedesmal komplett eingeben
  388. Xzu muessen, kann man Makros mit diesen Kommandos vereinbaren. Nach der
  389. XVereinbarung genuegt die Angabe des Makro-Names, um die Befehle aufzurufen.
  390. X
  391. XMakro = Befehlsfolge
  392. X===========================================================================
  393. Xandi  = BRIEF andreas@xenox.ruhr.de
  394. Xwalt  = BRIEF Walter, WEITERLEITEN weller!walterb
  395. Xgrp   = BRIEF volkers, WEITER xenox, WEITER stefans, WEITER joergg
  396. Xsts   = BRI Stefan S, WEI stefans@coduck.ruhr.sub.org, WEI unnet!stefans
  397. Xin    = +, INHALT, KEY, in
  398. Xpp    = PORTINFO, SLEEP 5, pp
  399. X
  400. XDie letzen beiden Beispiele demonstrieren "rekursive" Makros. Dabei werden
  401. Xdie Befehle "KEYPRESSED" (wartet auf einen Tastendruck - "CTRL-X", "x" und
  402. X"q" beenden den Vorgang) und "SLEEP nnn" (wartet "nnn" Sekunden) verwendet.
  403. X
  404. XMakros lassen sich auch in der Kommandozeile definieren. Es genuegt eine
  405. Xgueltige Vereinbarung inzugeben (siehe oben) - sie wird automagisch in
  406. Xdie Makro-Sammlung aufgenommen.
  407. X
  408. X#MINIX
  409. XBefehl "Minix" ("execute")
  410. X
  411. XMit entsprechendem LEVEL kann man mit dem Befehl "Minix OS-BEFEHL" ein
  412. XKommando auf Betriebssystem-Ebene ausfuehren.
  413. X
  414. XZ.B. "Minix date", "Minix whodo", "Minix ps -lax"
  415. X
  416. X#OUTDIAL
  417. XBefehl "Outdial"
  418. X
  419. XEine Verbindung zu externen Datenbanken und Mailboxen kann mit diesem
  420. XBefehl hergestellt werden. 
  421. X
  422. XDieser Service befindet sich im Teststadium. Entsprechende Berechtigungen
  423. Xund weitere Informationen gibt's beim Sysop.
  424. X
  425. X#PM
  426. XBefehl "PM"
  427. X
  428. XDie oeffentlichen Bretter werden verlassen und das persoenliche Postfach
  429. Xgeoeffnet. Die Befehle INHALT, LESEN, LOESCHEN beziehen sich nun auf das
  430. XPostfach.
  431. X
  432. X#PORTINFO
  433. XBefehl "Portinfo" ("Wer")
  434. X
  435. XDas System holt sich Informationen ueber die Taetigkeit aller Teilnehmer und
  436. Xzeigt sie zusammen mit Name, Terminal-Port und Login-Zeit an. Ist der 
  437. XTeilnehmer in der MBox aktiv, wird ausserdem sein letzter Befehl angezeigt,
  438. Xbei SH-Usern wird der aktuellste Prozess angezeigt.
  439. X
  440. X#POSTFACH
  441. XBefehl "Postfach"
  442. X
  443. XUm persoenliche Post erhalten zu koennen, und um an die externen Bretter
  444. Xsenden zu duerfen, muss das System einen "Account" einrichten. Sie werden
  445. Xgebeten Ihren Namen und einige pers. Daten anzugeben. Wenn Sie nur inner-
  446. Xhalb der Box Post u. Nachrichten versenden wollen, genuegt der Name. Falls
  447. XSie aber auch an die extrenen Bretter senden wollen, und PMs an User auf
  448. Xanderen Rechnern verschicken wollen, MUSS auch die Anschrift stimmig ange-
  449. Xgeben werden ...
  450. X
  451. X#RICHTUNG
  452. XBefehl "Richtung"
  453. X
  454. XMit diesem Befehl kann die Leserichtung beeinflusst werden. D.h. ob zuerst
  455. Xdie aeltern, oder die neuer Artikel angezeigt werden sollen. Diese Einstellung
  456. Xgilt sowohl fuer den Befehl "Lesen" als auch fuer den Befehl "Inhalt".
  457. XMit dem Befehl "Setup" kann (im Untermenue "Textausgabe") die Leserichtung
  458. Xgespeichert werden. 
  459. X
  460. XACHTUNG: der Befehl "Richtung" setzt die im SETUP gespeicherte Vorgabe zwar
  461. X         fuer die Dauer der Session ausser Kraft, beim naechsten Login aber,
  462. X         wird der Vorgabewerte wieder aktiviert.
  463. X
  464. X#SCHREIBEN
  465. XBefehl "Schreiben"
  466. X
  467. XEin neuer Artikel kann mit diesem Befehl an eines der Bretter gesendet werden.
  468. XVor der eigentlichen Eingabe werden noch "Subject" (das Thema des Artikels)
  469. Xund "Keywords" (falls mal nach bestimmten Schluesselworten gesucht werden
  470. Xsollte) abgefragt. Anschliessend wird der Editor zur Erfassung gestartet.
  471. X
  472. XJe nach Brett und Userlevel wird der Artikel nach Beendigung der Eingabe
  473. Xentweder nur lokal verbreitet, oder aber an eines der UUCP-Netze verschickt.
  474. X
  475. X#SETUP
  476. XBefehl "Setup" ("Anschrift", "Ansi", "Bell", "More", "Terminal", "Passwort")
  477. X
  478. XIhre persoenlichen Daten und System-Parameter koennen mit diesem Befehl
  479. Xbearbeitet werden. 
  480. X
  481. XTerminal:  Sie haben die Wahl zwischen drei Terminal-Emulation und einer
  482. X           reinen Dump-Ausgabe. Vorzuziehen ist die "ANSI"-Einstellung, weil
  483. X           sie von allen gaengigen Terminal-Programmen unterstuetzt wird.
  484. X
  485. XEditor:    Es werden einige Editoren angeboten, deren Einsatz vom gewaehlten
  486. X           Terminaltyp abhaengig ist. GAESTE und User ohne SH-Account arbeiten
  487. X           generell mit einen zeilenorientierten Editor (LED).
  488. X
  489. XPrompt:    Der Prompt (die Eingabeaufforderung) kann verschiedene Informationen        
  490. X           ausgeben. Entweder das aktuelle Brett, die Uhrzeit oder die ver-
  491. X           brauchten Telefongebuehren (ACHTUNG: Feiertage werden NICHT berueck-
  492. X           sichtigt, Wechseln zwischen Norm- und Billigtarif waehrend der
  493. X           Verbindung wird NICHT registriert ... es gilt immer der Tarif zur
  494. X           Anzeigezeit).
  495. X
  496. XAusgabe:   Texte koennen entweder bildschirmweise, oder kontinuierlich ausge-
  497. X           geben werden. Bei der ersten Methode wird mit der LEERTASTE weiter-
  498. X           geblaettert, die Tasten "q" o. "Q"  beenden die Ausgabe. Die konti-
  499. X           nuierliche Ausgabe wird mit CTRL-S gestoppt und mit CTRL-Q  
  500. X           wieder aufgenommen. Mit CTRL-X (oder DEL) kann die Ausgabe abge-
  501. X           brochen werden.
  502. X    
  503. X           Ausserdem kann an dieser Stelle die Leserichtung vorgegegben werden.       
  504. X       D.h. es wird entschieden, ob zuerst die aelteren, oder zuerst die
  505. X           neueren Artikel angezeigt werden sollen.
  506. X
  507. XAnschrift: Persoenliche Daten wie (User-)Name, Anschrift etc. koennen mit
  508. X           dieser Option geandert werden. Je detailierter die Angaben, desto
  509. X           ehr wird eine Schreibberechtigung fuer extrene Bretter vergeben.
  510. X
  511. XPasswort:  Das Passwort sollte regelmaessig geandert werden, um die persoenl.
  512. X           Daten und die Post zu schuetzten.
  513. X
  514. XIntro:     Nach dem Anmelden im System kann man sich eine Statusmeldung und
  515. X           eine aktuelle Information anzeigen lassen. Beide Anzeigen koennen
  516. X           getrennt unterbunden werden.
  517. X
  518. XScanner:   Hier kann das Datum geaendert werden, das bei der Bestimmung
  519. X           aktueller Eintraege zugrunde gelegt wird. Je weiter zurueckdatiert
  520. X           wird, desto mehr Eintraege werden angezeigt. Ausserdem kann man
  521. X           zusaetzlich die Uhrzeit als Vergleichswert einsetzen.
  522. X
  523. X#SPIELE
  524. XBefehl "Spiele"
  525. X
  526. XEine Liste der ONLINE-Spiele wird angezeigt. Die Spiele verwenden z.T. 
  527. XTerminal-Emulationen - also ACHTUNG! Fast alle Spiele lassen sich mit
  528. X"Q" oder "q" beenden.
  529. X
  530. X#STATUS
  531. XBefehl "Status"
  532. X
  533. XIhre persoenlichen Daten und Einstellungen werden angezeigt. Dazu zaehlen
  534. Xauch Angaben ueber Up- und Downloads, Onlinezeit und die UUCP-Adressen.
  535. X
  536. X#STATISTIK
  537. XBefehl "Statistik"
  538. X
  539. XEin Statistik der versch. Bretter (NGs) und deren aktueller Inhalt wird
  540. Xangezeigt. Mit der Option "*" wird die komplette Ausgabe der Statistik
  541. Xbefohlen, und mit "$" kann eine Uebersicht der (Transfer-)Telefongebuehren
  542. Xabgefragt werden. Ausserdem laesst sich mit "#" ein Protokoll der Down-
  543. Xloads aus den versch. PD-Brettern abrufen. Wird stattdessen ein "%" angegeben,
  544. Xerfolgt eine Auswertung der Downloads. Das Ergebnis wird als "Hitliste"
  545. Xausgegeben.
  546. X
  547. X#SUCHEN
  548. XBefehl "Suchen"
  549. X
  550. XAlle (!) Artikel eine Brettes werden nach dem optional anzugebenden Such-
  551. Xmuster durchsucht. Die Artikel, die das Suchmuster enthalten, werden 
  552. Xangezeigt.
  553. X
  554. X#SYSINFO
  555. XBefehl "Sysinfo"
  556. X
  557. XEinfach ausprobieren :-)
  558. X
  559. X#UPLOAD
  560. XBefehl "Upload"
  561. XDiesen Befehl gibt es NICHT. Der Befehl "Schreiben" bietet als Option
  562. Xden Upload an. Programm-Daten werden automatisch erkannt und entsprechend
  563. Xverarbeitet.
  564. X
  565. X#UNTERSCHRIFT
  566. XBefehl "Unterschrift"
  567. X
  568. XAlle Texte, die sie in dieser MBox schreiben, werden mit der "Unterschrift"
  569. Xbeendet. Sie koennen hier z.B. Ihre Anschrift, Ihre E-Mail Adresse oder
  570. Xeinen Spruch (Disclaimer) eingeben. Fuer UNIX-Kenner: der Befehl entspricht
  571. Xder ".signature". Ein Beispiel:
  572. X
  573. X-----------------------------------------------------------------------------
  574. XDAS MENSCHLICHE AN COMPUTERN   Volker Schuermann,D-5600 Wpt.21,Monhofsfeld 70
  575. XIST IHRE GEWISSENLOSIGKEIT !   DATA   +49 202 4660234    DATA  +49 202 462114
  576. X-----------------------------------------------------------------------------
  577. X
  578. X#USER
  579. XBefehl: "User" ("Teilnehmer")
  580. X
  581. XSie erhalten eine Liste der Teilnehmer in diesem MBox-System. Der Wert, der
  582. Xdem Namen folgt (z.B. "J. Random Looser (24)"), zeigt die UserID. Je niedriger
  583. Xdie Nummer, desto laenger ist der User eingtragen - jede Nummer wird nur
  584. Xeinmal vergeben.
  585. X
  586. XWird als Argument ein "*" angehaengt, gibt die MBox eine detailierte Liste aus,
  587. Xdie z.B. den letzen Anruf der jeweiligen User, das Userlevel etc. enthaelt.
  588. X
  589. XDetailierte Informationen ueber einzelnen User erhaelt man, wenn man als 
  590. XOption den Namen ("Vorname Name", "Alias", "Shell-Account") angibt.
  591. X
  592. X#VERSION
  593. XBefehl: "Version"
  594. X
  595. XDie aktulle Versionnummer wird angezeigt. Sollten Sie einmal einen Fehler
  596. Xim Programm finden, geben Sie diese Nummer bei Ihrer Fehlerbeschreibung 
  597. Xbitte an.
  598. X
  599. Xix/Mbox 0.8.2 by <volkers@unnet.ruhr.sub.org>    
  600. X        =====
  601. X
  602. XDie Fehlerberschreibung sende Sie per E-Mail an die Anschrift "<volkers@...>".
  603. X
  604. XMit der "Version #"-Option wird die MBox angwiesen eine Liste begabter Leute
  605. Xauszugeben, die massgeblich an der Entwicklung dieses Programms beteiligt
  606. Xwaren.
  607. X
  608. X#WEITERLEITEN
  609. XBefehl: "Weiterleiten"
  610. X
  611. XBriefe und Artikel koennen an andere Teilnehmer weitergeleitet werden. Dabei
  612. Xgilt folgende Schreibweise:
  613. X
  614. X"Weiterleiten"            Der Betreff der zuletzt geschriebenen PM (!) wird
  615. X                          angezeigt. Diese PM kann weitergeleitet werden.
  616. X
  617. X"Weiterleiten USER"       Die zuletztgeschrieben PM wird an den Teilnehmer
  618. X                          USER geschickt. 
  619. X
  620. X"Weiterleiten NNN USER"   Der Artikel/Brief NNN wird an den Teilnehmer USER
  621. X                          gesendet. 
  622. X
  623. XDie Briefe/Artikel koennen vor dem Versand ueberarbeitet werden. Die Syntax
  624. Xist VERBINDLICH, es darf immer nur EIN Empfaenger angegeben werden.
  625. X
  626. XUSER kann ein lokaler Teilnehmer, ein User auf einem anderen Rechner, oder
  627. Xaber der eigene SH-Account sein:
  628. X
  629. X"Weiterleiten Volker"            
  630. X"Weiterleiten volkers@xenox.ruhr.de", 
  631. X"Weiterleiten unnet!volkers"
  632. X
  633. X
  634. END_OF_FILE
  635.   if test 18178 -ne `wc -c <'etc/deutsch.hilfe'`; then
  636.     echo shar: \"'etc/deutsch.hilfe'\" unpacked with wrong size!
  637.   fi
  638.   # end of 'etc/deutsch.hilfe'
  639. fi
  640. if test -f 'etc/help.hilfe' -a "${1}" != "-c" ; then 
  641.   echo shar: Will not clobber existing file \"'etc/help.hilfe'\"
  642. else
  643.   echo shar: Extracting \"'etc/help.hilfe'\" \(18178 characters\)
  644.   sed "s/^X//" >'etc/help.hilfe' <<'END_OF_FILE'
  645. X#?
  646. XBefehl "?"
  647. X
  648. XDie beim aktuellen Level verfuegbaren Befehle werden angezeigt. Um auch die
  649. Xuebrigen Befehle anzeigen zu lassen, muss als Argument ein "*" angegeben
  650. Xwerden.
  651. X
  652. X#0
  653. XBefehl "0" ("1 - 9")
  654. X
  655. XUeber die Ziffern 0-9 wird der dynamische Befehlspuffer aufgerufen. Die Ziffer
  656. X0 zeigt die aktuelle Belegung dieser "Hot-Keys" an, 1-9 rufen denn gespreicherten
  657. XBefehl ab. Ausserdem kann man diese Befehle auch mit Hilfe der Cursortasten
  658. XUP und DOWN durchblaettern.
  659. X
  660. X#+
  661. XBefehl "+"
  662. X
  663. XDas naechste Brett mit neuen Nachrichten wird aufgerufen. Innerhalb des Brettes
  664. Xkann mit den ueblichen Befehlen (Inhalt, Lesen) gearbeitet werden.
  665. X
  666. X#-
  667. XBefehl "-"
  668. X
  669. XDas vorherige Brett mit neuen Nachrichten wird aufgerufen. Innerhalb des
  670. XBrettes kann mit den ueblichen Befehlen (Inhalt, Lesen) gearbeitet werden.
  671. X
  672. X#ANRUFER
  673. XBefehl "Anrufer" ("Protokoll")
  674. X
  675. XEine Liste der Anrufer wird angezeigt. Wird "*" als Parameter angegeben,
  676. Xzeigt das System ALLE Eintaege des Protokolls an, sonst nur die letzten 21.
  677. X
  678. XDie Option "#" (also "Anrufer #") erstellt eine Statistik aus den Daten
  679. Xder Anrufer-Liste.
  680. X
  681. X#ANSAGE
  682. XBefehl "Ansage"
  683. X
  684. XWenn ein anderer Teilnehmer Ihnen eine persoenliche Nachricht senden will,
  685. Xwird ihm der "Ansage"-Text angezeigt. Sollten sie z.B. fuer laenger Zeit
  686. Xverreisen und desshalb nicht sofort antworten koennen, teilen sie das im
  687. X"Ansage"-Text mit.
  688. X
  689. X#BRETT
  690. XBefehl "Brett" ("cd")
  691. X
  692. XDie Nachrichten dieser MBox sind nach Themen geordnet in verschiedenen
  693. XBrettern zusammengefasst. Der Ausdruck "Brett" ist in diesem Zusammenhang
  694. Xgleichbedeutend mit dem Begriff "Newsgroup" der UUCP-Terminologie.
  695. X
  696. X
  697. XDie verschiedenen Einsatzmoeglichkeiten des Befehls:
  698. X
  699. X"Brett"             Alle Bretter mit neuen Artikeln werden angezeigt.
  700. X"Brett *"           Alle Bretter des Systems werden angezeigt. (Level)
  701. X
  702. X"Brett **"          ALLE Bretter des Systems werden angezeigt.
  703. X
  704. X"Brett +"           Es wird in's naechst hoehere Brett gewechselt.
  705. X
  706. X"Brett -"           Es wird in's naechst niedrigere Brett gewechselt. 
  707. X
  708. X"Brett !"           Der Name des aktuellen Brettes wird ausgegeben.
  709. X
  710. X"Brett BRETT"       Es wird in Brett "BRETT" gewechselt. Alle INHALT- und LESE-
  711. X                    Befehle beziehen sich jetzt auf "BRETT". 
  712. X
  713. X
  714. XDa verschienden Bretter allerdings nach dem Schema "Oberbrett.Unterbrett" auf-
  715. Xgebaut sind, gibt es noch einige spezielle Parameter:
  716. X
  717. X"Brett #"           Die sogenannten Oberbretter werden angezeigt. 
  718. X
  719. X"Brett OBERBRETT"   Wechselt ins Oberbrett OBERBRETT. Der Befehl INHALT
  720. X                    zeigt nun die Unterbretter dieses Oberbrettes an !!!
  721. X
  722. X"Brett UNTERBRETT"  Es wird ins Brett OBERBRETT.UNTERBRETT gewechselt.
  723. X
  724. X"Brett .."          Von OBERBRETT.UNTERBRETT gelangt man so wieder auf die
  725. X                    Ebene OBERBRETT.
  726. X
  727. X#BRIEF
  728. XBefehl "Brief" ("Mail");
  729. X
  730. XPersoenliche Post wird an Teilnehmer dieser MBox oder aber auch an User auf
  731. Xeinem fremden Rechner verschickt. 
  732. X
  733. XUm einen "internen" Teilnehmer anzuschreiben wird Folgendes eingegeben:
  734. X
  735. X"Brief USERNAME", "Brief ALIAS" oder "Brief SH-ACCOUNT"
  736. X
  737. XZ.B.: "Brief Volker Schuermann", "Brief volkers"
  738. X
  739. XDie MBox erkennt anhand dieser Angaben den Empfaenger und ruft zur Eingabe
  740. Xden Editor auf. Nun kann eine Nachricht geschrieben werden. Die persoenliche
  741. XUNTERSCHRIFT (siehe dort) wird der Nachricht angehaengt und mit verschickt.
  742. X
  743. X
  744. XBei einem Brief an "externe" Teilnehmer sieht die Anschrift etwas anderes
  745. Xaus:
  746. X
  747. X"Brief HOST!USER", "Brief USER@HOST.DOMAIN"
  748. X
  749. XZ.B.: "Brief unnet!volkers", "brief volkers@unnet.ruhr.sub.org"
  750. X
  751. XAnsonsten verhaelt sich der Vorgang genauso wie bei einer "internen" Nachricht.
  752. X
  753. XACHTUNG: Als eingetragener Teilnehmer duerfen Sie auch Post von "externen"
  754. XUsern empfangen. Folgende Adressierungs-Methode ist dabei verbindlich:
  755. X
  756. X"mail unnet!VORNAME.NAME"
  757. X
  758. XDie Adresse "unnet!VORNAME.NAME" entspricht "VORNAME.NAME@unnet.ruhr.sub.org"
  759. Xoder auch "..!unido!uka!smurf!horga!xenox!unnet!VORNAME.NAME" ... je nach 
  760. XDomain des Brief-Autoren.
  761. X
  762. X"VORNAME.NAME" steht in diesem Fall fuer Ihren (User-) Namen, kann aber auch
  763. Xkomplett durch Ihr Alias ersetzt werden (AUSNAHME !) ...
  764. X
  765. XZ.B.: "mail Volker.Schuermann@unnet.ruhr.sub.org"
  766. X
  767. X
  768. X#CHAT
  769. XBefehl "Chat" ("Dialog")
  770. X
  771. XSie betreten den Konferenzbereich. Dort koennen Sie sich mit anderen Teil-
  772. Xnehmern unterhalten. Dabei spielt es keine Rolle, ob Ihre Gespraechspartner
  773. Xebenfalls die MBox benutzen, oder auf Betriebssystem-Ebene arbeiten.
  774. X
  775. X#DOWNLOAD
  776. XBefehl "Download"
  777. X
  778. XDieser Befehl uebertraegt Artikel mit Hilfe eines Protokolls. Angeboten
  779. Xwerden ASCII (einfaches Auflisten der Textdatei) und SX/SZ/SB. Moegliche
  780. XParameter sind:
  781. X
  782. X"Download NUMMER"       Uebertraegt den Artikel No. "NUMMER".
  783. X
  784. X"Download NUM1-NUM2"    Uebertraegt die Artikel von No. "NUM1" bis "NUM2".
  785. X
  786. X"Download NUM-"         Alle Artikel von "NUM" bis 32000 werden uebertragen.
  787. X
  788. X"Download -NUM"         Alle Artikel von 1 bis "NUM" werden uebertragen.
  789. X
  790. XACHTUNG: "Download ??-??" uebertraegt alle angeforderten Artikel OHNE
  791. XUnterbrechung. Die UNIX-Befehle "RX/RZ/RB" unterstuetzen diesen Modus.
  792. X
  793. X#EDIT
  794. XBefehl "Edit"
  795. X
  796. XEin Artikel kann nachtraeglich ueberarbeitet werden. Abhaengig vom USER-
  797. XLevel wird der Zugriff entweder auf alle Artikel gewaehrt, oder aber nur
  798. Xauf solche Artikel, die der jeweilige User selbst gesendet hat.
  799. X
  800. X#ENDE
  801. XBefehl "Ende" ("Quit")
  802. X
  803. XDas Programm wird beendet. Teilnehmer ohne SH-Account loesen mit diesem
  804. XBefehl auch die Verbindung ... also VORSICHT !
  805. X
  806. XNormalerweise wird nach der Eingabe des Befehls "Ende" das Scanner-Datum und
  807. Xdie Scanner-Zeit aktualisiert. Gibt man als Parameter ein "*" an, wird
  808. Xdiese Aktion unterbunden.
  809. X
  810. X#GRUPPE
  811. XBefehl "Gruppe" ("Area")
  812. X
  813. XDieser Befehl wird dazu benutzt, Gruppen oder Untergruppen zu ueberspringen.
  814. XAbhaengig von der Option '+', '-', '++', '--' werden nur Untergruppen oder
  815. Xganze Gruppen vorwaerts oder rueckwaerts ausgelassen, und direkt zu naechsten
  816. XGruppe gesprungen.
  817. X
  818. X#HILFE
  819. XBefehl "Hilfe"
  820. X
  821. XZu allen Befehlen dieses Systems gibt es mit "HILFE" eine kurze Information.
  822. X
  823. X"Hilfe"           eine Zusammenfassung der Befehle wird angezeigt.
  824. X"Hilfe *"         die gesamte Hilfsdatei wird ausgegeben.
  825. X"Hilfe BEFEHL"    zeigt nur den Eintrag zum Befehl "BEFEHL".
  826. X
  827. X#INHALT
  828. XBefehl "Inhalt" ("dir")
  829. X
  830. XWird als Parameter ein "*" angegeben, zeigt die MBox ein Inhaltsverzeichnis
  831. Xmit allen Eintraegen im aktuellen Brett an, sonst nur Neuzugaenge.
  832. X
  833. XIst das aktuelle Brett ein OBERBRETT, wird statt des Inhaltsverzeichnisses
  834. Xdie Liste der UNTERBRETTER ausgegeben.
  835. X
  836. X#LESEN
  837. XBefehl "Lesen" 
  838. X
  839. XDie per Parameter angeforderten Nachrichten werden angezeigt. Die Reihenfolge
  840. Xinnerhalb der einzelnen Artikel haengt von der Positionierung der Artikel-
  841. XNummern ab.
  842. X
  843. X"Lesen NUMMER"       Zeigt den Artikel No. "NUMMER" an.
  844. X
  845. X"Lesen NUM1-NUM2"    Zeigt die Artikel von No. "NUM1" bis "NUM2" an
  846. X                     Ist "NUM2" groesser als "NUM1" wird die Reihenfolge
  847. X                     bei der Ausgabe umgekehrt.
  848. X
  849. X"Lesen NUM-"         Alle Artikel von "NUM" bis 32000 werden angezeigt
  850. X
  851. X"Lesen -NUM"         Alle Artikel von 1 bis "NUM" werden angezeigt
  852. X
  853. X"Lesen"              Es werden alle neuen Artikel gezeigt (siehe INHALT)
  854. X
  855. X"Lesen *"            Saemtliche Eintraege eines Brettes werden ausgegeben
  856. X
  857. X
  858. XBei seitenweiser Ausgabe (siehe SETUP) kann mit der LEERTASTE weiterge-
  859. Xblaettert werden. Die Tasten "q" o. "Q" beenden die Anzeige.
  860. X
  861. XDie Ausgabe laesst sich mit "x", "X", "DEL", "CTRL-X" und "CTRL-D" komplett
  862. Xabbrechen (z.B. bei "Lesen *").
  863. X
  864. XIst der Artikel beendet, erscheint eine Eingabeaufforderung. Dort kann man
  865. Xentscheiden zwischen ABBRECHEN, BEANTWORTEN, NAECHSTE, VORHERIGE und
  866. XWIEDERHOLEN ... mit Hilfe dieser Auswahl kann man durch die einzelnen
  867. XNachrichten eines Brettes blaettern.
  868. X
  869. X#LOESCHEN
  870. XBefehl "Loeschen"
  871. X
  872. XDie per Parameter benannten Nachrichten werden geloescht. Wird keinerlei
  873. XAngabe gemacht, loescht das System ALLE Eintraege !
  874. X
  875. X"Loeschen NUMMER"     Loescht den Artikel No. "NUMMER"
  876. X
  877. X"Loeschen NUM1-NUM2"  Loescht die Artikel von No. "NUM1" bis "NUM2"
  878. X
  879. X"Loeschen NUM-"       Alle Artikel von "NUM" bis 32000 werden geloescht
  880. X
  881. X"Loeschen -NUM"       Alle Artikel von 1 bis "NUM" werden entfernt
  882. X
  883. X"Loeschen"            Es werden alle (!) persoenlichen Mails geloescht
  884. X
  885. XACHTUNG: Der Befehl ist NICHT rueckgaengig zu machen ! Da wir hier unter
  886. X         UNIX arbeiten, halten wird uns an die Devise: "Der User weiss was
  887. X         er tut, also KEINE Rueckfragen - wenn er loeschen will, will er
  888. X         loeschen ..."     
  889. X
  890. X#MAKRO
  891. XBefehl "Makro"
  892. X
  893. XUm haeufig wiederkehrende Befehlsfolgen nicht jedesmal komplett eingeben
  894. Xzu muessen, kann man Makros mit diesen Kommandos vereinbaren. Nach der
  895. XVereinbarung genuegt die Angabe des Makro-Names, um die Befehle aufzurufen.
  896. X
  897. XMakro = Befehlsfolge
  898. X===========================================================================
  899. Xandi  = BRIEF andreas@xenox.ruhr.de
  900. Xwalt  = BRIEF Walter, WEITERLEITEN weller!walterb
  901. Xgrp   = BRIEF volkers, WEITER xenox, WEITER stefans, WEITER joergg
  902. Xsts   = BRI Stefan S, WEI stefans@coduck.ruhr.sub.org, WEI unnet!stefans
  903. Xin    = +, INHALT, KEY, in
  904. Xpp    = PORTINFO, SLEEP 5, pp
  905. X
  906. XDie letzen beiden Beispiele demonstrieren "rekursive" Makros. Dabei werden
  907. Xdie Befehle "KEYPRESSED" (wartet auf einen Tastendruck - "CTRL-X", "x" und
  908. X"q" beenden den Vorgang) und "SLEEP nnn" (wartet "nnn" Sekunden) verwendet.
  909. X
  910. XMakros lassen sich auch in der Kommandozeile definieren. Es genuegt eine
  911. Xgueltige Vereinbarung inzugeben (siehe oben) - sie wird automagisch in
  912. Xdie Makro-Sammlung aufgenommen.
  913. X
  914. X#MINIX
  915. XBefehl "Minix" ("execute")
  916. X
  917. XMit entsprechendem LEVEL kann man mit dem Befehl "Minix OS-BEFEHL" ein
  918. XKommando auf Betriebssystem-Ebene ausfuehren.
  919. X
  920. XZ.B. "Minix date", "Minix whodo", "Minix ps -lax"
  921. X
  922. X#OUTDIAL
  923. XBefehl "Outdial"
  924. X
  925. XEine Verbindung zu externen Datenbanken und Mailboxen kann mit diesem
  926. XBefehl hergestellt werden. 
  927. X
  928. XDieser Service befindet sich im Teststadium. Entsprechende Berechtigungen
  929. Xund weitere Informationen gibt's beim Sysop.
  930. X
  931. X#PM
  932. XBefehl "PM"
  933. X
  934. XDie oeffentlichen Bretter werden verlassen und das persoenliche Postfach
  935. Xgeoeffnet. Die Befehle INHALT, LESEN, LOESCHEN beziehen sich nun auf das
  936. XPostfach.
  937. X
  938. X#PORTINFO
  939. XBefehl "Portinfo" ("Wer")
  940. X
  941. XDas System holt sich Informationen ueber die Taetigkeit aller Teilnehmer und
  942. Xzeigt sie zusammen mit Name, Terminal-Port und Login-Zeit an. Ist der 
  943. XTeilnehmer in der MBox aktiv, wird ausserdem sein letzter Befehl angezeigt,
  944. Xbei SH-Usern wird der aktuellste Prozess angezeigt.
  945. X
  946. X#POSTFACH
  947. XBefehl "Postfach"
  948. X
  949. XUm persoenliche Post erhalten zu koennen, und um an die externen Bretter
  950. Xsenden zu duerfen, muss das System einen "Account" einrichten. Sie werden
  951. Xgebeten Ihren Namen und einige pers. Daten anzugeben. Wenn Sie nur inner-
  952. Xhalb der Box Post u. Nachrichten versenden wollen, genuegt der Name. Falls
  953. XSie aber auch an die extrenen Bretter senden wollen, und PMs an User auf
  954. Xanderen Rechnern verschicken wollen, MUSS auch die Anschrift stimmig ange-
  955. Xgeben werden ...
  956. X
  957. X#RICHTUNG
  958. XBefehl "Richtung"
  959. X
  960. XMit diesem Befehl kann die Leserichtung beeinflusst werden. D.h. ob zuerst
  961. Xdie aeltern, oder die neuer Artikel angezeigt werden sollen. Diese Einstellung
  962. Xgilt sowohl fuer den Befehl "Lesen" als auch fuer den Befehl "Inhalt".
  963. XMit dem Befehl "Setup" kann (im Untermenue "Textausgabe") die Leserichtung
  964. Xgespeichert werden. 
  965. X
  966. XACHTUNG: der Befehl "Richtung" setzt die im SETUP gespeicherte Vorgabe zwar
  967. X         fuer die Dauer der Session ausser Kraft, beim naechsten Login aber,
  968. X         wird der Vorgabewerte wieder aktiviert.
  969. X
  970. X#SCHREIBEN
  971. XBefehl "Schreiben"
  972. X
  973. XEin neuer Artikel kann mit diesem Befehl an eines der Bretter gesendet werden.
  974. XVor der eigentlichen Eingabe werden noch "Subject" (das Thema des Artikels)
  975. Xund "Keywords" (falls mal nach bestimmten Schluesselworten gesucht werden
  976. Xsollte) abgefragt. Anschliessend wird der Editor zur Erfassung gestartet.
  977. X
  978. XJe nach Brett und Userlevel wird der Artikel nach Beendigung der Eingabe
  979. Xentweder nur lokal verbreitet, oder aber an eines der UUCP-Netze verschickt.
  980. X
  981. X#SETUP
  982. XBefehl "Setup" ("Anschrift", "Ansi", "Bell", "More", "Terminal", "Passwort")
  983. X
  984. XIhre persoenlichen Daten und System-Parameter koennen mit diesem Befehl
  985. Xbearbeitet werden. 
  986. X
  987. XTerminal:  Sie haben die Wahl zwischen drei Terminal-Emulation und einer
  988. X           reinen Dump-Ausgabe. Vorzuziehen ist die "ANSI"-Einstellung, weil
  989. X           sie von allen gaengigen Terminal-Programmen unterstuetzt wird.
  990. X
  991. XEditor:    Es werden einige Editoren angeboten, deren Einsatz vom gewaehlten
  992. X           Terminaltyp abhaengig ist. GAESTE und User ohne SH-Account arbeiten
  993. X           generell mit einen zeilenorientierten Editor (LED).
  994. X
  995. XPrompt:    Der Prompt (die Eingabeaufforderung) kann verschiedene Informationen        
  996. X           ausgeben. Entweder das aktuelle Brett, die Uhrzeit oder die ver-
  997. X           brauchten Telefongebuehren (ACHTUNG: Feiertage werden NICHT berueck-
  998. X           sichtigt, Wechseln zwischen Norm- und Billigtarif waehrend der
  999. X           Verbindung wird NICHT registriert ... es gilt immer der Tarif zur
  1000. X           Anzeigezeit).
  1001. X
  1002. XAusgabe:   Texte koennen entweder bildschirmweise, oder kontinuierlich ausge-
  1003. X           geben werden. Bei der ersten Methode wird mit der LEERTASTE weiter-
  1004. X           geblaettert, die Tasten "q" o. "Q"  beenden die Ausgabe. Die konti-
  1005. X           nuierliche Ausgabe wird mit CTRL-S gestoppt und mit CTRL-Q  
  1006. X           wieder aufgenommen. Mit CTRL-X (oder DEL) kann die Ausgabe abge-
  1007. X           brochen werden.
  1008. X    
  1009. X           Ausserdem kann an dieser Stelle die Leserichtung vorgegegben werden.       
  1010. X       D.h. es wird entschieden, ob zuerst die aelteren, oder zuerst die
  1011. X           neueren Artikel angezeigt werden sollen.
  1012. X
  1013. XAnschrift: Persoenliche Daten wie (User-)Name, Anschrift etc. koennen mit
  1014. X           dieser Option geandert werden. Je detailierter die Angaben, desto
  1015. X           ehr wird eine Schreibberechtigung fuer extrene Bretter vergeben.
  1016. X
  1017. XPasswort:  Das Passwort sollte regelmaessig geandert werden, um die persoenl.
  1018. X           Daten und die Post zu schuetzten.
  1019. X
  1020. XIntro:     Nach dem Anmelden im System kann man sich eine Statusmeldung und
  1021. X           eine aktuelle Information anzeigen lassen. Beide Anzeigen koennen
  1022. X           getrennt unterbunden werden.
  1023. X
  1024. XScanner:   Hier kann das Datum geaendert werden, das bei der Bestimmung
  1025. X           aktueller Eintraege zugrunde gelegt wird. Je weiter zurueckdatiert
  1026. X           wird, desto mehr Eintraege werden angezeigt. Ausserdem kann man
  1027. X           zusaetzlich die Uhrzeit als Vergleichswert einsetzen.
  1028. X
  1029. X#SPIELE
  1030. XBefehl "Spiele"
  1031. X
  1032. XEine Liste der ONLINE-Spiele wird angezeigt. Die Spiele verwenden z.T. 
  1033. XTerminal-Emulationen - also ACHTUNG! Fast alle Spiele lassen sich mit
  1034. X"Q" oder "q" beenden.
  1035. X
  1036. X#STATUS
  1037. XBefehl "Status"
  1038. X
  1039. XIhre persoenlichen Daten und Einstellungen werden angezeigt. Dazu zaehlen
  1040. Xauch Angaben ueber Up- und Downloads, Onlinezeit und die UUCP-Adressen.
  1041. X
  1042. X#STATISTIK
  1043. XBefehl "Statistik"
  1044. X
  1045. XEin Statistik der versch. Bretter (NGs) und deren aktueller Inhalt wird
  1046. Xangezeigt. Mit der Option "*" wird die komplette Ausgabe der Statistik
  1047. Xbefohlen, und mit "$" kann eine Uebersicht der (Transfer-)Telefongebuehren
  1048. Xabgefragt werden. Ausserdem laesst sich mit "#" ein Protokoll der Down-
  1049. Xloads aus den versch. PD-Brettern abrufen. Wird stattdessen ein "%" angegeben,
  1050. Xerfolgt eine Auswertung der Downloads. Das Ergebnis wird als "Hitliste"
  1051. Xausgegeben.
  1052. X
  1053. X#SUCHEN
  1054. XBefehl "Suchen"
  1055. X
  1056. XAlle (!) Artikel eine Brettes werden nach dem optional anzugebenden Such-
  1057. Xmuster durchsucht. Die Artikel, die das Suchmuster enthalten, werden 
  1058. Xangezeigt.
  1059. X
  1060. X#SYSINFO
  1061. XBefehl "Sysinfo"
  1062. X
  1063. XEinfach ausprobieren :-)
  1064. X
  1065. X#UPLOAD
  1066. XBefehl "Upload"
  1067. XDiesen Befehl gibt es NICHT. Der Befehl "Schreiben" bietet als Option
  1068. Xden Upload an. Programm-Daten werden automatisch erkannt und entsprechend
  1069. Xverarbeitet.
  1070. X
  1071. X#UNTERSCHRIFT
  1072. XBefehl "Unterschrift"
  1073. X
  1074. XAlle Texte, die sie in dieser MBox schreiben, werden mit der "Unterschrift"
  1075. Xbeendet. Sie koennen hier z.B. Ihre Anschrift, Ihre E-Mail Adresse oder
  1076. Xeinen Spruch (Disclaimer) eingeben. Fuer UNIX-Kenner: der Befehl entspricht
  1077. Xder ".signature". Ein Beispiel:
  1078. X
  1079. X-----------------------------------------------------------------------------
  1080. XDAS MENSCHLICHE AN COMPUTERN   Volker Schuermann,D-5600 Wpt.21,Monhofsfeld 70
  1081. XIST IHRE GEWISSENLOSIGKEIT !   DATA   +49 202 4660234    DATA  +49 202 462114
  1082. X-----------------------------------------------------------------------------
  1083. X
  1084. X#USER
  1085. XBefehl: "User" ("Teilnehmer")
  1086. X
  1087. XSie erhalten eine Liste der Teilnehmer in diesem MBox-System. Der Wert, der
  1088. Xdem Namen folgt (z.B. "J. Random Looser (24)"), zeigt die UserID. Je niedriger
  1089. Xdie Nummer, desto laenger ist der User eingtragen - jede Nummer wird nur
  1090. Xeinmal vergeben.
  1091. X
  1092. XWird als Argument ein "*" angehaengt, gibt die MBox eine detailierte Liste aus,
  1093. Xdie z.B. den letzen Anruf der jeweiligen User, das Userlevel etc. enthaelt.
  1094. X
  1095. XDetailierte Informationen ueber einzelnen User erhaelt man, wenn man als 
  1096. XOption den Namen ("Vorname Name", "Alias", "Shell-Account") angibt.
  1097. X
  1098. X#VERSION
  1099. XBefehl: "Version"
  1100. X
  1101. XDie aktulle Versionnummer wird angezeigt. Sollten Sie einmal einen Fehler
  1102. Xim Programm finden, geben Sie diese Nummer bei Ihrer Fehlerbeschreibung 
  1103. Xbitte an.
  1104. X
  1105. Xix/Mbox 0.8.2 by <volkers@unnet.ruhr.sub.org>    
  1106. X        =====
  1107. X
  1108. XDie Fehlerberschreibung sende Sie per E-Mail an die Anschrift "<volkers@...>".
  1109. X
  1110. XMit der "Version #"-Option wird die MBox angwiesen eine Liste begabter Leute
  1111. Xauszugeben, die massgeblich an der Entwicklung dieses Programms beteiligt
  1112. Xwaren.
  1113. X
  1114. X#WEITERLEITEN
  1115. XBefehl: "Weiterleiten"
  1116. X
  1117. XBriefe und Artikel koennen an andere Teilnehmer weitergeleitet werden. Dabei
  1118. Xgilt folgende Schreibweise:
  1119. X
  1120. X"Weiterleiten"            Der Betreff der zuletzt geschriebenen PM (!) wird
  1121. X                          angezeigt. Diese PM kann weitergeleitet werden.
  1122. X
  1123. X"Weiterleiten USER"       Die zuletztgeschrieben PM wird an den Teilnehmer
  1124. X                          USER geschickt. 
  1125. X
  1126. X"Weiterleiten NNN USER"   Der Artikel/Brief NNN wird an den Teilnehmer USER
  1127. X                          gesendet. 
  1128. X
  1129. XDie Briefe/Artikel koennen vor dem Versand ueberarbeitet werden. Die Syntax
  1130. Xist VERBINDLICH, es darf immer nur EIN Empfaenger angegeben werden.
  1131. X
  1132. XUSER kann ein lokaler Teilnehmer, ein User auf einem anderen Rechner, oder
  1133. Xaber der eigene SH-Account sein:
  1134. X
  1135. X"Weiterleiten Volker"            
  1136. X"Weiterleiten volkers@xenox.ruhr.de", 
  1137. X"Weiterleiten unnet!volkers"
  1138. X
  1139. X
  1140. END_OF_FILE
  1141.   if test 18178 -ne `wc -c <'etc/help.hilfe'`; then
  1142.     echo shar: \"'etc/help.hilfe'\" unpacked with wrong size!
  1143.   fi
  1144.   # end of 'etc/help.hilfe'
  1145. fi
  1146. if test -f 'src/pd.c' -a "${1}" != "-c" ; then 
  1147.   echo shar: Will not clobber existing file \"'src/pd.c'\"
  1148. else
  1149.   echo shar: Extracting \"'src/pd.c'\" \(18063 characters\)
  1150.   sed "s/^X//" >'src/pd.c' <<'END_OF_FILE'
  1151. X/***************************************************************************/
  1152. X/*        PROGRAMM  ix/Mbox                           */
  1153. X/*             DATEI  pd.c                           */
  1154. X/*        FUNKTIONEN  pd(), download(), status(), mkix(), statistik()       */
  1155. X/*             AUTOR  vs (Volker Schuermann/MINIX-Version)           */
  1156. X/*  LETZTE AENDERUNG  27.06.1992                       */
  1157. X/***************************************************************************/
  1158. X  
  1159. X#include <stdio.h>
  1160. X#include <sys/types.h>
  1161. X#include <signal.h>
  1162. X#include <sys/stat.h>
  1163. X#include <time.h>
  1164. X
  1165. X#include "mbox.h"
  1166. X
  1167. X
  1168. X/***************************************************************************/
  1169. X/*      FUNKTION  pd()                               */
  1170. X/*  BESCHREIBUNG  Eine Datei wird mit o. ohne Protokoll uebertragen.       */
  1171. X/*          Diese Funktion wird von "lesen()" oder "pruefe()"        */
  1172. X/*          aufgerufen, wenn die zu bearbeitende Datei den Kenn-     */
  1173. X/*          zeichner "BINFILE" enthaelt.                             */
  1174. X/*     PARAMETER  arg = Dateiname                                          */
  1175. X/*     RUECKGABE  keine                               */
  1176. X/***************************************************************************/
  1177. X
  1178. Xvoid pd(arg, keywds)
  1179. Xchar arg[], keywds[];
  1180. X{
  1181. X  FILE *fp;
  1182. X  FILE *ff;
  1183. X
  1184. X  char s[STRING];
  1185. X  char tmp[STRING];
  1186. X  char c;
  1187. X  char protokoll;
  1188. X  char cd[STRING];
  1189. X  struct stat fst;
  1190. X  long ts, tn;
  1191. X
  1192. X  int cps, bps, eff;
  1193. X  int ok, i;
  1194. X
  1195. X  strcpy(cd, stripped(arg));
  1196. X
  1197. X  printf("\n\n");
  1198. X  ansi("md");
  1199. X  printf("%s\n\n", PD01_MSG);
  1200. X  
  1201. X  if(keywds[0] != '\0'){
  1202. X    printf("%s ", PD02_MSG); 
  1203. X    ansi("me");
  1204. X    printf("%s\n\n", keywds);
  1205. X  }
  1206. X  else{
  1207. X     ansi("me");
  1208. X  }
  1209. X
  1210. X  ansi("mr");
  1211. X  printf("%c%s [%c, %c, (%c)] >  ", CR, PD03_MSG, GBL06_MSG, GBL07_MSG, PD06_MSG);
  1212. X  ansi("me");
  1213. X
  1214. X  do {
  1215. X    c = getint();
  1216. X    if (c >= 97) c -= 32;
  1217. X    if ((c != GBL06_MSG) && (c != GBL07_MSG) && (c != PD06_MSG)) c = 0;
  1218. X  } while (c == 0);
  1219. X
  1220. X  printf("%c", c);
  1221. X
  1222. X  if (c == PD06_MSG) {    /*  X  */
  1223. X    printf("\n");
  1224. X    sigcatch(SIGINT);    
  1225. X  }
  1226. X
  1227. X  if (c != GBL06_MSG) {    /*  J  */
  1228. X    printf("\n");
  1229. X    return;
  1230. X  }
  1231. X  ansi("mr");
  1232. X  printf("%c[%s] %c, %c, %c, %c ? > ", CR, PD07_MSG, PD08_MSG, PD09_MSG, PD10_MSG, PD11_MSG);
  1233. X  ansi("me");
  1234. X
  1235. X
  1236. X  do {
  1237. X    protokoll = getint();
  1238. X    if (protokoll >= 97) protokoll -= 32;
  1239. X    if (protokoll == '?') {
  1240. X        clearline();
  1241. X        ansi("mr");
  1242. X        printf("%c%s > ", CR, PD12_MSG);
  1243. X        ansi("me");
  1244. X    }
  1245. X    if ((protokoll != PD08_MSG) && (protokoll != PD09_MSG) &&
  1246. X        (protokoll != PD10_MSG) && (protokoll != PD11_MSG))
  1247. X        protokoll = 0;
  1248. X  } while (protokoll == 0);
  1249. X
  1250. X
  1251. X  printf("%c", protokoll);
  1252. X
  1253. X  signal(SIGINT,  SIG_IGN);
  1254. X  signal(SIGHUP,  SIG_IGN);
  1255. X  signal(SIGQUIT, SIG_IGN);
  1256. X  signal(SIGABRT, SIG_IGN);
  1257. X  signal(SIGTERM, SIG_IGN);
  1258. X
  1259. X  printf("\n\n");
  1260. X  ansi("md");
  1261. X  printf("%s\n\n", PD13_MSG);
  1262. X  ansi("me");
  1263. X
  1264. X  time(&ts);
  1265. X
  1266. X  switch (protokoll) {
  1267. X      case PD08_MSG:
  1268. X        sprintf(s, "exec cat %s", cd);
  1269. X        break;
  1270. X      case PD09_MSG:
  1271. X        sprintf(s, "exec %s -b %s 2> /dev/null", SX, cd);
  1272. X        break;
  1273. X      case PD10_MSG:
  1274. X        sprintf(s, "exec %s %s 2> /dev/null", SB, cd);
  1275. X        break;
  1276. X      case PD11_MSG:
  1277. X        sprintf(s, "exec %s %s 2> /dev/null", SZ, cd);
  1278. X        break;
  1279. X  }
  1280. X  system( s );
  1281. X
  1282. X  time(&tn); tn = tn - ts; 
  1283. X
  1284. X  stat(cd, &fst);
  1285. X  USER.downratio += ((long) fst.st_size / 1024);
  1286. X
  1287. X  ansi( "md" );
  1288. X  if(tn < 1) tn = 1;
  1289. X  cps = fst.st_size / tn;
  1290. X  bps = cps * 11;
  1291. X
  1292. X  BAUDRATE = baudrate( bps );
  1293. X
  1294. X  eff = ((100000 / BAUDRATE) * bps) / 1000;  
  1295. X
  1296. X  if(bps > BAUDRATE){
  1297. X    printf("\n\n%s\n", PD14_MSG);
  1298. X    ok = -1;
  1299. X  }
  1300. X  else{    
  1301. X    printf("\n\n%ld %s.\n", fst.st_size, PD15_MSG);
  1302. X    ok = 0;
  1303. X  }
  1304. X
  1305. X  ansi( "me" );
  1306. X  printf("%s %d cps (ca. %d bps).", PD16_MSG, cps, bps);
  1307. X  sprintf(tmp, "%s/%d.pd", TMP, getpid());
  1308. X  ff = fopen( tmp, "w" );
  1309. X
  1310. X
  1311. X  if(ok == 0){
  1312. X    fprintf(ff, "%s  %c  %-40.40s", mydate( 1 ), protokoll, cd); 
  1313. X    if(bps < BAUDRATE){
  1314. X        fprintf(ff, "  %6.d  %6.d  %2.d%% OK\n", cps, bps, eff);
  1315. X    }
  1316. X    else{
  1317. X        fprintf(ff, "  %6.d  %6.d  %2.d%% BRK\n", cps, bps, eff);
  1318. X    }
  1319. X  }
  1320. X  else{
  1321. X    /*
  1322. X    fprintf(ff, "%s  %c  %-40.40s", mydate( 1 ), protokoll, cd); 
  1323. X    fprintf(ff, "  %6.6d  %6.6d  %s\n", cps, bps, PD17_MSG);
  1324. X    */
  1325. X  }
  1326. X
  1327. X  i = 0;
  1328. X
  1329. X  fp = fopen( PDLOG, "r" );
  1330. X  if(fp != NULL){
  1331. X    while((fgets(s, 80, fp) != NULL) && (i < PRO_ENTRIES)){
  1332. X        fputs(s, ff);
  1333. X        i++;
  1334. X    }
  1335. X    fclose(fp);
  1336. X  }
  1337. X
  1338. X  fclose(ff);
  1339. X
  1340. X  sprintf(cd, "mv %s %s", tmp, PDLOG);
  1341. X  system( cd );
  1342. X
  1343. X  printf("\n");
  1344. X}
  1345. X
  1346. X
  1347. X
  1348. X
  1349. X/***************************************************************************/
  1350. X/*      FUNKTION  status                           */
  1351. X/*  BESCHREIBUNG  Verschiedene (eigentlich fast alle) Eintraege aus den    */
  1352. X/*          Teilnehmerdaten werden angezeigt.                        */
  1353. X/*     PARAMETER  keine                                                       */
  1354. X/*     RUECKGABE  keine                                 */
  1355. X/***************************************************************************/
  1356. X
  1357. Xvoid status()
  1358. X{
  1359. X  char s[STRING];
  1360. X  char t[STRING];
  1361. X  char d[STRING];
  1362. X  char ex[255];
  1363. X  int a, b;
  1364. X  int i;
  1365. X
  1366. X
  1367. X  sprintf(s, " %s %d ) %s ", PD18_MSG, USER.id, USER.name);
  1368. X  headline(s);
  1369. X  printf("\n");
  1370. X
  1371. X  ansi("md");
  1372. X  printf("%s", PD19_MSG);
  1373. X  ansi("me");
  1374. X
  1375. X  printf("\n");
  1376. X
  1377. X  sprintf(ex, "%s                                        ", USER.name);
  1378. X  ex[27] = '\0';
  1379. X  strcat(ex, USER.nick);
  1380. X  strcat(ex, "                            ");
  1381. X  ex[45] = '\0';
  1382. X  strcat(ex, USER.geburtsdatum);
  1383. X  strcat(ex, "                            ");
  1384. X  ex[62] = '\0';
  1385. X  strcat(ex, USER.telefon1);
  1386. X  printf("%s\n", ex);
  1387. X
  1388. X  sprintf(ex, "%s                                        ", USER.strasse);
  1389. X  ex[27] = '\0';
  1390. X  strcat(ex, USER.sh_name);
  1391. X  strcat(ex, "                            ");
  1392. X  ex[45] = '\0';
  1393. X  strcat(ex, "                            ");
  1394. X  ex[62] = '\0';
  1395. X  strcat(ex, USER.telefon2);
  1396. X  printf("%s\n", ex);
  1397. X
  1398. X  printf("%s\n\n", USER.wohnort);
  1399. X  ansi("md");
  1400. X  printf("%s", PD20_MSG);  
  1401. X  ansi("me");
  1402. X  printf("\n");
  1403. X
  1404. X  s[0] = '\0'; strcat(s, datereconv( LASTLOG ));
  1405. X  strcat(s, "-"); strcat(s, timereconv( LASTTIME ));
  1406. X  s[16] = '\0';
  1407. X
  1408. X  sprintf(ex, "       %1d       %1d  %5d     %1d       %1d     %1d      %1d  %6d  %s",
  1409. X    USER.terminal, USER.editor, USER.level, USER.bell, USER.prompt, USER.more, USER.intro, USER.seq, s);
  1410. X  printf("%s\n\n", ex);
  1411. X
  1412. X  ansi("md");
  1413. X  printf("%s", PD21_MSG);  
  1414. X  ansi("me");
  1415. X  sprintf(ex, "\n%06.6d                      %06.6d                    %06.6d",
  1416. X    (USER.elapsed / 60), USER.upratio, USER.downratio);
  1417. X  printf("%s\n\n", ex);
  1418. X
  1419. X  ansi("md");
  1420. X  printf("%s", PD22_MSG);
  1421. X  ansi("me");
  1422. X
  1423. X  i = 0;
  1424. X  strcpy(s, (char *) USER.name);
  1425. X  while (s[i] != '\0') {
  1426. X    if (s[i] == ' ') s[i] = '.';
  1427. X    i++;
  1428. X  }
  1429. X
  1430. X  sprintf(t,  "%s: %s@%s", PD23_MSG, s, UUCPID);
  1431. X  strcpy(d, USER.account); d[10] = '\0';
  1432. X  strcpy(s, (char *) strcopy(USER.account, 11, 16));
  1433. X  i = atoi(s); 
  1434. X  sprintf(s, "%s  %3d.%02d", d, fix(i), flt(i));
  1435. X  sprintf(ex, "%-54.54s%s DM\n%s: %s%s", t, s, PD24_MSG, UUCPBANG, USER.nick);
  1436. X  printf("\n%s\n", ex);
  1437. X  if (USER.sh_name[0] != '\0')
  1438. X    printf("%s: %s!%s\n", PD25_MSG, UUCPSITE, USER.sh_name);
  1439. X
  1440. X  printf("\n");
  1441. X
  1442. X  ansi("md");
  1443. X  printf("%s\n", PD26_MSG);
  1444. X
  1445. X  ansi("me");
  1446. X
  1447. X  i = 1;
  1448. X  while(newsgrp[i][0] != '\0'){
  1449. X    if(i != 1) printf(", ");
  1450. X    printf("%s", newsgrp[i]);
  1451. X    i++;
  1452. X  }
  1453. X
  1454. X  printf("\n\n");  
  1455. X}
  1456. X
  1457. X
  1458. X
  1459. X/***************************************************************************/
  1460. X/*      FUNKTION  mkix()                           */
  1461. X/*  BESCHREIBUNG  Wandelt eine Datei ins UNIX-Format (CRs werden entfernt) */
  1462. X/*     PARAMETER  s  =  Dateiname                                          */
  1463. X/*     RUECKGABE  keine                                                    */
  1464. X/***************************************************************************/
  1465. X
  1466. Xvoid mkix( pfad )
  1467. Xchar pfad[];
  1468. X{
  1469. X  FILE *fp; 
  1470. X  FILE *ff;
  1471. X
  1472. X  char s[255];
  1473. X  char p[255];
  1474. X
  1475. X  int i, ok = 0;
  1476. X
  1477. X  
  1478. X  sprintf(p, "%sabc", pfad);
  1479. X
  1480. X  fp = fopen( pfad, "r" );
  1481. X  if(fp == NULL){
  1482. X    return;
  1483. X  }      
  1484. X
  1485. X  ff = fopen( p, "w" );
  1486. X  if(ff == NULL){
  1487. X    nerror("pd.c", 243, "mkix", "Datei-Erstellungsfehler", p);    
  1488. X  }
  1489. X
  1490. X  while((ok == 0) && (fgets(s, 254, fp) != NULL)){
  1491. X    i = 0;
  1492. X    while(s[i] != '\0'){
  1493. X        if(s[i] == CTRL_Z){
  1494. X            ok++;
  1495. X            break;
  1496. X        }
  1497. X        i++;
  1498. X    }
  1499. X    if(ok == 0){
  1500. X        i = strlen(s) -2;
  1501. X        if(s[i] == CR){
  1502. X            s[i]    = LF;
  1503. X            s[i +1] = '\0';
  1504. X        }
  1505. X        fputs(s, ff);
  1506. X    }
  1507. X  }
  1508. X  fclose(fp);
  1509. X  fclose(ff);
  1510. X
  1511. X  unlink(pfad);
  1512. X  rename(p, pfad);
  1513. X}
  1514. X
  1515. X
  1516. X
  1517. X/***************************************************************************/
  1518. X/*      FUNKTION  statitik()                           */
  1519. X/*  BESCHREIBUNG  Anrufer-Protokoll auswerten                    */
  1520. X/*     PARAMETER  keine                                                       */
  1521. X/*     RUECKGABE  keine                                                    */
  1522. X/***************************************************************************/
  1523. X
  1524. Xvoid statistik()
  1525. X{
  1526. X  FILE *fp;
  1527. X
  1528. X  struct tm *tp;
  1529. X  time_t tt;
  1530. X
  1531. X  char s[STRING];
  1532. X  char od[MAX_TAGE][STRING];
  1533. X  char t[STRING];
  1534. X  char r[STRING];
  1535. X
  1536. X  int v18u[MAX_TAGE];
  1537. X  int n18u[MAX_TAGE];
  1538. X  int v18g = 0;
  1539. X  int n18g = 0;
  1540. X
  1541. X  int zeit = 0;
  1542. X  int tage = 0;
  1543. X  int max  = 0;
  1544. X
  1545. X  int i, a;
  1546. X  int toggle = 0;
  1547. X  int sun;
  1548. X
  1549. X  fp = fopen( CALLS, "r" );
  1550. X  if(fp == NULL){
  1551. X    nerror("pd.c", 288, "statistik", "Datei-Lesefehler", CALLS);        
  1552. X  }
  1553. X
  1554. X  od[0][0] = '\0';
  1555. X
  1556. X  headline( PD27_MSG );
  1557. X  printf("%s\n", PD28_MSG);
  1558. X  printf("===============================================================================\n");
  1559. X
  1560. X  while((fgets(s, (STRING *2), fp) != NULL) && (tage < (MAX_SCR_LINES -7))){
  1561. X    strcpy(t, (char *) strcopy(s, 64, 71));
  1562. X
  1563. X    if(strcomp(t, od[tage]) != 0){
  1564. X        if(tage != 0){
  1565. X            if((v18u[tage] + n18u[tage]) > max){
  1566. X                max = v18u[tage] + n18u[tage];
  1567. X            }
  1568. X            v18g += v18u[tage];
  1569. X            n18g += n18u[tage];
  1570. X        }
  1571. X        tage++;
  1572. X        od[tage][0] = '\0'; strcat(od[tage], t);
  1573. X        v18u[tage] = 0;
  1574. X        n18u[tage] = 0;
  1575. X        }
  1576. X    zeit = atoi(strcopy(s, 74, 75));
  1577. X    if((zeit >   6) && (zeit < 18)) v18u[tage]++;
  1578. X    if((zeit >= 18) || (zeit <= 6)) n18u[tage]++;
  1579. X  }
  1580. X
  1581. X  sprintf(s, "%s", "ooooooooooooooooooooooooooooooooooooooooooooooooooooo");
  1582. X
  1583. X  time(&tt);
  1584. X  tp = localtime(&tt);
  1585. X  sun = tp->tm_wday;
  1586. X
  1587. X  for(i = 1; i < tage; i++){
  1588. X    sprintf(t, "%s", s);
  1589. X    a = (290 / max * (v18u[i] + n18u[i])) / 10;
  1590. X    t[a] = '\0';    
  1591. X    strcpy(r, "    ");    
  1592. X    if(sun == 0){
  1593. X        strcpy(r, PD29_MSG);
  1594. X        toggle++;    
  1595. X        ansi( "md" );
  1596. X    }
  1597. X    if(sun == 6) 
  1598. X        strcpy(r, PD30_MSG);
  1599. X    sun--;
  1600. X    if(sun == -1) sun = 6;
  1601. X
  1602. X    printf("%s %s %4.d        %5.d         %5.d      %s\n",
  1603. X                od[i], r, v18u[i], n18u[i], v18u[i]+n18u[i], t);
  1604. X    if(toggle != 0) ansi( "me" );
  1605. X    toggle = 0;
  1606. X  }
  1607. X
  1608. X  printf("-------------------------------------------------------------------------------\n");
  1609. X  printf("%s %5.d        %5.d         %5.d      %s\n",
  1610. X      PD31_MSG, v18g, n18g, v18g+n18g, PD32_MSG);
  1611. X  printf("===============================================================================\n");
  1612. X
  1613. X  printf("\n%s %d %s.\n", PD33_MSG, (tage -1), PD34_MSG);   
  1614. X
  1615. X  fclose(fp);
  1616. X}
  1617. X
  1618. X
  1619. X
  1620. X
  1621. X
  1622. X/***************************************************************************/
  1623. X/*      FUNKTION  archivieren()                           */
  1624. X/*  BESCHREIBUNG  Archivierer auswaehlen und Dateien packen           */
  1625. X/*     PARAMETER  arg = artikel-liste                       */
  1626. X/*     RUECKGABE  Names des Archivs                       */
  1627. X/***************************************************************************/
  1628. X
  1629. Xchar *archivieren( arg )
  1630. Xchar arg[];
  1631. X{
  1632. X  FILE *fp;
  1633. X  int i, c;
  1634. X
  1635. X  struct stat fstat;
  1636. X
  1637. X  char s[LONGSTRING+STRING];
  1638. X  char t[STRING];
  1639. X  char packers[10][STRING];
  1640. X  char adds[10][STRING];
  1641. X  char tar[10][STRING];
  1642. X  char en[10][STRING];
  1643. X  char cd[LONGSTRING];
  1644. X
  1645. X  int fpid;
  1646. X
  1647. X
  1648. X  headline( PD37_MSG );
  1649. X  printf("\n");
  1650. X
  1651. X  sprintf(s, "%s/%s", HOME, PACKERS);
  1652. X  fp = fopen(s, "r");
  1653. X  if (fp == NULL) {
  1654. X    nerror("pd.c", 495, "archivieren", "Datei-Lesefehler", s);
  1655. X  }
  1656. X  i = 0;
  1657. X  while((fgets(s, 80, fp) != NULL) && (s[0] == '/'));
  1658. X  while((i < 10) && (fscanf(fp, "%s %s %s %s %s", s, packers[i], adds[i], tar[i], en[i]) > 0)){
  1659. X    i++;
  1660. X    printf("  %d - %s\n\n", i, s); 
  1661. X  }
  1662. X  fclose(fp);
  1663. X
  1664. X  ansi("md");
  1665. X  printf("\n%s > ", PD38_MSG);
  1666. X  ansi("me");
  1667. X
  1668. X  c = getint();
  1669. X  if(c > 32) printf("%c", c);
  1670. X  c -= 49;
  1671. X
  1672. X  if(c > i) return (char *) "Noe!";
  1673. X
  1674. X  
  1675. X  printf("\n\n%s .", PD39_MSG);
  1676. X
  1677. X  switch( (fpid = fork()) ){
  1678. X    case -1 :
  1679. X        break;
  1680. X    case  0 : 
  1681. X        while(1){
  1682. X            printf(".");
  1683. X            sleep(2);
  1684. X        }    
  1685. X        break;
  1686. X  }
  1687. X
  1688. X  strcpy(cd, (char *) arg);
  1689. X
  1690. X  if(tar[c][0] != '-'){
  1691. X    sprintf(t, "DNL%s.tar", mytime(1));
  1692. X    t[5] = 'Z';
  1693. X    sprintf(s, "exec %s %s %s > /dev/null 2>&1", TAR, t, cd);
  1694. X    system( s );
  1695. X    strcpy(cd, (char *) t);
  1696. X  }    
  1697. X  else{
  1698. X    sprintf(t, "DNL%s", mytime(1));
  1699. X    t[5] = 'Z';
  1700. X  }
  1701. X
  1702. X  if(adds[c][0] == '?')
  1703. X    sprintf(s, "exec %s %s > /dev/null 2>&1", packers[c], cd);
  1704. X  else
  1705. X    sprintf(s, "exec %s %s %s %s > /dev/null 2>&1", packers[c], adds[c], t, cd);
  1706. X    
  1707. X  system( s );
  1708. X
  1709. X  unlink( t );
  1710. X
  1711. X  strcat(t, (char *) en[c]);
  1712. X
  1713. X  kill( fpid, SIGKILL );
  1714. X  (void) wait( &fpid );
  1715. X
  1716. X  clearline();
  1717. X
  1718. X  if(tar[c][0] != '-'){
  1719. X    ansi( "md" );
  1720. X    printf( PD40_MSG );
  1721. X    ansi( "me" );
  1722. X    printf("%s\n", PD41_MSG);
  1723. X  }  
  1724. X
  1725. X  stat(t, &fstat);
  1726. X  printf("%s \"%s\" %s %ld %s.", PD42_MSG, t, PD43_MSG, fstat.st_size, PD44_MSG);
  1727. X
  1728. X  return (char *) t;
  1729. X}
  1730. X
  1731. X
  1732. X
  1733. X/***************************************************************************/
  1734. X/*      FUNKTION  download()                           */
  1735. X/*  BESCHREIBUNG  Text- und Binaerartikel uebertragen               */
  1736. X/*     PARAMETER  arg = artikel[-artikel]                                  */
  1737. X/*     RUECKGABE  keine                                                    */
  1738. X/***************************************************************************/
  1739. X
  1740. X#define MAX_DL_FILES 20
  1741. X
  1742. Xvoid download( arg )
  1743. Xchar arg[];
  1744. X{
  1745. X  int i, k, l, m;
  1746. X  int von, bis;
  1747. X  int ALLE;
  1748. X  int protokoll, ok;
  1749. X  int cps, bps, eff;
  1750. X
  1751. X  long ts, tn;
  1752. X  long bytes_total = 0L;
  1753. X
  1754. X  struct stat fst;
  1755. X
  1756. X  char s[STRING];
  1757. X  char cd[LONGSTRING];
  1758. X  char t[(LONGSTRING+STRING)];
  1759. X  char tmp[STRING];
  1760. X
  1761. X  char files[MAX_DL_FILES][STRING];
  1762. X  int mdlp = 1;
  1763. X
  1764. X  int art[MAX_PER_NG];
  1765. X  int artp = 0;
  1766. X  int lastart;
  1767. X
  1768. X  int havetokill = 0;
  1769. X
  1770. X
  1771. X  FILE *fp, *ff;
  1772. X
  1773. X  
  1774. X  tmp[0] = '\0';
  1775. X
  1776. X  i = 0;
  1777. X  k = -1;
  1778. X  l = -1;
  1779. X  m = -1;
  1780. X
  1781. X  while (arg[i] != '\0') {
  1782. X    if (arg[i] == '-') k = i;
  1783. X    if (arg[i] == '*') l = i;
  1784. X    if ((arg[i] > 48) && (arg[i] < 58) && (m == -1)) m = i;
  1785. X    i++;
  1786. X  }
  1787. X
  1788. X  von = 1;
  1789. X  bis = 32000;
  1790. X
  1791. X  if ((m == -1) && (l == -1) && (k == -1)) {
  1792. X    return;
  1793. X  }
  1794. X
  1795. X  if ((m != -1) && (l == -1) && (k == -1)) {
  1796. X    strcpy(s, (char *) strcopy(arg, m, length(arg)));
  1797. X    von = atoi(s);
  1798. X    bis = von;
  1799. X  }
  1800. X  if (k != -1) {
  1801. X    strcpy(s, (char *) strcopy(arg, 0, (k - 1)));
  1802. X    von = atoi(s);
  1803. X    strcpy(s, (char *) strcopy(arg, (k + 1), length(arg)));
  1804. X    bis = atoi(s);
  1805. X
  1806. X    if (von == 0) von = 1;
  1807. X    if (bis == 0) bis = 32000;
  1808. X  }
  1809. X  
  1810. X  if(von > bis){
  1811. X    i = bis;
  1812. X    bis = von;
  1813. X    von = i;
  1814. X  }
  1815. X
  1816. X  maybe_locked(INHALT, "r");
  1817. X  fp = fopen(INHALT, "r");
  1818. X  if (fp == NULL) {
  1819. X    nerror("pd.c", 504, "download", "Datei-Lesefehler", INHALT);
  1820. X  }
  1821. X  while (fgets(cd, 250, fp) != NULL){
  1822. X    i = atoi(cd);
  1823. X    if((i >= von) && (i <= bis)){
  1824. X        art[artp] = i;
  1825. X        artp++;
  1826. X        if(artp > MAX_PER_NG){
  1827. X            printf("This is a known bug ;-)");
  1828. X            exit(0);
  1829. X        }        
  1830. X    }
  1831. X  }
  1832. X  fclose(fp);
  1833. X
  1834. X
  1835. X  printf("\n\n");
  1836. X
  1837. X  ansi("mr");
  1838. X  printf("%c[%s] %c, %c, %c, %c ? > ", CR, PD07_MSG, PD08_MSG, PD09_MSG, PD10_MSG, PD11_MSG);
  1839. X  ansi("me");
  1840. X
  1841. X
  1842. X  do {
  1843. X    protokoll = getint();
  1844. X    if (protokoll >= 97) protokoll -= 32;
  1845. X    if (protokoll == '?') {
  1846. X        clearline();
  1847. X        ansi("mr");
  1848. X        printf("%c%s > ", CR, PD12_MSG);
  1849. X        ansi("me");
  1850. X    }
  1851. X    if ((protokoll != PD08_MSG) && (protokoll != PD09_MSG) &&
  1852. X        (protokoll != PD10_MSG) && (protokoll != PD11_MSG))
  1853. X        protokoll = 0;
  1854. X  } while (protokoll == 0);
  1855. X
  1856. X
  1857. X  printf("%c", protokoll);
  1858. X
  1859. X  if (strcomp(BRETT, "PM") != 0) {
  1860. X           sprintf(s, "%s", BRETT); 
  1861. X  }
  1862. X  else {
  1863. X    sprintf(s, "%s/usr/%d", HOME, USER.id);
  1864. X  }
  1865. X  chdir( s );
  1866. X
  1867. X  cd[0] = '\0';
  1868. X  printf("\n\n%s .", PD36_MSG);
  1869. X
  1870. X  lastart = artp;
  1871. X
  1872. X  for( i = 0; i < artp; i++){  
  1873. X
  1874. X    sprintf(s, "%d", art[i]); 
  1875. X    
  1876. X    fp = fopen(s, "r");
  1877. X    if(fp != 0){
  1878. X        printf(".");
  1879. X
  1880. X        while ((fgets(t, 250, fp) != NULL) && (t[0] > 32));
  1881. X        while ((fgets(t, 250, fp) != NULL) && (t[0] < 32));
  1882. X
  1883. X        ok = 0;
  1884. X
  1885. X        if (strcomp("BINFILE", t) == 0) {
  1886. X            fgets(t, 80, fp);
  1887. X            strcpy(s, (char *) stripped(t));
  1888. X            ok++;
  1889. X        }
  1890. X        if(((2 + strlen(s) + strlen(cd)) < LONGSTRING) && (mdlp < MAX_DL_FILES)){
  1891. X            stat(s, &fst);
  1892. X            bytes_total += (long) fst.st_size;
  1893. X
  1894. X            if(ok != 0){
  1895. X                strcpy(files[mdlp], s);
  1896. X                mdlp++;                
  1897. X                USER.downratio += ((long) fst.st_size / 1024);
  1898. X            }
  1899. X
  1900. X            strcat(cd, s); 
  1901. X            strcat(cd, " ");
  1902. X            lastart = i;
  1903. X        }
  1904. X        fclose(fp);
  1905. X    }
  1906. X  }
  1907. X
  1908. X  if(cd[0] == '\0'){
  1909. X    ansi("md");
  1910. X    printf("%c%s\n", CR, PD35_MSG);
  1911. X    ansi("me");
  1912. X    chdir( HOME );
  1913. X    return;
  1914. X  }
  1915. X
  1916. X  if((protokoll != PD08_MSG) && (strcomp(PDNG, NG) != 0)){
  1917. X    strcpy(s, (char *) archivieren( cd ));
  1918. X    if(strcomp("Noe!", s) != 0){
  1919. X        strcpy(cd, (char *) s);
  1920. X        havetokill++;
  1921. X    }
  1922. X  }
  1923. X
  1924. X  signal(SIGINT, SIG_IGN);
  1925. X  signal(SIGHUP, SIG_IGN);
  1926. X  signal(SIGQUIT, SIG_IGN);
  1927. X  signal(SIGABRT, SIG_IGN);
  1928. X  signal(SIGTERM, SIG_IGN);
  1929. X
  1930. X  printf("\n\n");
  1931. X  ansi("md");
  1932. X  printf("%s\n\n", PD13_MSG);
  1933. X  ansi("me");
  1934. X
  1935. X  time(&ts);
  1936. X
  1937. X  switch (protokoll) {
  1938. X      case PD08_MSG:
  1939. X        sprintf(t, "exec cat %s", cd);
  1940. X        break;
  1941. X      case PD09_MSG:
  1942. X        sprintf(t, "exec %s -b %s 2> /dev/null", SX, cd);
  1943. X        break;
  1944. X      case PD10_MSG:
  1945. X        sprintf(t, "exec %s %s 2> /dev/null", SB, cd);
  1946. X        break;
  1947. X      case PD11_MSG:
  1948. X        sprintf(t, "exec %s %s 2> /dev/null", SZ, cd);
  1949. X        break;
  1950. X  }    
  1951. X  system( t );
  1952. X
  1953. X  if(havetokill != 0) unlink( cd );
  1954. X
  1955. X  time(&tn); tn = tn - ts; 
  1956. X
  1957. X  chdir( HOME );
  1958. X
  1959. X  ansi( "md" );
  1960. X  if(tn < 1) tn = 1;
  1961. X  cps = bytes_total / tn;
  1962. X  bps = cps * 11;
  1963. X
  1964. X  BAUDRATE = baudrate( bps );
  1965. X
  1966. X  eff = ((100000 / BAUDRATE) * bps) / 1000;
  1967. X
  1968. X  if(bps > BAUDRATE){
  1969. X    printf("\n\n%s\n", PD14_MSG);
  1970. X    ok = -1;
  1971. X  }
  1972. X  else{    
  1973. X    printf("\n\n%ld %s.\n", fst.st_size, PD15_MSG);
  1974. X    ok = 0;
  1975. X  }
  1976. X
  1977. X  ansi( "me" );
  1978. X  printf("%s %d cps (ca. %d bps).", PD16_MSG, cps, bps);  
  1979. X
  1980. X  
  1981. X  if(ok != -1){
  1982. X      
  1983. X    sprintf(tmp, "%s/%d.pd", TMP, getpid());
  1984. X    ff = fopen( tmp, "w" );
  1985. X
  1986. X    for(i = 1; i < mdlp; i++){
  1987. X        fprintf(ff, "%s  %c  %-40.40s", mydate( 1 ), protokoll, files[i]); 
  1988. X        fprintf(ff, "  %6.d  %6.d  %2.d%% DNL\n", cps, bps, eff);        
  1989. X    }  
  1990. X
  1991. X    i = 0;
  1992. X
  1993. X    fp = fopen( PDLOG, "r" );
  1994. X    if(fp != NULL){
  1995. X        while((fgets(s, 80, fp) != NULL) && (i < PRO_ENTRIES)){
  1996. X            fputs(s, ff);
  1997. X            i++;
  1998. X        }
  1999. X        fclose(fp);
  2000. X    }
  2001. X
  2002. X    fclose(ff);
  2003. X
  2004. X    sprintf(cd, "mv %s %s", tmp, PDLOG);
  2005. X    system( cd );
  2006. X  }
  2007. X  else{
  2008. X    if(ff != 0) fclose(ff);
  2009. X    if(tmp[0] != '\0') unlink(tmp);
  2010. X  }
  2011. X
  2012. X  if(lastart != (artp-1)){
  2013. X    ansi( "md" );
  2014. X    printf("\n%s", PD40_MSG);
  2015. X    ansi( "me" );
  2016. X    printf("%s %d %s %d %s!", PD45_MSG, art[0], PD46_MSG, art[lastart], PD47_MSG);
  2017. X  }
  2018. X
  2019. X  printf("\n\n");
  2020. X}
  2021. X
  2022. X
  2023. END_OF_FILE
  2024.   if test 18063 -ne `wc -c <'src/pd.c'`; then
  2025.     echo shar: \"'src/pd.c'\" unpacked with wrong size!
  2026.   fi
  2027.   # end of 'src/pd.c'
  2028. fi
  2029. echo shar: End of archive 6 \(of 11\).
  2030. cp /dev/null ark6isdone
  2031. MISSING=""
  2032. for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
  2033.     if test ! -f ark${I}isdone ; then
  2034.     MISSING="${MISSING} ${I}"
  2035.     fi
  2036. done
  2037. if test "${MISSING}" = "" ; then
  2038.     echo You have unpacked all 11 archives.
  2039.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2040. else
  2041.     echo You still must unpack the following archives:
  2042.     echo "        " ${MISSING}
  2043. fi
  2044. exit 0
  2045. exit 0 # Just in case...
  2046.