home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / m2posx14 / src / posix2.dpp < prev    next >
Encoding:
Modula Definition  |  1994-05-29  |  5.3 KB  |  104 lines

  1. DEFINITION MODULE POSIX2;
  2. __DEF_SWITCHES__
  3. #ifdef HM2
  4. #ifdef __LONG_WHOLE__
  5. (*$!i+: Modul muss mit $i- uebersetzt werden! *)
  6. (*$!w+: Modul muss mit $w- uebersetzt werden! *)
  7. #else
  8. (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
  9. (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
  10. #endif
  11. #endif
  12. (*****************************************************************************)
  13. (* POSIX.2-Funktionen                                                        *)
  14. (* --------------------------------------------------------------------------*)
  15. (* 29-Mai-94, Holger Kleinschmidt                                            *)
  16. (*****************************************************************************)
  17.  
  18. FROM types IMPORT
  19. (* TYPE *) int;
  20.  
  21. (*========================= "fnmatch()" =====================================*)
  22.  
  23. CONST
  24.   FNMNoMatch = 1;
  25.  
  26. TYPE
  27.   FNMFlag = (
  28.     FNMPathname, (* Wildcards ('*', '?') und Mengen ('[...]') ``matchen''
  29.                   * nicht ueber Verzeichnisgrenzen ('/') hinweg -> (Datei)Namen
  30.                   * werden durch '/.../' begrenzt.
  31.                   *)
  32.     FNMPeriod,   (* Wildcards ('*', '?') und Mengen ('[...]') ``matchen''
  33.                   * kein fuehrendes '.' bei (Datei)Namen.
  34.                   *)
  35.     FNMNoEscape  (* Das Zeichen 'ESCAPECHAR' hebt nicht die Spezialbedeutung
  36.                   * von '*', '?', '[', ']' (und ESCAPECHAR) auf.
  37.                   *)
  38.   );
  39.  
  40.   FNMFlags = PACKEDSET OF FNMFlag;
  41.  
  42. (* nicht POSIX: *)
  43. CONST
  44.   ESCAPECHAR = 134C;
  45.   INVERTCHAR = '!';
  46.  
  47. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  48.  
  49.  PROCEDURE fnmatch ((* EIN/ -- *) REF str   : ARRAY OF CHAR;
  50.                     (* EIN/ -- *) REF pat   : ARRAY OF CHAR;
  51.                     (* EIN/ -- *)     flags : FNMFlags      ): int;
  52.  
  53. (*-------------------------------------------------------------------------
  54.  | Testet, ob das Muster <pat> auf den String <str> passt (0 = passt).     |
  55.  | Die folgenden Zeichen haben im Muster eine Spezialbedeutung:            |
  56.  |                                                                         |
  57.  |         '*': steht fuer beliebig viele (auch Null) Zeichen              |
  58.  |         '?': steht fuer genau ein beliebiges Zeichen                    |
  59.  |         '[': Leitet eine Mengendefinition ein, d.h das korrespondierende|
  60.  |              Zeichen im String muss ein Zeichen aus dieser Menge sein.  |
  61.  |         '-': Innerhalb einer Mengendefinition wird ein Bereich durch das|
  62.  |              unmittelbar davor und unmittelbar dahinter stehende Zeichen|
  63.  |              gebildet. Das korrespondierende Zeichen kann innerhalb und |
  64.  |              einschliesslich der Grenzen liegen.                        |
  65.  |              Als erstes oder letztes Element einer Menge steht es fuer  |
  66.  |              sich selbst.                                               |
  67.  |         ']': Beendet die Definition einer Menge; als erstes Element     |
  68.  |              einer Menge oder ohne ein vorausgehendes, noch nicht abge- |
  69.  |              schlossenes '[', steht es fuer sich selbst.                |
  70.  | INVERTCHAR : Als erstes Zeichen einer Mengendefinition bedeutet es, dass|
  71.  |              das korrespondierende Zeichen im String KEIN Zeichen aus   |
  72.  |              dieser Menge sein darf.                                    |
  73.  | ESCAPECHAR : Hebt die Sonderfunktion der obigen Zeichen und auch von    |
  74.  |              sich selbst auf; die uebrigen Zeichen werden nicht beein-  |
  75.  |              flusst.                                                    |
  76.  |                                                                         |
  77.  | Mit <flags> kann die Interpretation der obigen Spezialzeichen beein-    |
  78.  | flusst werden (siehe Definition von 'FNMFlag').                         |
  79.   -------------------------------------------------------------------------*)
  80.  
  81.  
  82.  PROCEDURE system ((* EIN/ -- *) REF cmd : ARRAY OF CHAR ): int;
  83.  
  84. (*-------------------------------------------------------------------------
  85.  | Es wird ein Unterprozess erzeugt, der <cmd> als Kommando an einen       |
  86.  | Kommandointerpreter uebergibt; Die Prozedur kehrt erst zurueck, wenn    |
  87.  | das Kommando beendet oder ein Fehler aufgetreten ist. Waehrend des      |
  88.  | Wartens auf die Beendigung des Unterprozesses, werden die Signale       |
  89.  | SIGINT und SIGQUIT ignoriert und das Signal SIGCHLD blockiert.          |
  90.  |                                                                         |
  91.  | GEMDOS/MiNT: Es wird nicht versucht, einen Kommandointerpreter ueber    |
  92.  |              die Systemvariable _shell_p aufzurufen, da das zu unsicher |
  93.  |              ist, stattdessen wird der Name (moeglichst mit Pfad) eines |
  94.  |              Kommandointerpreters in der Environmentvariablen SHELL     |
  95.  |              erwartet. Existiert SHELL nicht, wird versucht '/bin/sh'   |
  96.  |              oder '/bin/sh.ttp' aufzurufen. Der Kommandointerpreter wird|
  97.  |              auf folgende Weise aufgerufen: <shell> -c <cmd>.           |
  98.  |              Zuerst wird versucht, einen Unterprozess mit "fork()" +    |
  99.  |              "exec()" zu erzeugen; funktioniert "fork()" nicht, erfolgt |
  100.  |              der Aufruf ueber "spawn()".                                |
  101.   -------------------------------------------------------------------------*)
  102.  
  103. END POSIX2.
  104.