blob: d0bdf5a883546472179a10ec208296ee029045c9 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 #include <files.h>
3
Zesstrad59c3892019-11-28 20:53:39 +01004 mixed * get_dir(string str)
5 mixed * get_dir(string str, int mask)
MG Mud User88f12472016-06-24 23:31:02 +02006
7BESCHREIBUNG
8 Benoetigt einen Pfad als erstes Argument und liefert ein Feld
9 (Array) mit Dateinamen bzw. Eigenschaften der gefundenen Dateien im
10 angegebenen Verzeichnis.
11
12 Liefert 0 zurueck, wenn es das Verzeichnis, in dem gesucht werden
13 soll, nicht gibt.
14
15 Der Dateinamen-Teil des Pfades darf "*" und "?" als Platzhalter
16 enthalten: jeder "*" steht fuer eine beliebige Anzahl Zeichen (oder
17 sich selber), "?" fuer ein beliebiges Zeichen. Entsprechend liefert
18 get_dir("/pfad/*") ein alphabetisch sortiertes Feld aller Dateien
19 im Verzeichnis "/pfad" oder ({ "/pfad/*" }), wenn es diese Datei
20 geben sollte.
21
22 Gibt man den Pfad eines Verzeichnisses mit abschliessendem "/" oder
23 "/." an (z. B. get_dir("/pfad/.")), so erhaelt man den Inhalt des
24 Verzeichnisses. Um Informationen ueber das Verzeichnis selber zu
25 erhalten, muss man den Pfad des Verzeichnisses angeben.
26
27 Das optionale zweite Argument ist eine Bitmaske, mit der man
28 angeben kann, welche Informationen man ueber die angegebenen
29 Dateien erhalten moechte.
30
31 GETDIR_EMPTY (0x00) get_dir() liefert ein leeres Feld (nicht
32 wirklich sinnvoll)
33 GETDIR_NAMES (0x01) liefert die alphabetisch sortierten
34 Dateinamen.
35 GETDIR_SIZES (0x02) liefert die unsortierten Dateigroessen
36 (file_size()), Verzeichnisse haben die
37 Dateigroesse FSIZE_DIR (-2).
38 GETDIR_DATES (0x04) liefert die unsortierten Zeiten der jeweils
39 letzten Aenderung in Sekunden seit dem
40 01.01.1970.
41 GETDIR_ACCESS (0x40) liefert die unsortierten Zeiten des jeweils
42 letzten Zugriffes in Sekunden seit dem
43 01.01.1970.
44 GETDIR_MODES (0x80) liefert die Filemode-Maske
45
46 GETDIR_ALL (0xDF) Liefert all Werte zurueck.
47
48 GETDIR_PATH (0x10) Dateinamen werden als volle Pfade geliefert.
49 (ein ev. fehlendes GETDIR_NAMES wird als
50 vorhanden angenommen).
51 GETDIR_UNSORTED (0x20) Das Ergebnis wird nicht sortiert.
52
53 Wichtig: Man muss GETDIR_NAMES|GETDIR_UNSORTED verwenden, wenn man
54 die Eintraege in der selben Reihenfolge wie bei GETDIR_SIZES und
55 GETDIR_DATES haben moechte.
56
57 Die Eintraege in der Bitmaske koennen miteinander kombiniert
58 werden.
59
Zesstrad59c3892019-11-28 20:53:39 +010060ANMERKUNGEN
61 Der als Argument angegebene Pfad wird vor Benutzung von valid_read()
62 im Master der Mudlib verarbeitet. Hierbei kann die Mudlib eine
63 Normalisierung vornehmen (z.B. fuehrende und endstaendige "/"
64 entfernen). Dann fuehrt dann u.U. zu erwarteten Resultaten (z.B. dass
65 get_dir("/dir/", ...) nicht den Inhalt von /dir/ zurueckgibt).
66 Compat mode: GETDIR_PATH liefert die Pfade ohne fuehrenden /.
67
MG Mud User88f12472016-06-24 23:31:02 +020068BEISPIELE
69 Funktion Rueckgabewert
70 -------------------------------------------------------------------
71 get_dir("/obj/.") Alle Dateien, die im Verzeichnis
72 /obj enthalten sind.
73 get_dir("/obj/") Wie get_dir("/obj/").
74
Zesstrad59c3892019-11-28 20:53:39 +010075 get_dir("/obj/schwert.c") ({ "schwert.c" }), sofern
76 /obj/schwert.c existiert (als
MG Mud User88f12472016-06-24 23:31:02 +020077 Datei oder Verzeichnis), ansonsten
78 ({}), sofern /obj ein Verzeichnis
79 ist, ansonsten 0.
80
81 get_dir("/obj/*") ({ "*" }), sofern * existiert.
82 Ansonsten und normalerweise ein
83 alphabetisch sortiertes Feld mit
84 den Namen aller Dateien und
85 Verzeichnisse in /obj, sofern /obj
86 ein Verzeichnis ist, ansonsten 0.
87
Zesstrad59c3892019-11-28 20:53:39 +010088 get_dir("/obj/schwert.c", GETDIR_SIZES)
89 ({ <Groesse von /obj/schwert.c> }),
90 sofern /obj/schwert.c existiert.
MG Mud User88f12472016-06-24 23:31:02 +020091 get_dir("/obj/.", GETDIR_NAMES) Wie get_dir("/obj/.").
92 get_dir("/obj/.", GETDIR_SIZES) Ein unsortiertes Feld mit den
93 Groessen der Dateien in /obj.
94 get_dir("/obj/.", GETDIR_NAMES|GETDIR_SIZES|GETDIR_DATES)
95 oder kuerzer
96 get_dir("/obj/.", GETDIR_ALL) Ein eindimensionales und nach
97 Namen sortiertes Feld, das fuer
98 jede Datei in /obj den Namen, die
99 Groesse und den Zeitpunkt der
100 letzten Aenderung enthaelt, z.B.
Zesstrad59c3892019-11-28 20:53:39 +0100101 ({
102 "axt.c" , 927, 994539583,
103 "schwert.c", 1283, 998153903,
104 }).
MG Mud User88f12472016-06-24 23:31:02 +0200105
Zesstrad59c3892019-11-28 20:53:39 +0100106 get_dir("/obj/schwert.c", GETDIR_NAMES|GETDIR_PATH)
107 ({ "/obj/sword.c" }), sofern
MG Mud User88f12472016-06-24 23:31:02 +0200108 vorhanden.
Zesstrad59c3892019-11-28 20:53:39 +0100109 get_dir("/obj/schwert.c", GETDIR_PATH) Kurzform dafuer.
MG Mud User88f12472016-06-24 23:31:02 +0200110
111 transpose_array(({ get_dir(str, GETDIR_NAMES|GETDIR_UNSORTED)
112 , get_dir(str, GETDIR_SIZES)
113 , get_dir(str, GETDIR_DATES) }));
114 Liefert ein unsortiertes Feld mit Feldern, von denen ein jedes
115 Name, Groesse und Zeit einer Datei enthaelt, z. B.
Zesstrad59c3892019-11-28 20:53:39 +0100116 ({
117 ({ "schwert.c", 1283, 998153903 }),
118 ({ "axt.c" , 927, 994539583 }),
119 }).
120
121GESCHICHTE
122 LDMud 3.2.9: GETDIR_PATH eingefuehrt.
123 LDMud 3.2.11: GETDIR_ACCESS und GETDIR_MODES eingefuehrt.
124
MG Mud User88f12472016-06-24 23:31:02 +0200125SIEHE AUCH
Zesstrad59c3892019-11-28 20:53:39 +0100126 mkdir(E), rmdir(E), file_size(E), write_file(E), write_bytes(E),
127 read_file(E), read_bytes(E)