Files

36 lines
1.1 KiB
C
Raw Permalink Normal View History

2026-05-23 21:03:54 +02:00
#ifndef CACHE_H
#define CACHE_H
/*
* Build cache — per-project dirty detection.
*
* A small dotfile (.gbuild_cache) is kept inside each cloned repo dir.
* It stores the git HEAD hash that was current at the last *successful*
* build. On the next run gbuild compares the live HEAD to the cached
* one; if they match the build is skipped unless --force was passed.
*
* Format of .gbuild_cache (plain text, one line):
* <40-char sha1>\n
*/
#include <stddef.h>
/* Maximum length of a stored hash (SHA-1 hex + NUL). */
#define CACHE_HASH_LEN 64
/*
* Read the cached hash for the repo at repo_path into out (>= CACHE_HASH_LEN
* bytes). Returns 0 on success, -1 if the file does not exist or is
* unreadable (out is set to an empty string in that case).
*/
int cache_read(const char *repo_path, char *out, size_t n);
/*
* Write hash as the new cached HEAD for the repo at repo_path.
* Creates or overwrites .gbuild_cache inside repo_path.
* Returns 0 on success, -1 on error.
*/
int cache_write(const char *repo_path, const char *hash);
#endif /* CACHE_H */