====== std.fs ====== Datei-I/O direkt über POSIX-Systemaufrufe (sys_open, read, write, unlink, rename, lseek). Bietet Lesen (''ReadFile''), Schreiben (''WriteFile''), Anhängen (''AppendFile''), Löschen (''DeleteFile'') und Dateigröße (''FileSize''). Stdout/Stderr-Ausgabe (''StdoutWrite'', ''StderrWrite''), Zeichenausgabe (''PutChar'') und Pfad-Operationen: Normalisieren, Verzeichnis, Dateiname, Erweiterung und relative Pfadauflösung. Einsatzbereiche: Konfigurationsdateien, Log-Dateien, Binärdaten-Speicherung, Systemdienste. Für komfortablere formatierte Ausgabe bietet ''std.io'' Print-Hilfsfunktionen. **Autor:** Andreas Röne\\ **Copyright:** 2024-2025 Andreas Röne ---- ===== Typen ===== ==== fd = int64 ==== Dateideskriptor-Konventionen: ---- ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Sichtbarkeit ^ | ''O_RDONLY'' | ''int64'' | ''0'' | pub | | ''O_WRONLY'' | ''int64'' | ''1'' | pub | | ''O_RDWR'' | ''int64'' | ''2'' | pub | | ''O_CREAT'' | ''int64'' | ''64'' | pub | | ''O_TRUNC'' | ''int64'' | ''512'' | pub | | ''O_APPEND'' | ''int64'' | ''1024'' | pub | | ''O_EXCL'' | ''int64'' | ''128'' | pub | | ''S_IRUSR'' | ''int64'' | ''256'' | pub | | ''S_IWUSR'' | ''int64'' | ''128'' | pub | | ''S_IRGRP'' | ''int64'' | ''32'' | pub | | ''S_IWGRP'' | ''int64'' | ''16'' | pub | | ''S_IROTH'' | ''int64'' | ''4'' | pub | | ''S_IWOTH'' | ''int64'' | ''2'' | pub | | ''DEFAULT_MODE'' | ''int64'' | ''420'' | pub | | ''STDIN_FILENO'' | ''int64'' | ''0'' | pub | | ''STDOUT_FILENO'' | ''int64'' | ''1'' | pub | | ''STDERR_FILENO'' | ''int64'' | ''2'' | pub | | ''SEEK_SET'' | ''int64'' | ''0'' | pub | | ''SEEK_CUR'' | ''int64'' | ''1'' | pub | | ''SEEK_END'' | ''int64'' | ''2'' | pub | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''IsValidFd(f: fd): bool'' | pub | Prüft ob Dateideskriptor gültig ist | | ''ReadFile(path: pchar, buf: pchar, max_len: int64): int64'' | pub | Liest Dateiinhalt in Puffer ein | | ''WriteFile(path: pchar, buf: pchar, len: int64): int64'' | pub | Schreibt Puffer vollständig in Datei | | ''AppendFile(path: pchar, buf: pchar, len: int64): int64'' | pub | Hängt Puffer an bestehende Datei an | | ''DeleteFile(path: pchar): bool'' | pub | Löscht Datei über sys_unlink | | ''FileSize(path: pchar): int64'' | pub | Gibt Dateigröße in Bytes zurück | | ''StdoutWrite(buf: pchar, len: int64): int64'' | pub | Schreibt Puffer auf Standardausgabe | | ''StderrWrite(buf: pchar, len: int64): int64'' | pub | Schreibt Puffer auf Fehlerausgabe | | ''PutChar(c: int64): int64'' | pub | Gibt einzelnes Zeichen auf stdout aus | | ''PathNormalize(dest: pchar, src: pchar): pchar'' | pub | Normalisiert Pfad (entfernt ./ und ../) | | ''PathDir(dest: pchar, path: pchar): pchar'' | pub | Extrahiert Verzeichnisteil aus Pfad | | ''PathExt(dest: pchar, path: pchar): pchar'' | pub | Extrahiert Dateiendung aus Pfad | | ''PathBase(dest: pchar, path: pchar): pchar'' | pub | Extrahiert Dateiname ohne Verzeichnis | | ''PathResolve(dest: pchar, base: pchar, relative: pchar): pchar'' | pub | Löst relativen Pfad gegen Basispfad auf | | ''FileExists(path: pchar): bool'' | pub | Prüft ob Datei oder Verzeichnis existiert | | ''Rename(oldPath: pchar, newPath: pchar): bool'' | pub | Benennt Datei/Verzeichnis um | | ''FileCopy(src: pchar, dest: pchar): bool'' | pub | Kopiert Datei | | ''FileMove(src: pchar, dest: pchar): bool'' | pub | Verschiebt Datei (Copy + Delete) | | ''FileStat(path: pchar, statBuf: int64): bool'' | pub | Füllt stat-Struktur (128 Bytes) | | ''FileSizeFast(path: pchar): int64'' | pub | Dateigröße via stat (kein open) | | ''FileModTime(path: pchar): int64'' | pub | Letzte Änderungszeit als Unix-Timestamp | | ''FileAccessTime(path: pchar): int64'' | pub | Letzter Zugriffszeitpunkt als Unix-Timestamp | | ''FilePerm(path: pchar): int64'' | pub | Dateiberechtigungen (untere 12 Bits der st_mode) | | ''TmpFile(): pchar'' | pub | Erzeugt eindeutige Temp-Datei unter ''/tmp''; gibt heap-alloc'd Pfad (32 Bytes) zurück — Aufrufer muss ''free(ptr, 32)'' aufrufen | | ''DirList(path: pchar): int64'' | pub | Liest Verzeichnisinhalt; gibt Handle zurück (0 = Fehler) | | ''DirEntryCount(dirlist: int64): int64'' | pub | Anzahl Einträge im dirlist-Handle | | ''DirEntryType(dirlist: int64, name: pchar, nameLen: int64): int64'' | pub | DT_*-Typ nach Name (lineare Suche) | | ''DirEntryName(dirlist: int64, idx: int64): pchar'' | pub | Name des idx-ten Eintrags (0-basiert); gibt Zeiger in den Handle-Puffer zurück — nicht freigeben | | ''DirEntryTypeAt(dirlist: int64, idx: int64): int64'' | pub | DT_*-Typ des idx-ten Eintrags; ''DT_UNKNOWN'' wenn außerhalb | | ''DirFree(dirlist: int64): void'' | pub | Gibt dirlist-Handle frei | | ''DirWalk(root: pchar): int64'' | pub | Rekursive Verzeichnis-Traversierung; gibt Walk-Handle zurück | | ''DirWalkCount(result: int64): int64'' | pub | Anzahl gefundener Pfade im Walk-Handle | | ''DirWalkPath(result: int64, index: int64, outBuf: pchar): int64'' | pub | Kopiert idx-ten Pfad in outBuf; gibt Länge zurück | | ''DirWalkType(result: int64, index: int64): int64'' | pub | DT_*-Typ des idx-ten Walk-Eintrags | | ''DirWalkFree(result: int64): void'' | pub | Gibt Walk-Handle frei | | ''GlobMatch(pattern: pchar, name: pchar): bool'' | pub | Prüft ob Name auf Wildcard-Pattern passt (''*'', ''?'') | | ''FileGlob(pattern: pchar): int64'' | pub | Sucht Dateien nach Muster; gibt Glob-Handle zurück | | ''GlobCount(result: int64): int64'' | pub | Anzahl Treffer im Glob-Handle | | ''GlobGet(result: int64, index: int64, outBuf: pchar): int64'' | pub | Kopiert idx-ten Treffer-Pfad in outBuf | | ''GlobFree(result: int64): void'' | pub | Gibt Glob-Handle frei |