caniadd/src/ed2k_util.h

34 lines
963 B
C

#ifndef _ED2K_UTIL_H
#define _ED2K_UTIL_H
#include <sys/stat.h>
#include <stdint.h>
#include "error.h"
typedef enum error (*ed2k_util_fn)(const char *path, const uint8_t *hash,
const struct stat *st, void *data);
/*
* If this returns ED2KUTIL_DONTHASH, then skip the hashing,
* and the post_hash function
*/
typedef enum error (*ed2k_util_prehash_fn)(const char *path,
const struct stat *st, void *data);
struct ed2k_util_opts {
ed2k_util_fn post_hash_fn;
ed2k_util_prehash_fn pre_hash_fn;
void *data;
};
/*
* Given a path (file or directory) calculate the ed2k
* hash for the file(s), and call opts.post_hash_fn if not NULL
* if opts.pre_hash_fn is not NULL, then also call that before the hashing
*
* If fn returns any error, the iteration will stop, and this
* function will return with that error code.
*/
enum error ed2k_util_iterpath(const char *path, const struct ed2k_util_opts *opts);
#endif /* _ED2K_UTIL_H */