// calogFs.h -- calog filesystem library.
//
// Bridges the POSIX filesystem into calog's value model so any engine can read, write, and
// inspect files without an engine-specific I/O library:
//   fsRead(path)         -> string  (the whole file, binary-safe)
//   fsWrite(path, data)  -> nil     (create/truncate, honoring data's byte length)
//   fsAppend(path, data) -> nil     (create if absent, append at the end)
//   fsExists(path)       -> bool
//   fsRemove(path)       -> nil     (unlink a file)
//   fsMkdir(path)        -> nil     (single level, mode 0777 & umask; an existing dir is OK)
//   fsList(path)         -> list    (entry name strings, excluding "." and "..")
//   fsStat(path)         -> map {size, isDir, isFile, mtime} or nil if the path is absent
// The natives are INLINE (each is a pure function of its arguments over the OS filesystem, no
// shared state), so there is nothing to shut down. A failed operation surfaces as a catchable
// script error carrying strerror(errno).

#ifndef CALOG_FS_H
#define CALOG_FS_H

#include "calog.h"

// Register the filesystem natives on a runtime. Stateless: safe to call on any number of
// runtimes, and there is no matching shutdown.
int32_t calogFsRegister(CalogT *calog);

#endif
