SYNOPSIS
#include <files.h>
mixed * get_dir(string str)
mixed * get_dir(string str, int mask)
BESCHREIBUNG
Benoetigt einen Pfad als erstes Argument und liefert ein Feld
(Array) mit Dateinamen bzw. Eigenschaften der gefundenen Dateien im
angegebenen Verzeichnis.
Liefert 0 zurueck, wenn es das Verzeichnis, in dem gesucht werden
soll, nicht gibt.
Der Dateinamen-Teil des Pfades darf "*" und "?" als Platzhalter
enthalten: jeder "*" steht fuer eine beliebige Anzahl Zeichen (oder
sich selber), "?" fuer ein beliebiges Zeichen. Entsprechend liefert
get_dir("/pfad/*") ein alphabetisch sortiertes Feld aller Dateien
im Verzeichnis "/pfad" oder ({ "/pfad/*" }), wenn es diese Datei
geben sollte.
Gibt man den Pfad eines Verzeichnisses mit abschliessendem "/" oder
"/." an (z. B. get_dir("/pfad/.")), so erhaelt man den Inhalt des
Verzeichnisses. Um Informationen ueber das Verzeichnis selber zu
erhalten, muss man den Pfad des Verzeichnisses angeben.
Das optionale zweite Argument ist eine Bitmaske, mit der man
angeben kann, welche Informationen man ueber die angegebenen
Dateien erhalten moechte.
GETDIR_EMPTY (0x00) get_dir() liefert ein leeres Feld (nicht
wirklich sinnvoll)
GETDIR_NAMES (0x01) liefert die alphabetisch sortierten
Dateinamen.
GETDIR_SIZES (0x02) liefert die unsortierten Dateigroessen
(file_size()), Verzeichnisse haben die
Dateigroesse FSIZE_DIR (-2).
GETDIR_DATES (0x04) liefert die unsortierten Zeiten der jeweils
letzten Aenderung in Sekunden seit dem
01.01.1970.
GETDIR_ACCESS (0x40) liefert die unsortierten Zeiten des jeweils
letzten Zugriffes in Sekunden seit dem
01.01.1970.
GETDIR_MODES (0x80) liefert die Filemode-Maske
GETDIR_ALL (0xDF) Liefert all Werte zurueck.
GETDIR_PATH (0x10) Dateinamen werden als volle Pfade geliefert.
(ein ev. fehlendes GETDIR_NAMES wird als
vorhanden angenommen).
GETDIR_UNSORTED (0x20) Das Ergebnis wird nicht sortiert.
Wichtig: Man muss GETDIR_NAMES|GETDIR_UNSORTED verwenden, wenn man
die Eintraege in der selben Reihenfolge wie bei GETDIR_SIZES und
GETDIR_DATES haben moechte.
Die Eintraege in der Bitmaske koennen miteinander kombiniert
werden.
ANMERKUNGEN
Der als Argument angegebene Pfad wird vor Benutzung von valid_read()
im Master der Mudlib verarbeitet. Hierbei kann die Mudlib eine
Normalisierung vornehmen (z.B. fuehrende und endstaendige "/"
entfernen). Dann fuehrt dann u.U. zu erwarteten Resultaten (z.B. dass
get_dir("/dir/", ...) nicht den Inhalt von /dir/ zurueckgibt).
Compat mode: GETDIR_PATH liefert die Pfade ohne fuehrenden /.
BEISPIELE
Funktion Rueckgabewert
-------------------------------------------------------------------
get_dir("/obj/.") Alle Dateien, die im Verzeichnis
/obj enthalten sind.
get_dir("/obj/") Wie get_dir("/obj/").
get_dir("/obj/schwert.c") ({ "schwert.c" }), sofern
/obj/schwert.c existiert (als
Datei oder Verzeichnis), ansonsten
({}), sofern /obj ein Verzeichnis
ist, ansonsten 0.
get_dir("/obj/*") ({ "*" }), sofern * existiert.
Ansonsten und normalerweise ein
alphabetisch sortiertes Feld mit
den Namen aller Dateien und
Verzeichnisse in /obj, sofern /obj
ein Verzeichnis ist, ansonsten 0.
get_dir("/obj/schwert.c", GETDIR_SIZES)
({ <Groesse von /obj/schwert.c> }),
sofern /obj/schwert.c existiert.
get_dir("/obj/.", GETDIR_NAMES) Wie get_dir("/obj/.").
get_dir("/obj/.", GETDIR_SIZES) Ein unsortiertes Feld mit den
Groessen der Dateien in /obj.
get_dir("/obj/.", GETDIR_NAMES|GETDIR_SIZES|GETDIR_DATES)
oder kuerzer
get_dir("/obj/.", GETDIR_ALL) Ein eindimensionales und nach
Namen sortiertes Feld, das fuer
jede Datei in /obj den Namen, die
Groesse und den Zeitpunkt der
letzten Aenderung enthaelt, z.B.
({
"axt.c" , 927, 994539583,
"schwert.c", 1283, 998153903,
}).
get_dir("/obj/schwert.c", GETDIR_NAMES|GETDIR_PATH)
({ "/obj/sword.c" }), sofern
vorhanden.
get_dir("/obj/schwert.c", GETDIR_PATH) Kurzform dafuer.
transpose_array(({ get_dir(str, GETDIR_NAMES|GETDIR_UNSORTED)
, get_dir(str, GETDIR_SIZES)
, get_dir(str, GETDIR_DATES) }));
Liefert ein unsortiertes Feld mit Feldern, von denen ein jedes
Name, Groesse und Zeit einer Datei enthaelt, z. B.
({
({ "schwert.c", 1283, 998153903 }),
({ "axt.c" , 927, 994539583 }),
}).
GESCHICHTE
LDMud 3.2.9: GETDIR_PATH eingefuehrt.
LDMud 3.2.11: GETDIR_ACCESS und GETDIR_MODES eingefuehrt.
SIEHE AUCH
mkdir(E), rmdir(E), file_size(E), write_file(E), write_bytes(E),
read_file(E), read_bytes(E)
|