home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-07-09 | 61.0 KB | 2,135 lines |
- Newsgroups: comp.sources.misc
- From: Volker.Schuermann@unnet.w.open.de@unnet (Volker Schuermann)
- Subject: v31i024: mbox - A BBS for UNIX and MINIX v1.6 PL10, Part08/11
- Message-ID: <1992Jul10.050432.27711@sparky.imd.sterling.com>
- X-Md4-Signature: deff2dc67f3976636251f6b911747207
- Date: Fri, 10 Jul 1992 05:04:32 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: Volker.Schuermann@unnet.w.open.de@unnet (Volker Schuermann)
- Posting-number: Volume 31, Issue 24
- Archive-name: mbox/part08
- Environment: MINIX, ISC, ESIX, SVR3
- Supersedes: mbox: Volume 29, Issue 63-72
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # Contents: Changelog TUTORIAL etc/english.hilfe etc/help.shorthelp
- # src/bled.doc src/lesen2.c src/misc2.c
- # Wrapped by kent@sparky on Thu Jul 9 23:26:03 1992
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 8 (of 11)."'
- if test -f 'Changelog' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Changelog'\"
- else
- echo shar: Extracting \"'Changelog'\" \(9331 characters\)
- sed "s/^X//" >'Changelog' <<'END_OF_FILE'
- X
- XHeute, nach einem Telefonat mit Volker haben wir beschlossen die Versionen
- Xder ix/MBox mal auf einen Gleichstand zu bringen.
- X
- XDa inzwischen mehrere Leute an der Box programmieren, verliert man leicht
- Xden Ueberblick, wenn nicht von einem definierten Stand der Version ausge-
- Xgangen wird.
- X
- XDie Version 1.6.0 soll deshalb die Version sein, auf die sich alle nach-
- Xfolgenden Aenderungen beziehen!
- X
- XAlso wenn Aenderungen gemacht werden, diff's erzeugen und Volker schicken.
- XDabei sollte man die Angabe der Version (ab Version 1.6.0) und Patchlevel
- Xnicht vergessen, auf die sich das Diff bezieht!
- X
- XUm Aenderungen nachvollziehen zu koennen, waehre meine Bitte, an dieses
- XFile kurze Erlaeuterungen zu den Aenderungen anzuhaengen!
- X
- X---------------------------------------------------------------------------
- X
- XSat Nov 16 02:21:20 MEZ 1991, Hergo Pape <hergo@ivcmd.Boerde.DE>
- X
- Xix/MBox 1.6 PL1::
- X
- X- File patchlevel.h eingefuert, hier sind die Version, der Autor und
- X die aktuelle Patchlevel definiert. Das File wird in mbox.h eingelesen.
- X
- X- Makefile geaendert, "bled" braucht nicht mehr extra uebersetzt werden.
- X Die Variable MBOXHOME eingefuehrt, daher man kann jetzt die Sourcen
- X irgendwo uebersetzen und installiert wird in MBOXHOME. Ist meiner Meinung
- X nach guenstiger fuer die Versionskontrolle.
- X
- X- In nerror() den Aufruf der Funktion loop() gegen longjmp() ausgetauscht.
- X Zumindest unter ISC gibt es jetzt kein core mehr beim verlassen der Box.
- X
- X- In mb-daemon.c gibt die Finktion scan() nur char zurueck! Geaendert auf
- X char *scan(), da ein String zurueckgegeben wird.
- X
- X- In bled.c, HILFE wird jetzt im Makefile definiert.
- X
- X- File portinfo.c, bei ps musz leider anstatt "ps a", "ps -a" angegeben
- X werden. Kann jetzt per #define in mbox.h definiert werden.
- X Wenn ich <defunkt> Prozesse habe, geht das aber auch noch nicht richtig.
- X
- X- If's auf File-Zeiger von 0 nach NULL geaendert. Ich hoffe ich habe alle
- X gefunden.
- X
- X---------------------------------------------------------------------------
- X
- XSun Nov 17 09:02:12 CET 1991, Volker Schuermann <volkers@unnet.w.open.de>
- X
- Xix/MBox 1.6 PL1::
- X
- X- Fataler Fehler im File xmd.c gefunden und behoben.
- X (Das Uebliche: "=" oder "==", dass ist hier die Frage ...)
- X
- X- Ausgabe im Modus "Seitenweise ausgeben, Seitende markieren" komplett
- X ueberarbeitet. Diese Aenderung bezieht sich auf show.c, portinfo.c,
- X tools.c, misc2.c, misc.c und lesen2.c.
- X
- X- Hergo's Makefile fast komplett uebernommen - leider ist MINIXens
- X MAKE etwas umstaendlicher, desshalb musste 'ne kleinere Aenderung
- X gemacht werden.
- X
- X- Die Geschichte mit "ps -a" wird generell so gefahren, denn auch
- X MINIX kennt diese Flagge.
- X
- X---------------------------------------------------------------------------
- X
- XWed Nov 20 17:02:12 CET 1991, Volker Schuermann <volkers@unnet.w.open.de>
- X
- Xix/MBox 1.6 PL2::
- X
- X- Im Makefile gab's noch ein paar Unstimmigkeiten .... jetzt gibt's
- X ein paar weniger :-)
- X
- X- Fuer den Fall das die Datei UDBASE (siehe mbox.h) nicht existiert,
- X richtet die MBox automagisch eine Userdatenbank ein, die den
- X Definitionen in mbox.h angepasst wird.
- X
- X- In admin.c war eine Forward Deklaration nicht zulaessig.
- X
- X- Die SYSV-Version hatte den "nnpost" nicht im Griff. Dieses Problem
- X ist jetzt behoben - allerdings werden Subject, Keywords und Summary
- X mit "No xxxx." gefuellt wenn sie nicht definiert vom User definiert
- X wurden.
- X
- X---------------------------------------------------------------------------
- X
- XSat Nov 23 16:22:24 MEZ 1991, Hergo Pape <hergo@ivcmd.Boerde.DE>
- X
- Xix/MBox 1.6 PL3::
- X
- X - In coreleft.c noch ein "#include <malloc.h> eingefuegt, sonst kommt
- X bei malloc() ein Warning.
- X - Im Makefile ist weiterl.c angegeben! habe das File weiterleiten.c
- X entsprechend umbenannt.
- X - Unter ISC gibt es keine Funktion "chgrp()", das wird wie bei SYS7
- X mit chown() gemacht.
- X - In bled.c wurde HILFE nochmal definiert! Habe #ifndef Klammer drum
- X gesetzt.
- X - In xmd.c fehlt in der Funktion main(), ganz hinten eine Klammer '}'!.
- X
- X---------------------------------------------------------------------------
- X
- XSun Nov 24 11:15:43 CET 1991, Volker Schuermann <volkers@unnet.w.open.de>
- X
- Xix/MBox 1.6 PL3::
- X
- X - Die Flagge -D_ISC sorgt dafuer, dass auch unter Interactive UNIX
- X der System Call "chown" statt "chown"&"chgrp" eingesetzt wird.
- X
- X - Die Flagge -D_DATESTAMP gibt auf der Console (oder auf was immer
- X gerade per REDIRECT umgeleitet wird) zusaetlich zu den alten MBox-
- X Informatione auch Datum und Uhrzeit aus.
- X
- X---------------------------------------------------------------------------
- X
- XWed Dec 4 19:41:02 CET 1991, Volker Schuermann <volkers@unnet.w.open.de>
- X
- Xix/MBox 1.6 PL4::
- X
- X - Die Flagge -D_SCO entspricht fast komplett -D_ISC. Allerdings wird
- X die Definition der ENTER Taste bei -D_SCO zusaetzlich beeinflusst
- X (ENTER = 13).
- X
- X - Im Makefile fehlte bei PROGS die Angabe "xmd" ("mb-daemon" war doppelt
- X aufgefuehrt.
- X
- X - Die Umbenennung von "weiterleiten.c" auf "weiterl.c" bleibt auch
- X weiterhin den Installateuren ueberlassen :-)
- X
- X
- X---------------------------------------------------------------------------
- X
- XSun Dec 8 19:41:02 CET 1991, Volker Schuermann <volkers@unnet.w.open.de>
- X
- Xix/MBox 1.6 PL4::
- X
- X - Da die MBox ab sofort komplett auf RMAIL und INEWS aufsetzt, gibt's
- X ein paar GROESSERE Aenderungen:
- X
- X Die Modi SYS_ACCOUNT und HDB_UUCP wurden komplett deaktiviert.
- X
- X Die Kommunikation mit RMAIL, INEWS und SMAIL (?) laeuft ueber drei
- X Shell-Scripts: $MBOXHOME/etc/rmail.sh, ~/etc/inews.sh und ~/etc/alias.sh
- X
- X - Bisher habe ich es nicht fertig gebracht auf SETUID "root" zu verzichten.
- X Auch nach der Umstellung auf RMAIL/INEWS laufen MB-DAEMON und MBOX
- X nur mit "root"-Permissions fehlerfrei.
- X
- X---------------------------------------------------------------------------
- X
- XSat Dec 28 18:11:41 CET 1991, Volker Schuermann <volkers@unnet.w.open.de>
- X
- Xix/MBox 1.6e PL5::
- X
- X - Alle Text-Zeilen im Source-Code der ix/MBox wurden entfernt und durch
- X #DEFINES ersetzt. Diese Defines koennen ueber das "Language-File"
- X [mbox.msg] belegt werde.
- X
- X - Die Dateien [help.befehle], [help.hilfe] und [help.shorthelp] liegen
- X in englischen Versionen vor. Das gilt auch fuer die Dokumentation.
- X
- X - Verschiedene Fehler in "lesen2.c" und "admin.c" wurden behoben. Ausserdem
- X wird neue Post auch direkt beim Anmelden angekuendigt.
- X
- X
- X---------------------------------------------------------------------------
- X
- XWed Jan 1 11:11:11 CET 1992, Volker Schuermann <volkers@unnet.w.open.de>
- X
- Xix/MBox 1.6 PL6::
- X
- X - Probleme mit "ifdef XXX || XXX" in [defs.h] und [getline.c] geloest.
- X
- X - Der XMD wertet nur noch das erste Auftreten von "From:" und "Subject:"
- X aus. Bei "From" (aus dem Envelope) gibt's 'ne Sonderregelung.
- X
- X---------------------------------------------------------------------------
- X
- XWed Jan 4 22:31:51 CET 1992, Volker Schuermann <volkers@unnet.w.open.de>
- X
- Xix/MBox 1.6 PL6::
- X
- X - Befehl "Suchen" testweise implementiert. Er setzt auf GREP auf.
- X
- X - Die Header von MAIL und NEWS koennen editiert werden. "Followup" und
- X "Poster" werden erkannt und ausgewertet.
- X
- X---------------------------------------------------------------------------
- X
- XTue Feb 17 21:02:32 CET 1992, Volker Schuermann <volkers@unnet.w.open.DE>
- X
- Xix/MBox 1.6 PL8.7::
- X
- X - Befehl "User" erweitert: Informationen ueber lokale User aus der
- X Userdatenbank, oder per "uux" von anderen Sites.
- X
- X - Sicherheitslecks in "postfach.c" und "admin.c" gefunden und entschaerft.
- X
- X - Header werden generell <intensive> ausgegeben.
- X
- X - Funktion "Download" bietet die Option mehrer Dateien mit einem
- X Kommando zu uebertragen.
- X
- X - Funktion "Statistik #" zeigt zusaetlich die Ausnutzung der Baudrate
- X in Prozent an.
- X
- X - Befehl "Statistik %" errechnet eine HITLISTE aus der Liste der
- X Downloads.
- X
- X - Erfassung in "postfach.c" und "admin.c" erlaubt keine Sonderzeichen
- X in Name, Nick/Alias und Shell-Name.
- X
- X - XMD verfuegt ueber eine XMD.ALIAS-Datei, in der Empfaenger-Adressen
- X lokal umgeleitet werden koennen.
- X
- X - Das Makefile wurde ERHEBLICH verbessert!
- X
- X - Die INDEX-Files muessen nicht mehr global fuer alle Gruppen im
- X voraus gebildet werden, sondern koennen auch online von der MBox
- X gruppenweise erstellt werden.
- X
- X---------------------------------------------------------------------------
- X
- XFri May 28 19:53:21 CET 1992, Volker Schuermann <volkers@unnet.w.open.DE>
- X
- Xix/MBox 1.6 PL10::
- X
- X - MB-DAEMON wurde erheblich verbessert, was zu einem Geschwindigkeits-
- X vorteil von bis zu 200% fuehrt
- X
- X - RTF (Richtext Format) und 'Quoted-Printable' sind jetzt fuer alle
- X MBox-User lesbar
- X
- X - Erste Schritte ich Richtung MultiMedia-Mail sind implementiert
- X
- X - Neue Befehle: EDIT, DOWNLOAD
- X
- X - Es wurde ein Accouting-Mechanismus eingefuehrt, der levelabhaengig
- X greift - dadurch laesst sich eine Trennung von zahlenden und nicht-
- X zahlenden Usern herstellen
- X
- X---------------------------------------------------------------------------
- X
- XSat Jun 6 14:11:01 CET 1992, Volker Schuermann <volkers@unnet.w.open.DE>
- X
- Xix/MBox 1.6 PL10a::
- X
- X - Der Befehl "BRETT !" wurde erweitert: Er zeigt jetzt neben dem
- X Namen eines Brettes auch den entsprechenden Informationstext an
- X
- X - Es gibt jetzt eine Moeglichkeit externe Kommandos direkt in die
- X Befehls-Struktur der MBox einzubinden
- X
- END_OF_FILE
- if test 9331 -ne `wc -c <'Changelog'`; then
- echo shar: \"'Changelog'\" unpacked with wrong size!
- fi
- # end of 'Changelog'
- fi
- if test -f 'TUTORIAL' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'TUTORIAL'\"
- else
- echo shar: Extracting \"'TUTORIAL'\" \(10956 characters\)
- sed "s/^X//" >'TUTORIAL' <<'END_OF_FILE'
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X ix/MBox BETA-Test Version
- X Mailbox-Programm fuer UNIX(-Derivate)
- X
- X Volker Schuermann
- X Wuppertal, FRG, 08.12.1991
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X INHALT (Tutorial Beta-Entwurf (internal use only !))
- X=============================================================================
- X
- X 1. ALLGEMEINES
- X
- X 1.1. Public Domain ?!
- X 1.2. Struktur der Programme
- X
- X 2. UMGEBUNG (Voraussetzungen)
- X
- X 2.1. Fuer alle
- X 2.2. Speziell fuer Minix
- X
- X 3. INSTALLATION
- X
- X 3.1. Anpassungen "mbox.h"
- X 3.2. Anpassungen "mb-daemon.c"
- X 3.3. Anpassungen "/usr/lib/crontab"
- X 3.4. Anpassungen "/etc/passwd"
- X 3.5. Die Verteilung der Rechte
- X 3.6. Kommunikation mit RMAIL & INEWS
- X
- X 4. VERWALTUNG
- X
- X 4.1. der Teilnehmer (Bitte VOR dem ersten Aufruf der MBox lesen !)
- X 4.2. der Dateien
- X
- X 5. WEITERE INFOS
- X
- X 5.1. Mail genuegt
- X 5.2. Updates
- X
- X
- X
- X
- X
- X
- X1. ALLGEMEIN
- X=============================================================================
- X
- X1.1. Public Domain ?!
- X======================
- X
- XDas gesammte Programmpaket darf beliebig oft weitergegeben und eingesetzt
- Xwerden.
- X
- XEs duerfen keine veraenderten Versionen verbreitet werden. Jede Veraenderung
- Xmuss dem Autor als ASCII-Textfile uebermittelt werden. Er entscheidet, ob
- Xdie Veraenderung in die naechste Version aufgenommen wird.
- X
- XDie Routine "getch.c" stammt nicht vom Autor, sondern von "attron!chris" !
- X
- X
- X
- X1.2. Struktur der Programme
- X===========================
- X
- XMir ist voellig klar,
- X
- X... dass jeder die Routinen der "ix/MBox" effizienter,
- Xstrukturierter und "besser" schreiben koennte.
- X
- X... dass GOTOs und globale Varibalen nicht unbedingt zum
- XHandwerkszeug eine C-Programmierers gehoehren sollten.
- X
- X... dass viele Routinen aussehen, als waeren sie schnell
- X"ins Unreine" geschrieben worden - bei etlichen trifft das zu.
- X
- X... dass keine der Routinen einem LINT standhalten koennte.
- X
- X... dass jeder, der diese Punkte bemaengelt, selbst zu faul
- Xwar, eine MBox auf die Beine zu stellen ...
- X
- X
- X
- X
- X2. UMGEBUNG
- X=============================================================================
- X
- X2.1. Fuer alle
- X==============
- XFolgende Programme MUESSEN bereits auf dem Host-Rechner installiert und
- Xeinsatzfaehig sein:
- X
- X- UUCP (UUCICO, UUX, UUXQT, ...)
- X
- X- NEWS (RNEWS, PNEWS, EXPIRE, NNPOST, ...)
- X
- X- MAIL (LMAIL)
- X
- X- UMAIL (SENDMAIL, SMAIL etc.)
- X
- XDie MBox setzt auf dieser Programm-Konstellation auf. Sie ist nicht ein-
- Xsatzfaehig, wenn eines der Programm nicht verfuegbar ist.
- X
- X
- X
- X2.2. Speziell fuer Minix
- X========================
- XDie MBox wurde entwickelt unter MINIX 1.5.10 ... folgenden Patches muessen
- Xbei dieser Version angewendet werden:
- X
- X- Bruce Evans MX386-Patches
- X
- XVorteilhaft aber nicht zwingend erforderlich:
- X
- X- Gordon Irlams VC (virtuelle Consolen)
- X
- X- Shoelace (zum Booten von Harddisk)
- X
- XDie "ix/MBox" laeuft NICHT im 64+64 Modus, sondern nur unter 386er MINIX !
- XWie's bei 68000er MINIX aussieht, ist bisher nicht geprueft worden.
- X
- X
- X
- X3. INSTALLATION
- X=============================================================================
- X
- X3.1. Anpassungen ("mbox.h")
- X===========================
- XDie Datei "mbox.h" enthaelt die wichtigsten system-spezifischen Parameter.
- XDiese Parameter MUESSEN (zum Teil) unbedingt angepasst werden.
- X
- XDie einzelnen Eintraege sind in der Datei dokumentiert - Fehler bei der
- XAnpassung ziehen WEITE Kreise ... VORSICHT ist die Mutter der Porzellankiste.
- X
- XPfade, deren Definition mit "./" beginnen, beziehen sich auf die MBox und
- Xderen HOME-Verzeichnis. Diese Pfade muessen/sollten NICHT geandert werden.
- X
- XDas gilt praktisch fuer alle Definitionen, die nicht durch ein vorangestelltes
- X">" kenntlich gemacht wurden.
- X
- XZusaetzlich enthalten die verschiedenen Programme jeweils eigene Parameter-
- XDefinitionen. Deren Bedeutung wird im Folgenden erklaert.
- X
- X
- X3.2. Anpassungen "mb-daemon.c"
- X==============================
- XDer MB-Daemon kann u.A. auch als Reflektor fuer eine NewsGroup (NG) fungieren.
- XDa er sich nicht an die Konventionen fuer Reflektoren haelt, sollte sein
- XEinsatz auf lokal NGs beschraenkt bleiben.
- X
- XREFLECT_NG Diese NG wird vom Reflektor untersucht und beantwortet
- XREFLECT_LOG Hier protokolliert der Reflector seine Aktionen
- XDIRLIST Mit dieser Datei wird ein DIRLIST-Request beantwortet
- XREFLECTUID UID des Users "reflector" ... siehe "/etc/passwd"
- X
- XSoll der Reflektor inaktiv bleiben, genuegt es die REFLECT_NG auf eine NG
- Xzu setzen, die nicht existiert (NICHT "", sondern z.B. "dummy.dummy".
- X
- X
- X
- X
- X3.3. Anpassungen "/usr/lib/crontab"
- X===================================
- XDie CRONTAB muss um 2 Eintraege erweitert werden. Entscheidend ist dabei
- Xdie chronologische Reihenfolge:
- X
- X 0 4 * * * /usr/lib/news/sendbatch -c NEWSFEED
- X 30 5 * * * /usr/lib/uucp/uucico -r1 -x2 -sNEWSFEED
- X 0 6 * * * /usr/lib/news/rnews -U
- X 20 6 * * * /usr/bin/mb-daemon
- X 40 6 * * * /usr/bin/xmd
- X
- XMB-Daemon und XMD duerfen erst aktiv werden, nachdem die NEWS einsortiert
- Xsind. Wird als Mailer SMAIL verwendet, entfaellt der Aufruf des XMD.
- X
- X
- X3.4. Anpassung der "/etc/passwd"
- X================================
- XDie PASSWD-Datei sollte um den Eintrag "gast" erweitert werden. Meldet
- Xsich dieser User an, wird direkt die "ix/MBox" gestartet.
- XEin Verlassen den MBox ist damit gleichbedeutend mit einem Verlassen des
- XSystems !
- X
- Xgast::12:1:Mailbox-User:/usr/gast:/usr/bin/mbox
- Xvolkers:X:14:3:Volker Schuermann:/usr/volkers/bin/shh
- Xreflector:*:22:3:UnNet Reflector::
- Xnews:*:30:6:W-NEWS System:/usr/lib/news:
- Xusenet:*:31:6:W-NEWS Administrator:/usr/lib/news:
- Xuucp::40:40:UUCP-Account on Un.Net:/usr/spool/uucp:
- Xpostmaster:*:41:40:UUCP-Erroruser:/usr/spool/uucp:/bin/sh
- Xnuucp::42:40:Anonymous-UUCP:/usr/spool/uucppublic:/usr/lib/uucp/uucico
- X
- XDie Gruppe des Users "gast" und die Gruppe der uebrigen User (z.B. "volkers")
- Xmuss unterschiedlich sein (GID !)
- X
- X
- X
- X3.5. Die Verteilung der Rechte
- X==============================
- XHier nun eine Uebersicht der versch. Pfade und Programme (wobei das HOME-
- XVerzeichnis der "ix/MBox" jetzt "/usr/mbox" genannt wird):
- X
- Xdrwxrwxrwx root.root /usr/mbox
- X-r-xr-xr-x root.root /usr/mbox/mbrsh
- X
- Xdrwxrwx--- root.root /usr/mbox/etc
- X-rw-rw---- root.root /usr/mbox/etc/*
- X-rwxrwx--- root.root /usr/mbox/etc/tset
- X
- Xdrwxrwx--- root.root /usr/mbox/lib
- X-rw-rw-rw- root.root /usr/mbox/lib/*
- X
- Xdrwx------ root.root /usr/mbox/src
- X-rw-r--r-- root.root /usr/mbox/src/*
- X
- Xdrwxrwx--- root.root /usr/mbox/usr
- Xdrwxrwx--- root.root /usr/mbox/usr/*
- X-rw-rw---- root.root /usr/mbox/usr/*/*
- X
- X-rwsrwsr-x root.root /usr/bin/mbox
- X-rwxrwxr-x bin.sys /usr/bin/bled
- X-rwxrwxr-x root.root /usr/bin/xmd
- X-rwsrwsr-x root.root /usr/bin/mb-daemon
- X
- X
- X3.6. Kommunikation mit RMAIL & INEWS
- X====================================
- XMit der Version 1.6 PL4 wird eine voellig neue Struktur der Kommunikation
- Xzwischen ix/MBox und UNIX/MINIX eingefuehrt. Sowohl Mails als auch Artikel
- Xfuer NEWS werden von der MBox mit einem Header ausgestattet und an die
- XProgramme RMAIL bzw. INEWS uebergeben, die den Header komplettieren und
- Xdie MSG verschicken.
- X
- XDurchgefuehrt werden diese Aktion mit Hilfe von 2 (3) Shell-Scripts. Sie
- Xbefinden sich in "/usr/mbox/etc/rmail.sh", "/usr/mbox/etc/inews.sh" und
- X"/usr/mbox/etc/alias.sh". Das letzte Script wird immer dann aufgerufen,
- Xwenn ein neues Postfach angelegt wird. Es sollte dann eine Zeile an die Datei
- X"/usr/lib/smail/aliases" (Alias-Datei von SMAIL) angehaengt werden, die
- XSMAIL anweist den Usernamen "Vorname.Name" als Alias zu verstehen und das
- Xentsprechende Kommando ("xmd Vorname.Name") auszufuehren ...
- X
- X
- X
- X
- X4. VERWALTUNG
- X=============================================================================
- X
- X4.1. Teilnehmer
- X===============
- XDie "ix/MBox" benutzt den Befehl "admin" zur Pflege der Teilnehmerdaten-
- Xbank. Der Sysop/Postmaster/Administrator kann hier auf alle Eintraege
- Xzugreifen.
- X
- XUm die Sysop-Berechtigung zu bekommen, muss der Postmaster sich als "root"
- Xins System einloggen, und dann per "mbox" die MBox aufrufen. Er erhaelt
- Xdann Userlevel 10 und ist damit berechtigt, das Kommando "admin" auszu-
- Xfuehren. Sollte das mal nicht funktionieren, kann man einfach das Level
- Xfuer "admin" in der Datei "/usr/mbox/etc/help.befehle" auf 0 setzen ...
- X
- XACHTUNG: damit hat JEDER Zugriff auf alle Teilnehmerdaten - also nach
- XErhoehung des eigenen Levels (auf 10) unbedingt das "admin"-Level wieder
- Xauf 9 zuruecksetzen !!!
- X
- X
- XNochmal ACHTUNG: Zwei User muessen unbedingt ins System eingetragen werden:
- X
- XUsername: GAST (identisch mit der GUEST-Definition in "mbox.h")
- XSH-Account: gast (siehe "/etc/passwd");
- XUser-Level: 0
- X
- XUsername: Jacke wie Hose (naja...)
- XSH-Account: root (siehe POSTMASTER-Definition in "mbox.h");
- XUser-Level: 10
- X
- XSolange diese beiden User nicht ordnungsgemaess eingetragen sind, laeuft
- Xdas System nicht !!!
- X
- X
- XWird die MBox gestartet, und die Datei UDBASE (siehe "mbox.h") existiert
- Xnoch nicht, erzeugt die MBox eine Userdatenbank aus den Definitionen in
- X"mbox.h" - diese Datenbank kann mit dem Befehl "admin" ueberarbeitet werden.
- X
- XScheint das zu aufwendig, muessen die Definitionen in "mbox.h" geaendert und
- Xdie Datei UDBASE geloescht werden. Beim naechsten Start der MBox wird
- Xerneute eine Datenbank angelegt.
- X
- X
- X
- XWICHTIG: Fuer Gaeste und User muss es verschiedene GIDs (GroupIDs) auf
- XShell-Ebene geben !!! MBox-User OHNE Shell-Account werden daran erkannt,
- Xdass ihre GID die der SH-Gaeste (z.b. "other") ist ... MBox-User MIT Shell-
- XAccount haben die GID der SH-User (z.B. "sys").
- X
- X
- X
- X4.2. Dateien
- X============
- XDa es sich bei allen Protokoll- und Steuerdateien um ASCII-Textfiles handelt,
- Xkoennen Aenderungen problemlos mit einem "normalen" Editor vorgenommen werden.
- X
- XDie einzige Ausnahme bildet die Teilnehmer-Datenbank - also HAENDE WEG !!!
- X
- XSoll sich die MBox mit einem "LOGO"-Text/Bild melden, muss die Datei
- X"./etc/logo" (s. LOGO-Definition in "mbox.h") exisitieren. Diese Datei
- Xenthaelt einen ASCII-Text. ANSI-Bilder sollten vermieden werden, denn sie
- Xumgehen die TERMCAP-Steuerung der MBox.
- X
- X
- X5. WEITERE INFOS
- X=============================================================================
- X
- X5.1. Mail genuegt
- X=================
- XDiese BETA-Version des TUTORIALS beantwortet natuerlich nicht alle Fragen,
- Xdie bei der Installation der "ix/MBox" auftreten werden, aber bei zusaetz-
- Xlichem Studium der einzelnen Routinen (siehe auch CROSSREF), sollte sich
- Xzu fast jedem Problem auch eine Loesung finden lassen.
- X
- XWenn alles fehlschlaegt, genuegt eine MAIL an "volkers@unnet.w.open.de",
- Xum Infos und evtl. neue Routinen zu bekommen. Ausserdem wird immer dann,
- Xwenn's neue Erkenntnisse gibt, ein INFO-Rundschreiben verschickt, um
- Xalle MBox-Betrieber mit dem aktuellen Stand der Entwicklung vertraut
- Xzu machen.
- X
- X
- X5.2. Updates
- X============
- XUpdates werden als CDIFFs fuer die Version 1.6.0 der ix/MBox verschickt,
- Xoder auf Wunsch als komplette Source-Files. Ausserdem werden von Zeit zu
- XZeit INFO-Runschreiben verschickt, die auf Aenderungen aufmerksam machen.
- X
- X
- XDer Rest ist Glueckssache ... mfG Volker Schuermann
- END_OF_FILE
- if test 10956 -ne `wc -c <'TUTORIAL'`; then
- echo shar: \"'TUTORIAL'\" unpacked with wrong size!
- fi
- # end of 'TUTORIAL'
- fi
- if test -f 'etc/english.hilfe' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'etc/english.hilfe'\"
- else
- echo shar: Extracting \"'etc/english.hilfe'\" \(10356 characters\)
- sed "s/^X//" >'etc/english.hilfe' <<'END_OF_FILE'
- X#?
- XCommand: "?"
- X
- XYou'll get a list of all commands, which you may use. The contents of this
- Xlist depends on your user-level. Type "? *", if you like to see ALL commands
- Xof this BBS.
- X
- X#0
- XCommand: "0" ("1-9")
- X
- XThere is a "dynamic command buffer", who captures every input you type at
- Xthe command-prompt. Type "0" to see which commands are in buffer, or any
- Xnumber between 1 and 9 to execute one of those commands. Of course, you may
- Xuse the cursor-keys to select any command, too.
- X
- X#+
- XCommand: "+"
- X
- XJump to the next board with new articles.
- X
- X#-
- XCommand: "-"
- XJump to the previous board with new articles.
- X
- X#ACCOUNT
- XCommand: "Account"
- X
- XYou need to registered to send and receive mails to/from all over the
- Xworld. The registration makes you a fully accepted user of this BBS.
- XYou're now reachable by mail from users on this host or on any host, this
- Xhost is connected to.
- X
- XPLEASE use your full name as username !
- X
- X#AREA
- XCommand: "Area"
- X
- XThis command makes it possible to jump between groups ('ar ++', 'ar --') or
- Xjust subgroups ('ar +', 'ar -').
- X
- X#BOARD
- XCommand: "Board"
- X
- XThere is a board for every single subject/theme with it's own index. So you
- Xhadn't to search long for special information on any item. To move from one
- Xboard to another, you use the command "board" with some options:
- X
- XBOARD list boards with new articles
- XBOARD * list all boards depending on userlevel
- XBOARD ** list ALL boards
- XBOARD + go to the next board
- XBOARD - go to the previous board
- XBOARD ! display the name of the current board
- XBOARD # list areas in board
- XBOARD .. step from one area to the previous one
- XBOARD boardname jump to board "boardname"
- X
- X#CHAT
- XCommand: "Chat"
- X
- X- systemdepending stuff -
- X
- X#DATE
- XCommand: "Date"
- X
- XShows the current date. (Not quite right ... it's shows the systems date :-)
- X
- X#DELETE
- XCommand: "Delete"
- X
- XDelete mails or articles. NOTE: Be careful! If you type "delete" in your
- XPM, every (!) mail will be scratched!
- X
- XDELETE delete all your mail
- XDELETE article delete article no. "article"
- XDELETE article-article delete from "article" to "article"
- X
- X#DIR
- XCommand: "Dir"
- X
- XThis will give you a survey of what subjects are collect in the current
- Xboard. If you hadn't add a '*', you'll ony see the entries which are
- Xnew for you.
- X
- XDIR index new articles
- XDIR * index ALL articles (of a board)
- X
- X#DIRECTION
- XCommand: "Direction"
- X
- XIt's sounds pretty funny, but this commands decides whether you see
- Xanswers before questions or not :-)
- X
- X#DOWNLOAD
- XCommand: "Download"
- X
- XYou may use this to fetch a couple of articles. Just type in which
- Xarticles you want, and choose the prefered xfer-protocol.
- X
- X#EDIT
- XCommand: "Edit"
- X
- XFor the folks that are never quite satisfied with their work, the
- Xcommand "edit" offers the possibility to re-edit the text. Depending
- Xon the userlevel, changing other users articles is allowed, too ;-)
- X
- X#FINGER
- XCommand: "Finger"
- X
- XGetting informations about specified users is very easy. Use the command
- X"finger username" for local users, or "finger host!username" for users
- Xwho work on other sites.
- X
- X#FORWARD
- XCommand: "Forward"
- X
- XIf you like to send copies of mails/articles to other users, you may use
- Xthis command. The variable "user" (see below) stand for every kind of
- Xaddress (i.e. "Prename.Name", "host!name", "name@host.domain" etc.). So
- Xit is possible to forward articles to your own shell-account on this host,
- Xor to your account on any other host ... this may be useful sometimes.
- X
- XFORWARD list stored mails
- XFORWARD user forward a stored mail to "user"
- XFORWARD mail user forward "mail" to "user"
- XFORWARD article user forward "article" to "user"
- X
- X#GAMES
- XCommand: "Games"
- X
- XThe list, that will be shown if you enter this command, includes some
- Xgames you may play. They all have own accounting procedures and different
- Xinstruction sets ... so don't blame the sysop for anything that will
- Xhappen to you :-)
- X
- X#GOODBYE
- XCommand: "Goodbye"
- X
- XNEVER use this command! (Exception: If you REALLY want to leave :-)
- X
- X#HELP
- XCommand: "Help"
- X
- XYou managed to get this information ... so why do you ask ???
- X
- XHELP this shorthelp
- XHELP * display some pages of helpful descriptions
- XHELP command show information on "command"
- X
- X#MAIL
- XCommand: "Mail"
- X
- XOne of the most powerful commands on this BBS. If you are fitted out with
- Xthe right user-level, you're able to send mails to receivers all over the
- Xworld ... or just to another BBS-user.
- X
- XMAIL Prename.Name (Prename.Name i.e. "Volker.Schuermann")
- XMAIL Alias (Alias i.e. "Sysop")
- XMAIL Shell-Account (Shell-Account i.e. "volkers")
- X
- XThese three commands will deliver a mail to a user on this host. If this user
- Xhas his own BBS-account, the mail will be sent to his BBS-maildrop.
- XOtherwise his/her shell-account-maildrop will be filled ...
- X
- XMAIL Host!User (Host!User i.e. "unnet!Volker.Schuermann")
- XMAIL User@Host.Domain (User@Host.Domain i.e. "volker@unnet.w.open.de")
- X
- XBoth commands will send the mail to a user on another host (if "host" or
- X"host@domain" are the address of this host, the mail won't leave this host).
- X
- X#MACRO
- XCommand: "Macro"
- X
- XFor all lazy/intelligent users, here is a way to simplify work! Just create
- Xa new command to collect a group of commands:
- X
- Xnew = b comp.os.minix, d, key, b sub.os.minix, b
- X
- XThe new command "new" will jump to board "comp.os.minix" and show the index
- Xof new articels. If you hit (the) any key, it moves to "sub.os.minix" and
- Xdoes the same.
- X
- XMacro = Command Sequence
- X===========================================================================
- Xandi = mail andreas@xenox.ruhr.de
- Xwalt = mail Walter, forward weller!walterb
- Xgrp = mail volkers, forw xenox, forw stefans, forw joergg
- Xsts = mail Stefan S, forw stefans@coduck.ruhr.sub.org, forw unnet!stefans
- Xin = +, dir, KEY, in
- Xpp = PORTINFO, SLEEP 5, pp
- X
- XThe entries "in" and "pp" are demonstrating how to build recursive commands.
- XUse CTRL-X to break the run of such a command sequence!
- X
- X#MESSAGE
- XCommand: "Message"
- X
- XYou may use this text to inform other users that you're offline for a
- Xfew days or that you never answers mail or what ever ...
- X
- XThis text is shown to everybody who wants to send a mail to you on this
- Xhost.
- X
- X#MINIX
- XCommand: "Minix"
- X
- XIf you'd have to leave the BBS everytime you like to do something on
- Xshell-level, it would be a nice swapping around on this system. But with
- Xthe command "minix", you can do everything (even start the BBS :-) without
- Xleaving ...
- X
- X#PORTINFO
- XCommand: "Portinfo"
- X
- XHave a look on what the other users are doing. This includes BBS-users
- Xas well as shell-only-users (poor guys :-)
- X
- X#PROTOCOL
- XCommand: "Protocol"
- X
- XSee WHO called in WHEN from WHERE on WHICH line ... puhh, but that's exactly
- Xwhat this command is doing.
- X
- XIf you use the option "#" (means "protocol #"), the informations are shown
- Xas a diagram (for statistics purposes).
- X
- X#PM
- XCommand: "PM"
- X
- XMove to the board with your BBS-maildrop. There you may check your incomming
- Xmails and answer (reply) them.
- X
- X#READ
- XCommand: "Read"
- X
- XThat's how to get the information hidden behind the subjects ... the options
- Xto this command a described in the following:
- X
- XREAD read NEW articles
- XREAD * real ALL articles (of a board)
- XREAD article show article no. "article"
- XREAD article-article display from "article" to "article"
- X
- XThe line "READ article" builds an exceptions ... if the listing of the
- Xspecified article is complete, the BBS shows a little menu to you. Type
- Xa "?" at the prompt to see what actions are available there!
- X
- XUsing this form of the command "read" is the most convenient way to consume
- Xarticles!!!
- X
- X#SETUP
- XCommand: "Setup"
- X
- XTo make life easier (especially YOUR life), you may change lot's of the
- XBBS depending paramaters. The SETUP is fully controlled by menu, so you
- Xonly have to hit keys (more or less astonished because of the features
- Xyou never noticed before) ...
- X
- X#SIGNATURE
- XCommand: "Signature"
- X
- XUse this command to create a text, that will be sent as a footnote of every
- Xmail/article you'll write on this BBS. Have a look on the ".signatures"
- Xof other ppl. to see which facts belong to such a text ...
- X
- X#STATE
- XCommand: "State"
- X
- XGives a summary of all data, this BBS has stored in it's accouting database.
- XOf course,only that part of data is shown, that belongs to you!
- X
- X#STATISTICS
- XCommand: "Statistics"
- X
- XThe BBS collects some information for statistics purpose. If you are inter-
- Xested in those statistics, use one of the following options:
- X
- XSTATISTICS table containing NEWS-statistics
- XSTATISTICS * table containing more NEWS-statistics
- XSTATISTICS $ UUCP-rates (only if UUCP supports this)
- XSTATISTICS # download-statistics
- X
- XThe option "$" depends on the systems UUCP-Support. Ask your Sysop whether
- Xthis system accounts UUCP-Rates or not.
- X
- X#TIME
- XCommand: "Time"
- X
- XShows the system time and the time you're online in seconds ... my goodness,
- Xfive hours, and still online ...
- X
- X#USERS
- XCommand: "Users"
- X
- XYep, you're not alone on this host. To see who's on too, type one of the
- Xfollowing commands:
- X
- XUSERS show users list
- XUSERS * show users list (more detailed)
- XUSERS # users up-/download ratio
- X
- XIf your level is to low, you won't be able to use the "#" option - don't
- Xbe angry, it's not as much interesting, as it seems to be (use "stati #"
- Xinstead :-)
- X
- X#VERSION
- XCommand: "Version"
- X
- XThis option was built in for other Sysops only - they may use it to spy out
- Xwhich BBS is the older one - nothing else.
- X
- XVERSION print version
- XVERSION * display compiling definitions
- XVERSION # the "Hall of Fame"
- X
- XThe option "#" gives a list of ppl., who were members of the "BBS gold crew"
- Xduring it's development :-)
- X
- X#WRITE
- XCommand: "Write"
- X
- XUse this command to create a new article for any board or newsgroup on this
- XBBS. Depending on your user-level this article will be sent with distribution
- X"world", "*group*" or "local".
- X
- XDon't use this command to send mails to other users ... try it, if you don't
- Xtrust in documentations.
- END_OF_FILE
- if test 10356 -ne `wc -c <'etc/english.hilfe'`; then
- echo shar: \"'etc/english.hilfe'\" unpacked with wrong size!
- fi
- # end of 'etc/english.hilfe'
- fi
- if test -f 'etc/help.shorthelp' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'etc/help.shorthelp'\"
- else
- echo shar: Extracting \"'etc/help.shorthelp'\" \(4720 characters\)
- sed "s/^X//" >'etc/help.shorthelp' <<'END_OF_FILE'
- X? Befehlsuebersicht (levelabhaengig)
- X? * Befehlsuebersicht (alle Befehle)
- XBefehl ? Informationen zu "Befehl"
- X
- X0 Inhalt des Befehlspuffers
- X1-9 Befehl aus dem Puffer abrufen
- X
- X+ Wechseln ins naechste Brett mit neuen Artikeln
- X
- X- Wechseln ins vorherige Brett mit neuen Artikeln
- X
- XANRUFER Anruferprotokoll
- XANRUFER * Anruferprotokoll (komplett)
- XANRUFER # Statistik der Anrufe
- XANRUFER % Statistik der Anrufer (Hitliste)
- X
- XANSAGE Mitteilungstext anzeigen/aendern
- X
- XBRETT Bretter mit aktuellen Artikeln anzeigen
- XBRETT * Alle Bretter anzeigen (levelabhaengig)
- XBRETT ** ALLE Bretter anzeigen
- XBRETT + Wechseln ins naechste Brett
- XBRETT - Wechseln ins vorherige Brett
- XBRETT ! Aktuellen Brettnamen ausgeben
- XBRETT # Gruppen (Areas) ausgeben
- XBRETT .. Innerhalb einer Gruppe ins vorherige Brett wechseln
- XBRETT Brettname Ins Brett "Brettname" wechseln
- X
- XBRIEF User Persoenliche Nachricht an "User" senden
- XBRIEF Host!User Persoenliche Nachricht an "User" auf "Host"
- X
- XCHAT Multiport Chatsystem
- X
- XDOWNLOAD Diese Funktion erlaubt es, Artikel und Programme
- X unter Protokoll-Kontrollen zu empfangen
- X
- XEDIT Artikel Der Artikel mit der Nummer "Artikel" kann
- X nachtraeglich editiert werden
- X
- XENDE Mailbox verlassen
- XENDE * Mailbox verlassen (Scanner nicht aktuallisieren)
- X
- XGRUPPE + Zur nexten Gruppe einer Untergruppe
- XGRUPPE ++ Zur nexten Gruppe
- XGRUPPE - Zur vorherigen Gruppe einer Untergruppe
- XGRUPPE -- Zur vorherigen Gruppe
- X
- XHILFE Diese Kurzhilfe anzeigen
- XHILFE * Hilfstexte komplett ausgeben
- XHILFE Befehl Hilfstext zum Befehl "Befehl" zeigen
- X
- XINHALT Index der aktuellen Artikel ausgeben
- XINHALT * Alle Artikel eines Brettes anzeigen
- X
- XLESEN Neue Artikel listen
- XLESEN * Alle Artikel listen
- XLESEN Artikel Artikel mit der Nummer "Artikel" ausgeben
- XLESEN Artikel-Artikel Artikel von Nummer "Artikel" bis "Artikel" zeigen
- X
- XLOESCHEN Artikel Artikel Nummer "Artikel" loeschen
- XLOESCHEN Artikel-Artikel Loeschen von "Artikel" bis "Artikel"
- X
- XMAKRO Makrovereinbarungen zeigen/aendern
- X
- XMINIX Shell-Befehl Externes Kommando "Shell-Befehl" ausfuehren
- X
- XOUTDIAL Verbindung zu externen Hosts via Datex-P
- X
- XPM Ins persoenliche Verzeichnis wechseln
- X
- XPORTINFO Aktivitaeten der verschiedenen Terminals zeigen
- X
- XPOSTFACH Postfach einrichten
- X
- XRICHTUNG Leserichtung (alt <-> neu) aendern
- X
- XSCHREIBEN Artikel erfassen und speichern
- X
- XSETUP Persoenliche Anpassungen
- X
- XSPIELE Verschiedene Spiele werden aufgelistet/aufgerufen
- X
- XSTATUS Ausgabe der eigenen Anpassungen
- X
- XSTATISTIK Datei-Statistik der versch. Bretter anzeigen
- XSTATISTIK * Statistik komplett ausgeben
- XSTATISTIK $ Uebersicht der UUCP-Gebuehren
- XSTATISTIK # Protokoll der Downloads (PD-Bretter)
- XSTATISTIK % Protokoll der Downloads (HITLISTE)
- X
- XSUCHEN Muster Artikel eines Brettes nach "Muster" durchsuchen
- X
- XSYSINFO Allgemeine Informationen zur Mailbox
- X
- XUNTERSCHRIFT Unterschrift anzeigen/aendern
- X
- XUPLOAD Diese Funktion wird ueber den Befehl SCHREIBEN
- X automatisch aufgerufen
- X
- XUSER Userliste ausgeben
- XUSER * Userliste mit erweiteren Informationen
- XUSER # Userliste mit Up-/Download Verhaeltnis
- XUSER % Userliste zur Gebuehrenabrechnung
- XUSER Name Informationen ueber den Teilnehmern "Name"
- X
- XVERSION Versionsnummer ausgeben
- XVERSION * Versionsnummer und Definitionen ausgeben
- XVERSION # Versionsnummer und "Hall of Fame" ausgeben
- X
- XWEITERLEITEN Weiterleitbare PMs anzeigen
- XWEITERLEITEN User Weiterleitbare PM an "User" senden
- XWEITERLEITEN Artikel User Artikel Nummer "Artikel" an "User" senden
- END_OF_FILE
- if test 4720 -ne `wc -c <'etc/help.shorthelp'`; then
- echo shar: \"'etc/help.shorthelp'\" unpacked with wrong size!
- fi
- # end of 'etc/help.shorthelp'
- fi
- if test -f 'src/bled.doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/bled.doc'\"
- else
- echo shar: Extracting \"'src/bled.doc'\" \(1399 characters\)
- sed "s/^X//" >'src/bled.doc' <<'END_OF_FILE'
- X(B)LED ist ein zeilenorientierer Editor (Text-Erfassungssystem), der Texte
- Xbeliebiger Groesse verarbeiten kann.
- X
- XEr verwendet verschiedene Eingabemodi, die jeweils am Prefix vor der
- XZeilennummer zu identifizieren sind:
- X
- XL0000 Text-Zeile ... # Lese-Modus (".l" und ".L")
- XA0000 Text-Zeile ... # Anhaenge-Modus (".a")
- XI0000 Text-Zeile ... # Einfuge-Modus (".i")
- XK0000 Text-Zeile ... # Korrektur-Modus (".k");
- X
- XWird ein neuer Text erfasst, ist der Anhaenge-Modus aktiv. Mit dem
- XBefehl ".l" (bzw. ".L") kann man sich den bereits eingegeben Text
- Xanzeigen lassen.
- X
- XMuss eine Zeile korrigiert werden, wird mit dem Befehl ".k ZEILE" die
- Xentsprechende Zeile (ZEILE) nochmals angezeigt und kann ueberarbeitet
- Xwerden.
- X
- XSoll zwischen den bereits erfassten Zeilen neuer Text eingegeben werden,
- Xmuss mit ".i ZEILE" in den Einfuege-Modus gewechselt werden. Von nun
- Xan werden die Eingaben zwischen "ZEILE -1" und "ZEILE" eingefuegt. Die
- XNummerierung der auf "ZEILE" folgenden Zeilen wird automatisch angepasst.
- XDer Einfuege-Modus wird mit ".a" beendet. Danach ist der Anhaenge-Modus
- Xaktiv, und alle Eingaben werden ans Ende des Textes angehaengt.
- X
- XSollen Zeilen komplett entfernt werden, kommt der Befehl ".d" zum Einsatz.
- XWerden keine Zeilennummern angegeben, wird der gesamte Text geloescht !!!
- X
- XBeendet und gesichert wird die Eingabe mit "." !
- END_OF_FILE
- if test 1399 -ne `wc -c <'src/bled.doc'`; then
- echo shar: \"'src/bled.doc'\" unpacked with wrong size!
- fi
- # end of 'src/bled.doc'
- fi
- if test -f 'src/lesen2.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/lesen2.c'\"
- else
- echo shar: Extracting \"'src/lesen2.c'\" \(10254 characters\)
- sed "s/^X//" >'src/lesen2.c' <<'END_OF_FILE'
- X/***************************************************************************/
- X/* PROGRAMM ix/Mbox */
- X/* DATEI lesen2.c */
- X/* FUNKTIONEN anzeigen(), lesen2(), inhalt2(), loeschen2() */
- X/* AUTOR vs (Volker Schuermann/MINIX-Version) */
- X/* LETZTE AENDERUNG 20.11.1991 */
- X/***************************************************************************/
- X
- X#include <stdio.h>
- X
- X#include "mbox.h"
- X
- X
- Xextern char headinfo[STRING];
- X
- X/***************************************************************************/
- X/* FUNKTION anzeigen() */
- X/* BESCHREIBUNG Artikel selektieren und anzeigen. */
- X/* PARAMETER art = Artikel(-Nummer) */
- X/* von = Artikel-Nummer (Minimum) */
- X/* bis = Artikel-Nummer (Maximum) */
- X/* RUECKGABE siehe "show()" */
- X/***************************************************************************/
- X
- Xint anzeigen(art, von, bis)
- Xint art, von, bis;
- X{
- X char entry[STRING];
- X char s[STRING];
- X int mr;
- X int ok;
- X
- X
- X if (strcomp(BRETT, "PM") != 0) {
- X sprintf(entry, "%s/%d", BRETT, art);
- X }
- X else {
- X sprintf(entry, "%s/usr/%d/%d", HOME, USER.id, art);
- X }
- X
- X mr = 0;
- X if ((USER.more == 1) || (USER.more == 3)) mr = 2;
- X
- X sprintf(s, "%d", art);
- X
- X if (((art >= von) && (art <= bis)) ||
- X ((art >= bis) && (art <= von))) {
- X
- X ok = pruefe(s);
- X
- X if(ok == 0){
- X if(USER.more != 0){
- X sprintf(headinfo, " %s %d (%s) ", LE201_MSG, art, NG);
- X headline( headinfo );
- X }
- X else{
- X ansi("md");
- X printf("%s %d\n", LE202_MSG, art);
- X ansi("me");
- X }
- X show( "?", 99, 99 );
- X ok = show(entry, 9999, mr);
- X if(ok != -1){
- X if(USER.more != 0) more();
- X }
- X else return ok;
- X }
- X }
- X return ok;
- X}
- X
- X
- X
- X/***************************************************************************/
- X/* FUNKTION lesen2() */
- X/* BESCHREIBUNG Artikel selektieren (je nach Parameter) und anzeigen. */
- X/* PARAMETER arg = Selektions-Schluessel */
- X/* mode = DUMMY (!) */
- X/* RUECKGABE keine */
- X/***************************************************************************/
- X
- Xvoid lesen2(arg, mode)
- Xchar arg[];
- Xchar mode;
- X{
- X FILE *fp;
- X char ex[255];
- X char s[STRING];
- X char entry[STRING];
- X int a = 56, b = 63;
- X int i, d, e;
- X int von, bis;
- X int ALLE;
- X int PM = 0;
- X int art[MAX_PER_NG];
- X int artp;
- X int k, l;
- X int LR = 0;
- X
- X
- X i = 0;
- X k = -1;
- X l = -1;
- X while (arg[i] != '\0') {
- X if (arg[i] == '-') k = i;
- X if (arg[i] == '*') l = i;
- X i++;
- X }
- X
- X if ((arg[0] != '\0') && (k == -1) && (l == -1)) {
- X ansi("md");
- X printf(" %s\n", LE203_MSG);
- X ansi("me");
- X return;
- X }
- X
- X von = 1;
- X bis = 32000;
- X
- X if (l != -1) {
- X ALLE = 1;
- X }
- X if (k != -1) {
- X strcpy(s, (char *) strcopy(arg, 0, (k - 1)));
- X von = atoi(s);
- X strcpy(s, (char *) strcopy(arg, (k + 1), length(arg)));
- X bis = atoi(s);
- X
- X if (von == 0) von = 1;
- X if (bis == 0) bis = 32000;
- X ALLE = 1;
- X }
- X if ((k == -1) && (l == -1)) {
- X ALLE = 0;
- X }
- X if ((von == 1) && (bis == 32000)) LR++;
- X
- X if ((USER.leserichtung != 1) && (LR != 0)) {
- X i = von;
- X von = bis;
- X bis = i;
- X }
- X if (strcomp(BRETT, "PM") != 0) {
- X PM = 0;
- X }
- X else {
- X PM = 1;
- X }
- X
- X d = a + 10;
- X e = a + 14;
- X
- X maybe_locked(INHALT, "r");
- X fp = fopen(INHALT, "r");
- X if (fp == NULL) {
- X nerror("lesen2.c", 104, "lesen2", "Datei-Lesefehler", INHALT);
- X }
- X artp = -1;
- X
- X while (fgets(ex, 250, fp) != NULL) {
- X if (ALLE == 1) {
- X artp++;
- X art[artp] = atoi(ex);
- X }
- X else {
- X strcpy(s, (char *) strcopy(ex, a, b));
- X if (LASTLOG < dateconv(s)) {
- X artp++;
- X art[artp] = atoi(ex);
- X }
- X if (LASTLOG == dateconv(s)) {
- X strcpy(s, (char *) strcopy(ex, d, e));
- X if (LASTTIME <= timeconv(s)) {
- X artp++;
- X art[artp] = atoi(ex);
- X }
- X }
- X }
- X if(artp >= MAX_PER_NG){
- X nerror("lesen2.c", 188, "lesen2", "Zuviele", "Artikel");
- X }
- X }
- X fclose(fp);
- X
- X
- X
- X if (artp == -1) {
- X ansi("md");
- X printf(" %s", LE204_MSG);
- X ansi("me");
- X printf("\n");
- X return;
- X }
- X ansi("cl");
- X
- X if (strcomp(BRETT, "PM") != 0) {
- X i = von;
- X von = bis;
- X bis = i;
- X }
- X
- X show("?", 0, 99);
- X
- X if (von > bis) {
- X for (i = artp; i >= 0; i--) {
- X if (anzeigen(art[i], von, bis) == -1) return;
- X }
- X }
- X else {
- X for (i = 0; i <= artp; i++) {
- X if (anzeigen(art[i], von, bis) == -1) return;
- X }
- X }
- X
- X return;
- X}
- X
- X
- X
- X
- X/***************************************************************************/
- X/* FUNKTION inhalt2() */
- X/* BESCHREIBUNG Inhalt selektieren (je nach Parameter) und anzeigen. */
- X/* PARAMETER arg = Selektions-Schluessel */
- X/* mode = DUMMY (!) */
- X/* RUECKGABE keine */
- X/***************************************************************************/
- X
- Xvoid inhalt2(arg, mode)
- Xchar arg[];
- Xchar mode;
- X{
- X FILE *fp;
- X FILE *ff;
- X char ex[LONGSTRING];
- X char s[STRING];
- X char tmp[STRING];
- X int a = 56, b = 63;
- X int e, d, i;
- X int von, bis;
- X int k, l;
- X int plus, minus;
- X int PM;
- X int ALLE;
- X int LR = 0;
- X
- X
- X i = 0;
- X k = -1;
- X l = -1;
- X while (arg[i] != '\0') {
- X if (arg[i] == '-') k = i;
- X if (arg[i] == '*') l = i;
- X i++;
- X }
- X
- X von = 1;
- X bis = 32000;
- X
- X if ((arg[0] != '\0') && (k == -1) && (l == -1)) {
- X strcpy(s, (char *) strcopy(arg, 0, length(arg)));
- X von = atoi(s);
- X bis = von;
- X ALLE = 1;
- X }
- X
- X if (l != -1) {
- X ALLE = 1;
- X }
- X if (k != -1) {
- X strcpy(s, (char *) strcopy(arg, 0, (k - 1)));
- X von = atoi(s);
- X strcpy(s, (char *) strcopy(arg, (k + 1), length(arg)));
- X bis = atoi(s);
- X
- X if (von == 0) von = 1;
- X if (bis == 0) bis = 32000;
- X ALLE = 1;
- X }
- X
- X fp = fopen(INHALT, "r");
- X if (fp == NULL) {
- X brett( "~" );
- X return;
- X }
- X sprintf(tmp, "%s/I.%d", TMP, getpid());
- X ff = fopen(tmp, "w");
- X
- X sprintf(ex, " %s (%s) ", LE205_MSG, NG);
- X ex[80] = '\0';
- X headline(ex);
- X
- X fgets(ex, 250, fp); /* alte Ueberschrift ausblenden */
- X fgets(ex, 250, fp); /* dito */
- X
- X if(strcomp(PDNG, NG) == 0){
- X printf("%s\n", GBL08_MSG);
- X }
- X else{
- X printf("%s\n", GBL05_MSG);
- X }
- X printf("===============================================================================\n", ff);
- X
- X
- X PM = 1;
- X if (strcomp(BRETT, "PM") != 0) {
- X i = von;
- X von = bis;
- X bis = i;
- X PM = 0;
- X }
- X plus = 0;
- X minus = 0;
- X
- X d = a + 10;
- X e = a + 14;
- X
- X if (((von == 1) && (bis == 32000)) || ((von == 32000) && (bis == 1))) LR++;
- X
- X if ((USER.leserichtung != 1) && (LR != 0)) {
- X i = von;
- X von = bis;
- X bis = i;
- X }
- X if (von > bis) {
- X while (fgets(ex, 250, fp) != NULL) {
- X i = atoi(ex);
- X if(i != 0) minus++;
- X if (ALLE == 1) {
- X if ((i >= bis) && (i <= von)) {
- X fputs(ex, ff);
- X plus++;
- X }
- X } else {
- X strcpy(s, (char *) strcopy(ex, a, b));
- X if (LASTLOG < dateconv(s)) {
- X fputs(ex, ff);
- X plus++;
- X }
- X if (LASTLOG == dateconv(s)) {
- X strcpy(s, (char *) strcopy(ex, d, e));
- X if (LASTTIME <= timeconv(s)) {
- X fputs(ex, ff);
- X plus++;
- X }
- X }
- X }
- X }
- X fclose(ff);
- X
- X if (PM == 1)
- X sprintf(s, "sort -nr -o %s %s", tmp, tmp);
- X else
- X sprintf(s, "sort -n -o %s %s", tmp, tmp);
- X system(s);
- X }
- X else {
- X while (fgets(ex, 250, fp) != 0) {
- X i = atoi(ex);
- X if(i != 0) minus++;
- X if (ALLE == 1) {
- X if ((i >= von) && (i <= bis)) {
- X fputs(ex, ff);
- X plus++;
- X }
- X }
- X else {
- X strcpy(s, (char *) strcopy(ex, a, b));
- X if (LASTLOG < (long) dateconv(s)) {
- X fputs(ex, ff);
- X plus++;
- X }
- X if (LASTLOG == (long) dateconv(s)) {
- X strcpy(s, (char *) strcopy(ex, d, e));
- X if (LASTTIME <= (long) timeconv(s)) {
- X fputs(ex, ff);
- X plus++;
- X }
- X }
- X }
- X }
- X fclose(ff);
- X }
- X fclose(fp);
- X
- X if (plus != 0) show(tmp, 9999, USER.more + 100);
- X
- X unlink(tmp);
- X
- X if (plus == 0) {
- X ansi("md");
- X printf("%s", LE206_MSG);
- X ansi("me");
- X if ((minus - plus) > 0)
- X printf("\n%s %d %s", LE207_MSG, minus, LE208_MSG);
- X else
- X printf("\n%s", LE209_MSG);
- X }
- X else if ((plus < 19) || (plus > 21)) {
- X if ((minus - plus) > 0)
- X printf("\n%s %d %s", LE210_MSG, (minus - plus), LE211_MSG);
- X else
- X printf("\n%s", LE212_MSG);
- X }
- X printf("\n");
- X
- X return;
- X}
- X
- X
- X
- X/***************************************************************************/
- X/* FUNKTION loeschen2() */
- X/* BESCHREIBUNG Persoenliche Post selektieren (je nach Parameter) und */
- X/* loeschen. */
- X/* PARAMETER arg = Selektions-Schluessel */
- X/* mode = DUMMY (!) */
- X/* RUECKGABE keine */
- X/***************************************************************************/
- X
- Xvoid loeschen2(arg, mode)
- Xchar arg[];
- Xchar mode;
- X{
- X FILE *fp;
- X FILE *ff;
- X char ex[255];
- X char s[STRING];
- X char tmp[STRING];
- X int a, b, i;
- X int von, bis;
- X int k;
- X int plus;
- X int PM;
- X
- X
- X if(USER.level == GUEST_LEV){
- X return;
- X }
- X
- X i = 0;
- X k = -1;
- X while (arg[i] != '\0') {
- X if (arg[i] == '-') k = i;
- X i++;
- X }
- X
- X if ((arg[0] != '\0') && (k == -1)) {
- X ansi("md");
- X printf(" %s\n", LE213_MSG);
- X ansi("me");
- X return;
- X }
- X von = 1;
- X bis = 32000;
- X
- X if (k != -1) {
- X strcpy(s, (char *) strcopy(arg, 0, (k - 1)));
- X von = atoi(s);
- X strcpy(s, (char *) strcopy(arg, (k + 1), length(arg)));
- X bis = atoi(s);
- X
- X if (von == 0) von = 1;
- X if (bis == 0) bis = 32000;
- X }
- X if (strcomp(BRETT, "PM") != 0) {
- X a = 60;
- X b = 69;
- X } else {
- X a = 58;
- X b = 65;
- X }
- X
- X maybe_locked(INHALT, "r");
- X
- X sprintf(tmp, "%s/%d.l2", TMP, getpid());
- X sprintf(s, "cp %s %s > /dev/null", INHALT, tmp);
- X system(s);
- X
- X fp = fopen(tmp, "r");
- X if (fp == NULL) {
- X nerror("lesen2.c", 217, "loeschen2", "Datei-Lesefehler", tmp);
- X }
- X fgets(ex, 250, fp);
- X fgets(ex, 250, fp);
- X
- X PM = 1;
- X if (strcomp(BRETT, "PM") != 0) {
- X i = von;
- X von = bis;
- X bis = i;
- X PM = 0;
- X }
- X plus = 0;
- X
- X if (von > bis) {
- X while (fgets(ex, 250, fp) != NULL) {
- X i = atoi(ex);
- X if ((i >= bis) && (i <= von)) {
- X sprintf(s, "%d", i);
- X loeschen(s);
- X plus++;
- X }
- X }
- X }
- X else {
- X while (fgets(ex, 250, fp) != NULL) {
- X i = atoi(ex);
- X if ((i >= von) && (i <= bis)) {
- X sprintf(s, "%d", i);
- X loeschen(s);
- X plus++;
- X }
- X }
- X }
- X fclose(fp);
- X
- X if (plus == 0) {
- X ansi("md");
- X printf("%s\n", LE214_MSG);
- X ansi("me");
- X return;
- X }
- X
- X unlink(tmp);
- X
- X return;
- X}
- END_OF_FILE
- if test 10254 -ne `wc -c <'src/lesen2.c'`; then
- echo shar: \"'src/lesen2.c'\" unpacked with wrong size!
- fi
- # end of 'src/lesen2.c'
- fi
- if test -f 'src/misc2.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/misc2.c'\"
- else
- echo shar: Extracting \"'src/misc2.c'\" \(9043 characters\)
- sed "s/^X//" >'src/misc2.c' <<'END_OF_FILE'
- X/***************************************************************************/
- X/* PROGRAMM ix/Mbox */
- X/* DATEI misc2.c */
- X/* FUNKTIONEN chk_newsgrp(), subb(), loeschen(), brett() */
- X/* AUTOR vs (Volker Schuermann/MINIX-Version) */
- X/* LETZTE AENDERUNG 11.06.1992 */
- X/***************************************************************************/
- X
- X#include <stdio.h>
- X
- X#include "mbox.h"
- X
- X
- X
- X
- X
- X/***************************************************************************/
- X/* FUNKTION chk_newsgrp() */
- X/* BESCHREIBUNG Stellt fest, ob ein Benutzer die angefragt NG betreten */
- X/* darf. */
- X/* PARAMETER s = Name der fraglichen NG */
- X/* RUECKGABE -1 = Kein Zugang/Zugriff :-( */
- X/* 1 = Zugang erlaubt :-) */
- X/***************************************************************************/
- X
- Xint chk_newsgrp( s )
- Xchar s[];
- X{
- X int i = 1, ok = -1;
- X
- X while ((i < MAX_NEWSGRPS) && (newsgrp[i][0] != '\0') && (ok == -1)) {
- X if (strcomp(newsgrp[i], s) == 0) ok = 0;
- X if (strcomp(newsgrp[i], "all") == 0) ok = 0;
- X i++;
- X }
- X
- X return ok;
- X}
- X
- X
- X
- X
- X/***************************************************************************/
- X/* FUNKTION subb() */
- X/* BESCHREIBUNG Ist die angefragte NG eine Unter-NG, oder ein kompletter */
- X/* Pfad ?? */
- X/* PARAMETER s = Name der NG | */
- X/* RUECKGABE 0 = Unter-NG (z.B. minix) v */
- X/* n = Erste Obergruppe endet bei 'n' (comp.os.minix) */
- X/***************************************************************************/
- X
- Xint subb(s)
- Xchar s[];
- X{
- X int a = 0, i = 0;
- X
- X while (s[i] != '\0') {
- X if ((s[i] == '.') && (a == 0)) a = i;
- X i++;
- X }
- X return a;
- X}
- X
- X
- X
- X
- X/***************************************************************************/
- X/* FUNKTION loeschen() */
- X/* BESCHREIBUNG Gezielt einen persoenliche Mail loeschen. */
- X/* PARAMETER arg = Nummer der Mail */
- X/* RUECKGABE keine */
- X/***************************************************************************/
- X
- Xvoid loeschen(arg)
- Xchar arg[];
- X{
- X FILE *fp;
- X FILE *ff;
- X char s[STRING];
- X char entry[STRING];
- X char index[STRING];
- X char t[STRING];
- X char ex[255];
- X char c;
- X int i, a = atoi(arg);
- X int ok;
- X
- X
- X if ((arg[0] < '1') || (arg[0] > '9')) {
- X ansi("md");
- X printf(" %s\n", MI201_MSG);
- X ansi("me");
- X return;
- X }
- X if (strcomp(BRETT, "PM") != 0) {
- X if(arg[0] < 33) return;
- X if(USER.level < ADMIN_LEV){
- X ansi("md");
- X printf(" %s %d ...\n", MI202_MSG, USER.level);
- X ansi("me");
- X }
- X else{
- X sprintf(entry, "%s/%s", BRETT, arg);
- X unlink(entry);
- X printf("\n\n%s\n", MI203_MSG);
- X sprintf(entry, "%s %s -X", MB_DAEMON, NG);
- X system(entry);
- X }
- X return;
- X }
- X
- X if(USER.level == GUEST_LEV){
- X return;
- X }
- X
- X sprintf(entry, "%s/usr/%d/%s", HOME, USER.id, arg);
- X sprintf(index, "%s/usr/%d/INDEX", HOME, USER.id);
- X
- X sprintf(s, "%s/loe%d", TMP, getpid());
- X ff = fopen(s, "w");
- X
- X fp = fopen(index, "r");
- X if (fp == NULL) {
- X nerror("misc2.c", 109, "loeschen", "Datei-Lesefehler", index);
- X }
- X ok = 0;
- X
- X while (fgets(ex, 250, fp) != NULL) {
- X if (atoi(ex) != a)
- X fputs(ex, ff);
- X else
- X ok = 1;
- X }
- X fclose(fp);
- X fclose(ff);
- X
- X sprintf(t, "cp %s %s", s, index);
- X system(t);
- X unlink(s);
- X unlink(entry);
- X}
- X
- X
- X
- X/***************************************************************************/
- X/* FUNKTION brett() */
- X/* BESCHREIBUNG Wechselt das Brett, zeigt Bretter an etc. pp. */
- X/* PARAMETER arg = '!' = Brettername ausgeben */
- X/* arg = '' = aktuelle Bretter ausgeben */
- X/* arg = '*' = alle Bretter ausgeben */
- X/* arg = '#' = Gruppen ausgeben */
- X/* arg = '..' = eine Gruppe zurueck */
- X/* arg = '^' = ALLE (!) Bretter ausgeben */
- X/* arg = 'Brett' = ins Brett 'Brett' wechseln */
- X/* RUECKGABE keine */
- X/***************************************************************************/
- X
- X/*
- Xvoid brett(arg) Compiler Bug ????
- X*/
- Xbrett(arg)
- Xchar arg[];
- X{
- X FILE *fp;
- X FILE *ff;
- X char s[STRING];
- X char o[STRING];
- X int a, b, h;
- X char t[STRING];
- X char org[STRING];
- X char maybe[STRING];
- X int this;
- X int i, j;
- X int subboard = 0;
- X char c;
- X int plus = 0;
- X int zeile = 0;
- X int swing = 1;
- X int fpid;
- X
- X if (arg[0] == '!') {
- X printf("\n\n");
- X ansi( "md" );
- X printf("%s", MI204_MSG);
- X ansi( "me" );
- X printf(" %s\n", NG);
- X ansi( "md" );
- X printf("%s", MI204aMSG);
- X ansi( "me" );
- X printf(" ");
- X
- X if(strcomp(BRETT, "PM") == 0){
- X printf("%s", MI204bMSG);
- X }
- X else{
- X fp = fopen( NEWSGROUPS, "r" );
- X if(fp == NULL){
- X nerror("misc2.c", 190, "brett", "Datei-Lesefehler", NEWSGROUPS);
- X }
- X h = 0;
- X while((h == 0) && (fgets(s, 80, fp) != NULL)){
- X if(strcomp(NG, s) == 0){
- X a = 0;
- X while(s[a] > 32) a++;
- X while(s[a] < 32) a++;
- X strcpy(t, (char *) strcopy(s, a, 80));
- X printf("%s", (char *) stripped(t));
- X h++;
- X }
- X }
- X fclose(fp);
- X }
- X printf("\n");
- X return;
- X }
- X if ((arg[0] == '+') || (arg[0] == '-')) {
- X scanner(arg[0] + 255);
- X return;
- X }
- X if (arg[0] == '\0') {
- X maybe_locked(UGROUPS, "r");
- X fp = fopen(UGROUPS, "r");
- X if (fp == NULL) {
- X nerror("misc2.c", 908, "brett", "Datei-Lesefehler", UGROUPS);
- X }
- X arg[0] = '*';
- X }
- X else {
- X maybe_locked(NGROUPS, "r");
- X fp = fopen(NGROUPS, "r");
- X if (fp == NULL) {
- X nerror("misc2.c", 916, "brett", "Datei-Lesefehler", NGROUPS);
- X }
- X }
- X
- X
- X org[0] = '\0';
- X strcat(org, arg);
- X
- X if (arg[0] == '.') {
- X i = 0;
- X j = 0;
- X strcpy(org, NG);
- X while (org[i] != '\0') {
- X if (org[i] == '.') j = i;
- X i++;
- X }
- X if (j == 0) return;
- X org[j] = '\0';
- X }
- X if (arg[0] == '#') subboard++;
- X
- X zeile = 0;
- X
- X show(NGROUPS, 99, 99); /* RESET */
- X
- X if ((arg[0] == '*') || (arg[0] == '+') || (arg[0] == '#') || (arg[0] == '~') || (arg[0] == '^')) {
- X
- X if(arg[0] != '^'){
- X sprintf(s, "%s %d) ", MI205_MSG, USER.level);
- X }
- X else{
- X sprintf(s, "%s 10) ", MI205_MSG);
- X }
- X headline(s);
- X i = 0;
- X strcpy(o, (char *) "OOPS");
- X
- X while (fscanf(fp, "%s %d %d %s", s, &a, &h, t) > 0) {
- X#ifdef _CNEWS
- X if(t[0] == '=')
- X continue;
- X#endif
- X if (arg[0] == '~') {
- X if (strcomp(NG, s) != 0) continue;
- X }
- X if ((strcomp(o, s) != 0) || (subboard == 0)) {
- X if (subboard != 0) {
- X j = subb(s);
- X if (j != 0) s[j] = '\0';
- X o[0] = '\0'; strcat(o, s);
- X }
- X if ((chk_newsgrp(s) == 0) || (arg[0] == '^')){
- X s[((80/USER.schluessel[1]) -2)] = '\0';
- X strcat(s, " ");
- X s[((80/USER.schluessel[1]) -1)] = '\0';
- X printf("%s", s);
- X i++;
- X plus++;
- X if (i == USER.schluessel[1]) {
- X printf("\n");
- X i = 0;
- X zeile++;
- X if (zeile >= MAX_SCR_LINES) {
- X zeile = 0;
- X if(USER.more != 0){
- X if (more() != 0) return (int) 1;
- X }
- X }
- X }
- X }
- X }
- X }
- X if (plus == 0) {
- X printf("%s", MI206_MSG);
- X }
- X printf("\n");
- X }
- X else {
- X if (org[0] != '\0') {
- X
- X SO_WHAT:
- X
- X strcpy(o, (char *) org);
- X
- X i = 0;
- X while (org[i] != '\0') {
- X t[i] = org[i];
- X if (t[i] == '.') t[i] = '/';
- X i++;
- X }
- X t[i] = '\0';
- X
- X sprintf(s, "%s/%s", NEWS, t);
- X
- X if (chdir(s) != 0) {
- X sprintf(o, "%s.%s", NG, org);
- X i = 0;
- X while (o[i] != '\0') {
- X t[i] = o[i];
- X if (t[i] == '.') t[i] = '/';
- X i++;
- X }
- X t[i] = '\0';
- X sprintf(s, "%s/%s", NEWS, t);
- X }
- X if (chdir(s) != 0) {
- X this = 9999;
- X maybe_locked(NGROUPS, "r");
- X ff = fopen(NGROUPS, "r");
- X if (ff == NULL) {
- X nerror("misc2.c", 1001, "brett", "Datei-Lesefehler", NGROUPS);
- X }
- X while (fscanf(ff, "%s %d %d %s", s, &i, &i, t) > 0) {
- X i = strcomp(org, s);
- X if (i < this) {
- X this = i;
- X strcpy(maybe, s);
- X }
- X }
- X fclose(ff);
- X
- X strcpy(org, maybe);
- X printf("\n\n");
- X ansi("mr");
- X printf("%s \"%s\" [%c, %c] >", MI207_MSG, maybe, GBL06_MSG, GBL07_MSG);
- X ansi("me");
- X
- X c = yesno();
- X
- X if (c != GBL07_MSG) goto SO_WHAT;
- X
- X printf("\n");
- X }
- X else {
- X
- X if (chk_newsgrp(o) == 0) {
- X strcpy(BRETT, s);
- X printf("\n");
- X sprintf(NG, "%s", o);
- X if(length(o) > 14){
- X#ifndef _LONGNAMES
- X strcpy(o, (char *) shortname(o));
- X#endif
- X }
- X#ifdef _NOINDEX
- X printf("\n%s ..", MI211_MSG);
- X switch( (fpid = fork()) ){
- X case -1 :
- X break;
- X case 0 : while(1){
- X printf(".");
- X sleep(1);
- X }
- X break;
- X }
- X sprintf(s, "%s %s -x", MB_DAEMON, NG);
- X system( s );
- X sprintf(s, "mv %s/%s/%s %s/inhalt.%d", HOME, LIB, o, TMP, getpid());
- X system( s );
- X sprintf(INHALT, "%s/inhalt.%d", TMP, getpid());
- X kill( fpid, SIGKILL );
- X wait( fpid );
- X printf("\n");
- X#else
- X sprintf(INHALT, "%s/%s", LIB, o);
- X#endif
- X } else {
- X ansi("md");
- X printf(" %s\n", MI210_MSG);
- X ansi("me");
- X }
- X }
- X chdir(HOME);
- X }
- X }
- X fclose(fp);
- X return;
- X}
- X
- END_OF_FILE
- if test 9043 -ne `wc -c <'src/misc2.c'`; then
- echo shar: \"'src/misc2.c'\" unpacked with wrong size!
- fi
- # end of 'src/misc2.c'
- fi
- echo shar: End of archive 8 \(of 11\).
- cp /dev/null ark8isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 11 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
-