Franck Bui-Huu | 4df096a | 2006-09-07 15:12:02 +0200 | [diff] [blame] | 1 | #ifndef ARCHIVE_H |
| 2 | #define ARCHIVE_H |
| 3 | |
| 4 | #define MAX_EXTRA_ARGS 32 |
| 5 | #define MAX_ARGS (MAX_EXTRA_ARGS + 32) |
| 6 | |
| 7 | struct archiver_args { |
| 8 | const char *base; |
| 9 | struct tree *tree; |
| 10 | const unsigned char *commit_sha1; |
| 11 | time_t time; |
| 12 | const char **pathspec; |
Junio C Hamano | e0ffb24 | 2006-09-09 22:42:02 -0700 | [diff] [blame] | 13 | unsigned int verbose : 1; |
Franck Bui-Huu | 4df096a | 2006-09-07 15:12:02 +0200 | [diff] [blame] | 14 | void *extra; |
| 15 | }; |
| 16 | |
| 17 | typedef int (*write_archive_fn_t)(struct archiver_args *); |
| 18 | |
| 19 | typedef void *(*parse_extra_args_fn_t)(int argc, const char **argv); |
| 20 | |
| 21 | struct archiver { |
| 22 | const char *name; |
Franck Bui-Huu | 4df096a | 2006-09-07 15:12:02 +0200 | [diff] [blame] | 23 | struct archiver_args args; |
| 24 | write_archive_fn_t write_archive; |
| 25 | parse_extra_args_fn_t parse_extra; |
| 26 | }; |
| 27 | |
Franck Bui-Huu | 4df096a | 2006-09-07 15:12:02 +0200 | [diff] [blame] | 28 | extern int parse_archive_args(int argc, |
| 29 | const char **argv, |
| 30 | struct archiver *ar); |
| 31 | |
| 32 | extern void parse_treeish_arg(const char **treeish, |
| 33 | struct archiver_args *ar_args, |
| 34 | const char *prefix); |
| 35 | |
| 36 | extern void parse_pathspec_arg(const char **pathspec, |
| 37 | struct archiver_args *args); |
Franck Bui-Huu | efd8696 | 2006-09-07 15:12:03 +0200 | [diff] [blame] | 38 | /* |
| 39 | * Archive-format specific backends. |
| 40 | */ |
| 41 | extern int write_tar_archive(struct archiver_args *); |
Franck Bui-Huu | ec06bff | 2006-09-07 15:12:04 +0200 | [diff] [blame] | 42 | extern int write_zip_archive(struct archiver_args *); |
Rene Scharfe | 854c416 | 2006-09-09 17:02:38 +0200 | [diff] [blame] | 43 | extern void *parse_extra_zip_args(int argc, const char **argv); |
Franck Bui-Huu | 4df096a | 2006-09-07 15:12:02 +0200 | [diff] [blame] | 44 | |
| 45 | #endif /* ARCHIVE_H */ |