X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/7280f7f44cfae62f6d34761ac88aa19da7da5dd8..07290a455e008c37adc233554eff8ad468608161:/cc.h diff --git a/cc.h b/cc.h index c8b0cdf..7d93fa3 100644 --- a/cc.h +++ b/cc.h @@ -326,6 +326,16 @@ extern const encodeops *getencoding(const char */*ename*/); /*----- File hashing ------------------------------------------------------*/ +typedef struct fhashstate { + const gchash *gch; + unsigned f; +} fhashstate; + +#define FHF_BINARY 0x100u +#define FHF_PROGRESS 0x200u + +#define FHF_MASK 0xff00u + /* --- @gethash@ --- * * * Arguments: @const char *name@ = pointer to name string @@ -337,10 +347,34 @@ extern const encodeops *getencoding(const char */*ename*/); extern const gchash *gethash(const char */*name*/); +/* --- @fhash_init@ ---* + * + * Arguments: @fhashstate *fh@ = pointer to fhash state to initialize + * @const gchash *gch@ = hash class to set + * @unsigned f@ initial flags to set + * + * Returns: --- + * + * Use: Initializes an @fhashstate@ structure. + */ + +extern void fhash_init(fhashstate */*fh*/, + const gchash */*gch*/, unsigned /*f*/); + +/* --- @fhash_free@ --- * + * + * Arguments: @fhashstate *fh@ = pointer to fhash state to free + * + * Returns: --- + * + * Use: Frees an fhash state. + */ + +extern void fhash_free(fhashstate */*fh*/); + /* --- @fhash@ --- * * - * Arguments: @const gchash *gch@ = pointer to hash function to use - * @unsigned f@ = flags to set + * Arguments: @fhashstate *fh@ = pointer to fhash state * @const char *file@ = file name to be hashed (null for stdin) * @void *buf@ = pointer to hash output buffer * @@ -349,13 +383,7 @@ extern const gchash *gethash(const char */*name*/); * Use: Hashes a file. */ -#define FHF_BINARY 256u -#define FHF_PROGRESS 512u - -#define FHF_MASK 384u - -extern int fhash(const gchash */*gch*/, unsigned /*f*/, - const char */*file*/, void */*buf*/); +extern int fhash(fhashstate */*fh*/, const char */*file*/, void */*buf*/); /* --- @hfparse@ --- * *