/* app/progress.h — 进度持久化:`MeowData/os.meow.reader/progress/`(每书 = path hash 文件)。 * * 内容(文本,可读可调):v=1 / seg=<段> / ch=<字符偏移> / fs=<字号> / ls=<行距%> / ts=。 * 锚定是(段,字符偏移),与字号无关 → 换字号书签不失效(READER_ENGINE_NOTES §6.3)。 * 无 SDK 之外依赖;目录推导:MEOW_DATA_DIR(launcher 注入 /MeowData//data)去皮 /data → * /MeowData/,接 "progress";无 env(宿主/无卡)回退 /tmp/meowcfg_/progress。 */ #ifndef RDPROG_H #define RDPROG_H #include #include #ifdef __cplusplus extern "C" { #endif typedef struct rdprog { int valid; /* 1=有档 */ int seg; int32_t ch; int fs; int ls; uint64_t ts; /* 最近阅读 unix 秒 */ } rdprog; /* 组装 progress 目录路径并 mkdir -p。成功 0(out 填目录绝对路径);负值错误。 */ int rdprog_dir(char *out, int outsz); /* 由书路径算 hash 文件名(FNV-1a 32bit hex)写 out(≥20 字节)。 */ void rdprog_hash(const char *book_path, char *out, int outsz); /* 读进度:1=有档(填 p);0=无/不存在;负值=IO 错。 */ int rdprog_load(const char *book_path, rdprog *p); /* 写进度。0=成功;负值=IO/无法建目录(不崩)。 */ int rdprog_save(const char *book_path, const rdprog *p); #ifdef __cplusplus } #endif #endif /* RDPROG_H */