home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-05-29 | 5.3 KB | 104 lines |
- DEFINITION MODULE POSIX2;
- __DEF_SWITCHES__
- #ifdef HM2
- #ifdef __LONG_WHOLE__
- (*$!i+: Modul muss mit $i- uebersetzt werden! *)
- (*$!w+: Modul muss mit $w- uebersetzt werden! *)
- #else
- (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
- (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
- #endif
- #endif
- (*****************************************************************************)
- (* POSIX.2-Funktionen *)
- (* --------------------------------------------------------------------------*)
- (* 29-Mai-94, Holger Kleinschmidt *)
- (*****************************************************************************)
-
- FROM types IMPORT
- (* TYPE *) int;
-
- (*========================= "fnmatch()" =====================================*)
-
- CONST
- FNMNoMatch = 1;
-
- TYPE
- FNMFlag = (
- FNMPathname, (* Wildcards ('*', '?') und Mengen ('[...]') ``matchen''
- * nicht ueber Verzeichnisgrenzen ('/') hinweg -> (Datei)Namen
- * werden durch '/.../' begrenzt.
- *)
- FNMPeriod, (* Wildcards ('*', '?') und Mengen ('[...]') ``matchen''
- * kein fuehrendes '.' bei (Datei)Namen.
- *)
- FNMNoEscape (* Das Zeichen 'ESCAPECHAR' hebt nicht die Spezialbedeutung
- * von '*', '?', '[', ']' (und ESCAPECHAR) auf.
- *)
- );
-
- FNMFlags = PACKEDSET OF FNMFlag;
-
- (* nicht POSIX: *)
- CONST
- ESCAPECHAR = 134C;
- INVERTCHAR = '!';
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
- PROCEDURE fnmatch ((* EIN/ -- *) REF str : ARRAY OF CHAR;
- (* EIN/ -- *) REF pat : ARRAY OF CHAR;
- (* EIN/ -- *) flags : FNMFlags ): int;
-
- (*-------------------------------------------------------------------------
- | Testet, ob das Muster <pat> auf den String <str> passt (0 = passt). |
- | Die folgenden Zeichen haben im Muster eine Spezialbedeutung: |
- | |
- | '*': steht fuer beliebig viele (auch Null) Zeichen |
- | '?': steht fuer genau ein beliebiges Zeichen |
- | '[': Leitet eine Mengendefinition ein, d.h das korrespondierende|
- | Zeichen im String muss ein Zeichen aus dieser Menge sein. |
- | '-': Innerhalb einer Mengendefinition wird ein Bereich durch das|
- | unmittelbar davor und unmittelbar dahinter stehende Zeichen|
- | gebildet. Das korrespondierende Zeichen kann innerhalb und |
- | einschliesslich der Grenzen liegen. |
- | Als erstes oder letztes Element einer Menge steht es fuer |
- | sich selbst. |
- | ']': Beendet die Definition einer Menge; als erstes Element |
- | einer Menge oder ohne ein vorausgehendes, noch nicht abge- |
- | schlossenes '[', steht es fuer sich selbst. |
- | INVERTCHAR : Als erstes Zeichen einer Mengendefinition bedeutet es, dass|
- | das korrespondierende Zeichen im String KEIN Zeichen aus |
- | dieser Menge sein darf. |
- | ESCAPECHAR : Hebt die Sonderfunktion der obigen Zeichen und auch von |
- | sich selbst auf; die uebrigen Zeichen werden nicht beein- |
- | flusst. |
- | |
- | Mit <flags> kann die Interpretation der obigen Spezialzeichen beein- |
- | flusst werden (siehe Definition von 'FNMFlag'). |
- -------------------------------------------------------------------------*)
-
-
- PROCEDURE system ((* EIN/ -- *) REF cmd : ARRAY OF CHAR ): int;
-
- (*-------------------------------------------------------------------------
- | Es wird ein Unterprozess erzeugt, der <cmd> als Kommando an einen |
- | Kommandointerpreter uebergibt; Die Prozedur kehrt erst zurueck, wenn |
- | das Kommando beendet oder ein Fehler aufgetreten ist. Waehrend des |
- | Wartens auf die Beendigung des Unterprozesses, werden die Signale |
- | SIGINT und SIGQUIT ignoriert und das Signal SIGCHLD blockiert. |
- | |
- | GEMDOS/MiNT: Es wird nicht versucht, einen Kommandointerpreter ueber |
- | die Systemvariable _shell_p aufzurufen, da das zu unsicher |
- | ist, stattdessen wird der Name (moeglichst mit Pfad) eines |
- | Kommandointerpreters in der Environmentvariablen SHELL |
- | erwartet. Existiert SHELL nicht, wird versucht '/bin/sh' |
- | oder '/bin/sh.ttp' aufzurufen. Der Kommandointerpreter wird|
- | auf folgende Weise aufgerufen: <shell> -c <cmd>. |
- | Zuerst wird versucht, einen Unterprozess mit "fork()" + |
- | "exec()" zu erzeugen; funktioniert "fork()" nicht, erfolgt |
- | der Aufruf ueber "spawn()". |
- -------------------------------------------------------------------------*)
-
- END POSIX2.
-