Declaraciones públicas de src/fs.zig (zkit (SDK consumido)).
apps/docs/generated/zig/zkit.jsonPágina generada desde
zkit@zkit-0.0.0-_fk2iAa4BQCqGFKJeeY9WvMQClX5kiZQ2iOZrVsxVyyN (src/root.zig). No se edita a mano:bun run docs:genla regenera ybun run docs:checkfalla si difiere.
zkit/fs — ficheros sobre descriptores POSIX, sin runtime Io.
std.fs.File/std.fs.cwd() pasaron detrás de std.Io en 0.16. Un daemon
con hilos propios no tiene un Io, así que styx tomó prestado el shim de
ficheros del fork de quic-zig (quic.sys.File, createFile,
openFileRead, readFileAlloc) — una dependencia de sockets usada para
abrir ficheros. Este módulo es ese shim, con cuatro arreglos:
File.stat usa statx/fstat y devuelve tamaño, tipo e identidad
(dev, ino). El shim original medía el tamaño con tres lseek que
movían el offset compartido del fd (carrera con cualquier otro hilo que
leyese por el mismo descriptor).File.readAt/readAllAt son pread: sin offset compartido, seguros
entre hilos sobre el mismo fd.EAGAIN en escritura no es un bucle caliente: devuelve
error.WouldBlock (un fd bloqueante nunca lo produce).open lleva O_CLOEXEC: un fork+exec no hereda descriptores.Rutas: aquí se abren rutas RELATIVAS AL CWD o absolutas, sin política. Para
abrir ficheros controlados por un cliente dentro de una raíz (path
traversal, symlinks, TOCTOU) usa zkit.safety.fs.Root, que es fd-relativo.
fs.fd_tconst · línea 35
pub const fd_t = posix.fd_tSin ///.
fs.max_path_bytesconst · línea 36
pub const max_path_bytes = std.fs.max_path_bytesSin ///.
fs.OpenErrorconst · línea 38
pub const OpenError = error{ FileNotFound, AccessDenied, IsDir, NotDir, NameTooLong, SymLinkLoop, PathAlreadyExists, NoSpaceLeft, SystemResources, ProcessFdQuotaExceeded, SystemFdQuotaExceeded, ReadOn …Sin ///.
fs.ReadErrorconst · línea 54
pub const ReadError = error{ InputOutput, AccessDenied, IsDir, WouldBlock, Unexpected }Sin ///.
fs.WriteErrorconst · línea 56
pub const WriteError = error{ DiskQuota, NoSpaceLeft, FileTooBig, BrokenPipe, InputOutput, AccessDenied, WouldBlock, Unexpected, }Sin ///.
fs.StatErrorconst · línea 67
pub const StatError = error{ AccessDenied, SystemResources, Unexpected }Sin ///.
fs.Kindtype · línea 69
pub const Kind = enumSin ///.
fs.Stattype · línea 72
pub const Stat = structMetadatos de un descriptor abierto.
fs.Filetype · línea 85
pub const File = structDescriptor de fichero propio. close lo libera; no hay finalizador.
fs.File.closefn · línea 88
pub fn close(self: File) voidSin ///.
fs.File.readfn · línea 93
pub fn read(self: File, dest: []u8) ReadError!usizeLee hasta dest.len bytes en el offset actual. 0 = EOF.
fs.File.readAtfn · línea 105
pub fn readAt(self: File, dest: []u8, offset: u64) ReadError!usizepread: lee en offset sin tocar el offset del descriptor. 0 = EOF.
fs.File.readAllAtfn · línea 117
pub fn readAllAt(self: File, dest: []u8, offset: u64) ReadError!usizeLee hasta llenar dest o llegar a EOF desde offset. Devuelve lo leído.
fs.File.writeAllfn · línea 127
pub fn writeAll(self: File, bytes: []const u8) WriteError!voidSin ///.
fs.File.writeAllAtfn · línea 143
pub fn writeAllAt(self: File, bytes: []const u8, offset: u64) WriteError!voidpwrite completo en offset.
fs.File.syncfn · línea 159
pub fn sync(self: File) WriteError!voidfsync: los datos y metadatos llegan al dispositivo.
fs.File.statfn · línea 164
pub fn stat(self: File) StatError!StatSin ///.
fs.statFdfn · línea 171
pub fn statFd(fd: fd_t) StatError!Statstat de un descriptor: statx en Linux (donde std.c.fstat no está
declarado para todas las libc), fstat en el resto.
fs.kindOfModefn · línea 208
pub fn kindOfMode(mode: u32) KindSin ///.
fs.pathZfn · línea 216
pub fn pathZ(path: []const u8, buf: *[max_path_bytes]u8) error{NameTooLong}![:0]const u8Copia path a buf con terminador NUL.
fs.openReadfn · línea 224
pub fn openRead(path: []const u8) OpenError!FileAbre un fichero existente para leer.
fs.CreateOptionstype · línea 230
pub const CreateOptions = structSin ///.
fs.createFilefn · línea 239
pub fn createFile(path: []const u8, opts: CreateOptions) OpenError!FileCrea (o trunca) un fichero para escribir.
fs.createFlagsfn · línea 245
pub fn createFlags(opts: CreateOptions) posix.OSin ///.
fs.openRawfn · línea 256
pub fn openRaw(dir: fd_t, path: [*:0]const u8, flags: posix.O, mode: posix.mode_t) OpenError!Fileopenat con el errno traducido. Público para zkit.safety.fs.
fs.mapOpenErrnofn · línea 267
pub fn mapOpenErrno(e: posix.E) OpenErrorSin ///.
fs.MakeDirErrorconst · línea 308
pub const MakeDirError = error{ PathAlreadyExists, AccessDenied, FileNotFound, NotDir, NameTooLong, NoSpaceLeft, ReadOnlyFileSystem, Unexpected, }Sin ///.
fs.MakeDirOptionstype · línea 319
pub const MakeDirOptions = structSin ///.
fs.makeDirfn · línea 326
pub fn makeDir(path: []const u8, opts: MakeDirOptions) MakeDirError!voidSin ///.
fs.makeDirAtfn · línea 332
pub fn makeDirAt(dir: fd_t, z: [*:0]const u8, opts: MakeDirOptions) MakeDirError!voidSin ///.
fs.ReadFileErrorconst · línea 352
pub const ReadFileError = OpenError || ReadError || StatError || std.mem.Allocator.Error || error{FileTooBig}Sin ///.
fs.readFileAllocfn · línea 357
pub fn readFileAlloc(gpa: std.mem.Allocator, path: []const u8, max_bytes: usize) ReadFileError![]u8Lee path entero en memoria nueva de gpa. error.FileTooBig si pasa
de max_bytes (comprobado ANTES de reservar y otra vez al leer, por si el
fichero crece entre el stat y la lectura).
fs.readFileAllocFdfn · línea 363
pub fn readFileAllocFd(gpa: std.mem.Allocator, f: File, max_bytes: usize) ReadFileError![]u8Sin ///.