home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / EFFO / forum5.lzh / BRIEFE / brief.bethmann next >
Text File  |  1988-06-07  |  9KB  |  202 lines

  1. Konrad Bethmann         bbs-nickname konrad                   Berlin, 25.04.88
  2. Tellstr. 3
  3. 1000 Berlin 44
  4. Tel.: 030 / 623 55 90
  5.  
  6.  
  7. Liebe Forumsteilnehmer,
  8.  
  9.  
  10. von mir kein Programmbeitrag, sondern nur etwas zu 'arc', Fragen und Tips:
  11.  
  12. << Wer hat die Sourcen zu arc? Bitte passe den Code an und schicke den >>
  13. << Code an das Forum ein !ArW >>
  14.  
  15. 'arc' (forum 3 und brief.niesen, brief.tutzauer von forum 4):
  16.  
  17.     Abweichend von der arc.doc, die wohl fuer IBM-PC geschrieben wurde,
  18.     muss bei OS-9 der 'arc command letter' als Option, also mit
  19.     vorangestelltem '-' eingegeben werden. Beispiel:
  20.  
  21.         arc  a my test.dat      funktioniert nicht;
  22.         arc -a my test.dat      funktioniert, falls das file test.dat
  23.                                 existiert.
  24. << ist nicht mehr notwendig, es kann "-a" als auch "a" gesagt werden !ArW >>
  25.  
  26.     Wildcards beim 'extract' funktionieren, wennn sie in '"' stehen.
  27.     Beispiel:
  28.     
  29.         arc -x junk  *.txt   *.doc      funktioniert nicht;
  30.         arc -x junk "*.txt" "*.doc"     funktioniert.
  31.     
  32.     Das liegt daran, das Wildcards schon von der shell interpretiert
  33.     werden. Die aufgerufenen Prozesse bekommen dann von der shell
  34.     immer schon eine 'fertige' Liste von Filenamen. Diese Liste erzeugt
  35.     die shell aus allen Filenamen, die in der jeweiligen Directory zu den
  36.     angegebenen Wildcards passen (zu sehen z.B. mit 'echo *').
  37.     Bei 'arc' sind normalerweise die Namen, die extrahiert werden
  38.     sollen, in der Directory noch nicht vorhanden;
  39.     Daher koennen sie auch nicht in die Liste aufgenommen werden.
  40.     Die Wildcards in double quotes (Gaensefuesschen) werden hingegen erst
  41.     von 'arc' bearbeitet.
  42.     
  43.     Auch bei mir wird bei 'extract' das File-Datum falsch eingetragen.
  44.     Allerdings nicht um 4 Jahre zu frueh, sondern um 80 Jahre zu frueh.
  45.     Es wird einfach die Zehnerstelle der Jahreszahl auf Null gesetzt.
  46.     Das ist insbesondere fuer files, die von 'make' bearbeitet werden
  47.     sollen, sehr stoerend.
  48. << Das Datum wird jetzt korrekt eingesetzt.  !ArW >>
  49.  
  50.     Ein weiterer kleiner Fehler von 'arc' ist mir aufgefallen:
  51.     Falls ein File der Laenge 0 archiviert wird, stuerzt 'arc -v'
  52.     (verbose listing des Inhalts) mit diesem Archiv ab. Um den
  53.     Compressionsfaktor auszurechnen macht arc wohl eine Nulldivision.
  54. << Leider besteht dieses Fehlverhalten immer noch. !ArW >>
  55.  
  56.  
  57. Fragen:
  58.  
  59.     Woran liegt es, dass nur manche Programme in /pipe files erzeugen
  60.     koennen, die laenger als 90 byte sind? Insbesondere kann ein nach
  61.     /pipe/.. umgelenkter standard output immer nur 90 byte schreiben.
  62.     Es wird erst dann weitergeschrieben, wenn ein anderer Prozess dieses
  63.     pipe file liest.
  64.     Hingegen schreiben z.B. 'save shell em -f=/pipe/test' oder
  65.     'copy * -w=/pipe' beliebig lange files nach /pipe. Wie kann man in
  66.     C-Programmen, die files nach /pipe schreiben sollen, diese Faehigkeit
  67.     von copy oder save erreichen.
  68.  
  69. <<Die pipe muss explizit vom Programm groesser eroeffnet werden, die>>
  70. <<genauen Parameter kommen von Lukas !ArW>>
  71.  
  72. <<Die 90 Bytes sind die "default length" des Pipe Buffers. Wenn ein File
  73.   mit I$Create eroeffnet wird, besteht die Moeglichkeit, eine sogenannte
  74.   "initial allocation size" anzugeben, damit das File moeglichst an einem
  75.   Stueck angelegt wird (was von save und copy sinnvollerweise getan wird).
  76.   Bei Pipes verwendet nun OS9 diesen Parameter als Groesse fuer den Buffer.
  77.   Wie das in C geht, kann ich im Moment nicht sagen (noch kaum C-Erfahrung,
  78.   und Manual im Moment ausgeliehen !LZ>>
  79.  
  80.     Wie kann man Module, die man als ein File zusammen geladen hatte,
  81.     aus dem Speicher entfernen? Beispiel:
  82.  
  83.         merge program1 program2 >/programs
  84.         load -d programs
  85.         unlink program2
  86.  
  87.     Danach ist program2 immer noch im Speicher.
  88.     In manchen Faellen scheint ein 2-faches unlink auf das erste Modul
  89.     des files alle Module, die das file enthielt, zu loeschen. Das
  90.     funktioniert bei mir aber nicht bei den vielen Modulen, die ich beim
  91.     booten als ein file lade.
  92.  
  93. <<Wenn man ein File ladet, das mehere Module enthaelt, so wird NUR DAS ERSTE
  94.   Modul davon gelinkt (program1 im Beispiel), die anderen (program2) bleiben
  95.   zwar vorlaeufig im Speicher, fliegen jedoch bei der naechsten Ueberpruefung
  96.   raus (ihr link count ist ja schliesslich 0). So ist das Verschwinden "in
  97.   manchen Faellen" zu erklaeren. Auf jeden Fall kann so ein Modul durch
  98.   einmliges Unlink entfernt werden. Etwas anders ist es mit Modulen, die
  99.   gebootet werden (also die, die im OS9Boot File sind): Die kann man naemlich
  100.   UBERHAUPT NICHT mehr entfernen, auch mit 1000mal Unlink nicht. !LZ>>
  101.  
  102.     Gibt es eine Moeglichkeit, bei files, die keine Module sind, die
  103.     group/user id zu aendern? Fixmod funktioniert nur bei Modulen.
  104. <<So ein Utility koennte naechstens auf einer Forums-Disk auftauchen>>
  105.  
  106. Tips:
  107.  
  108.     Auf den kompletten physikalische Inhalt einer Diskette hat man als
  109.     Superuser durch Anhaengen eines '@' an den Device-Namen Lesezugriff.
  110.     Beispiel: "dump /r0@" oder "count -b /dd@". Leider ist mir Schreiben
  111.     so nicht gelungen (Sonst waehre z.B. backup durch "copy /d0@ /d1@"
  112.     moeglich).
  113.  
  114.     Um bei Utilities, die z.B. den Inhalt einer Diskette stark veraendern,
  115.     einen Schutz vor versehentlichem Aufruf zu haben, kann man den
  116.     Namen der Diskette (der beim formatieren eingegeben werden kann), als
  117.     Kriterium fuer das Ausfuehren dieser Utility benutzen.
  118.     Folgendes Procedurefile fuehrt den Namen der Diskette in /d0 als
  119.     Kommando aus:
  120.  
  121.     * chd nach /d0; Namen der Diskette in /d0 als Kommando ausfuehren
  122.     chd /d0
  123.     free ! grep "\22" ! tr "\22" "\n" ! grep -v "created on" ! shell
  124.  
  125.     Dieser Name kann dann natuerlich selbst der eines Procedurefiles sein.
  126.     Zum Sichern der kompletten Ramdisk kann man z.B. folgendes Procedurefile
  127.     verwenden:
  128.  
  129.     (echo -r "chd /r0; fsave -b128 -m/r0/backupdates -pvd="; pd) ! shell -np
  130.  
  131.     Wenn man z.B. das erste Procedurefile "execute_d0" und das zweite
  132.     "save_ramdisk" nennt, reicht es, eine Diskette, die beim Formatieren
  133.     "save_ramdisk" genannt wurde, in das erste Laufwerk zu schieben, und
  134.     "execute_d0" aufzurufen. Wenn ein entsprechendes "execute_d1" (am Anfang
  135.     chd /d1  anstatt  chd /d0) (und ein zweites Laufwerk) existieren, kann
  136.     man mit DER SELBEN Diskette in /d1 durch "execute_d1" das Gleiche erreichen.
  137.  
  138.     Arbeitet man normalerweise nicht als Superuser, moechte aber trotzdem
  139.     mit dieser Methode privilegierte Programme (wie z.b. fsave) ausfuehren,
  140.     kann man "execute_d1" folgendermassen erweitern:
  141.  
  142.     login superuser, topsecret
  143.     .... wie oben ....
  144.     logout
  145.  
  146.     (Bei einer Zeile
  147.         superuser, topsecret, 0.0, /DD/CMDS, /DD, shell -np
  148.      oder so aehnlich in /DD/SYS/password)
  149.  
  150.     Fuer "execute_d0" geht das nur, wenn man, wie von Michael Baehr in
  151.     brief.bethmann in Forum 2 beschrieben, die Ramdisk zur boot-disk
  152.     (auf der login nach SYS/password sucht) gemacht hat.
  153.  
  154.     Ein anderes Beispiel: man hat viele wichtige Programme, die man
  155.     gerne zusammen (schnell) laden moechte in ein File loadstuff auf einer
  156.     Diskette mit dem Namen "load_the_stuff" ge-'merge't. Hat man nun ein
  157.     Procedurefile "load_the_stuff":
  158.  
  159.         load -d loadstuff
  160.  
  161.     geschrieben, reicht:
  162.         einschieben der Diskette in /d1;
  163.         execute_d1      aufrufen
  164.     - fertig.
  165.  
  166.     Um uebrigens die oben beschriebene "save_ramdisk" Diskette beim
  167.     booten wieder zum kompletten Wiederherstellen der Ramdisk zu benutzen
  168.     muss man sie in /d1 einlegen, und im startup-file nach dem Initialisieren
  169.     der Ramdisk die Zeile:
  170.  
  171.         echo ! frestore -b=128 -d=/d1 -s /r0
  172.  
  173.     unterbringen. (Das echo ist noetig, weil frestore ein Return erwartet
  174.     als Antwort auf die Frage, ob das erste Volume ge-'mount'et ist.)
  175.  
  176.     Hier noch ein Hinweis, wie man bei Ausfuehren eines
  177.     Procedurefiles "tmode nopause" setzen, und nachher den vorherigen
  178.     Zustand wieder herstellen kann, unabhaengig davon, ob der "pause"
  179.     oder "nopause" war:
  180.  
  181.     (echo -r "tmode -w2 "; tmode -w2 ! tr " " "\n" ! grep pause) >-/pipe/tmode
  182.     tmode -w2 nopause
  183.     .... eigentliches Procedurefile ....
  184.     /pipe/tmode
  185.  
  186.  
  187.     Zum Schluss moechte ich noch denjenigen, die aus Deutschland ueber
  188.     Acustickoppler (oder Modem ?!) bei bbs in Zuerich (s.  Forum 4)
  189.     regelmaessig mitmachen wollen, raten, bei der Post eine DATEX-P
  190.     Teilnahmeberechtigung (NUI) zu beantragen, sofern sie noch keine haben.
  191.     Bei regelmaessiger Benutzung ist das wohl sehr viel billiger als
  192.     Auslandsferngespraeche.  Information gibt es in Fachzeitschriften,
  193.     Buechern zum Thema Datenfernuebertragung (DFUE), oder im Telefonladen
  194.     der Post. 
  195.  
  196. <<Fuer alle Schweizer: ruft den Telepac-Eingang an zum Ortstarif, von dort>>
  197. <<kommt Ihr auf Kosten der ETH in das KomETH zum OS9-BBS, vom KomETH ist es>>
  198. <<auch moeglich OS9-EFFO zu erreichen. !ArW>>
  199.  
  200.  
  201. soviel fuer heute, Konrad.
  202.