int copyfile_state_get(copyfile_state_t s, uint32_t flag, void * dst);
int copyfile_state_set(copyfile_state_t s, uint32_t flag, const void * src);
+typedef int (*copyfile_callback_t)(int, int, copyfile_state_t, const char *, const char *, void *);
+
#define COPYFILE_STATE_SRC_FD 1
#define COPYFILE_STATE_SRC_FILENAME 2
#define COPYFILE_STATE_DST_FD 3
#define COPYFILE_STATE_DST_FILENAME 4
#define COPYFILE_STATE_QUARANTINE 5
+#define COPYFILE_STATE_STATUS_CB 6
+#define COPYFILE_STATE_STATUS_CTX 7
+#define COPYFILE_STATE_COPIED 8
#define COPYFILE_DISABLE_VAR "COPYFILE_DISABLE"
#define COPYFILE_METADATA (COPYFILE_SECURITY | COPYFILE_XATTR)
#define COPYFILE_ALL (COPYFILE_METADATA | COPYFILE_DATA)
+#define COPYFILE_RECURSIVE (1<<15) /* Descend into hierarchies */
#define COPYFILE_CHECK (1<<16) /* return flags for xattr or acls if set */
#define COPYFILE_EXCL (1<<17) /* fail if destination exists */
#define COPYFILE_NOFOLLOW_SRC (1<<18) /* don't follow if source is a symlink */
#define COPYFILE_VERBOSE (1<<30)
+#define COPYFILE_RECURSE_ERROR 0
+#define COPYFILE_RECURSE_FILE 1
+#define COPYFILE_RECURSE_DIR 2
+#define COPYFILE_RECURSE_DIR_CLEANUP 3
+#define COPYFILE_COPY_DATA 4
+
+#define COPYFILE_START 1
+#define COPYFILE_FINISH 2
+#define COPYFILE_ERR 3
+#define COPYFILE_PROGRESS 4
+
+#define COPYFILE_CONTINUE 0
+#define COPYFILE_SKIP 1
+#define COPYFILE_QUIT 2
+
__END_DECLS
#endif /* _COPYFILE_H_ */