X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=cache.h;h=0dcd2fe53b6aa7b19d963e130ce5fd4dea2389bc;hb=6e7722e6f88c049f43a1c00c45c502542d1a5752;hp=fd4988ed9a0d8f75c66127a6186aae0d5d76a913;hpb=f88395ac233572b19f67b3a47b9fe024f397a85b;p=git.git diff --git a/cache.h b/cache.h index fd4988ed..0dcd2fe5 100644 --- a/cache.h +++ b/cache.h @@ -38,6 +38,9 @@ #define NORETURN __attribute__((__noreturn__)) #else #define NORETURN +#ifndef __attribute__ +#define __attribute__(x) +#endif #endif /* @@ -55,7 +58,11 @@ * We accept older names for now but warn. */ extern char *gitenv_bc(const char *); +#ifdef __GNUC__ #define gitenv(e) (getenv(e) ? : gitenv_bc(e)) +#else +#define gitenv(e) (getenv(e) ? getenv(e) : gitenv_bc(e)) +#endif /* * Basic data structures for the directory cache @@ -128,10 +135,6 @@ extern unsigned int active_nr, active_alloc, active_cache_changed; #define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY" #define INDEX_ENVIRONMENT "GIT_INDEX_FILE" #define GRAFT_ENVIRONMENT "GIT_GRAFT_FILE" -#define TEMPLATE_DIR_ENVIRONMENT "GIT_TEMPLATE_DIRECTORY" -#ifndef DEFAULT_GIT_TEMPLATE_ENVIRONMENT -#define DEFAULT_GIT_TEMPLATE_ENVIRONMENT "/etc/git-core/templates" -#endif extern char *get_object_directory(void); extern char *get_refs_directory(void); @@ -140,6 +143,10 @@ extern char *get_graft_file(void); #define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES" +extern const char **get_pathspec(const char *prefix, char **pathspec); +extern const char *setup_git_directory(void); +extern char *prefix_path(const char *prefix, int len, char *path); + #define alloc_nr(x) (((x)+16)*3/2) /* Initialize and use the cache information */ @@ -175,13 +182,16 @@ extern void rollback_index_file(struct cache_file *); #define TYPE_CHANGED 0x0040 /* Return a statically allocated filename matching the sha1 signature */ -extern char *mkpath(const char *fmt, ...); -extern char *git_path(const char *fmt, ...); +extern char *mkpath(const char *fmt, ...) __attribute__((format (printf, 1, 2))); +extern char *git_path(const char *fmt, ...) __attribute__((format (printf, 1, 2))); extern char *sha1_file_name(const unsigned char *sha1); extern char *sha1_pack_name(const unsigned char *sha1); extern char *sha1_pack_index_name(const unsigned char *sha1); +int git_mkstemp(char *path, size_t n, const char *template); + int safe_create_leading_directories(char *path); +char *safe_strncpy(char *, const char *, size_t); /* Read and unpack a sha1 file into memory, write memory to a sha1 file */ extern int unpack_sha1_header(z_stream *stream, void *map, unsigned long mapsize, void *buffer, unsigned long size); @@ -219,8 +229,8 @@ extern char *sha1_to_hex(const unsigned char *sha1); /* static buffer result! */ /* General helper functions */ extern void usage(const char *err) NORETURN; -extern void die(const char *err, ...) NORETURN; -extern int error(const char *err, ...); +extern void die(const char *err, ...) NORETURN __attribute__((format (printf, 1, 2))); +extern int error(const char *err, ...) __attribute__((format (printf, 1, 2))); extern int base_name_compare(const char *name1, int len1, int mode1, const char *name2, int len2, int mode2); extern int cache_name_compare(const char *name1, int len1, const char *name2, int len2); @@ -275,9 +285,10 @@ struct checkout { extern int checkout_entry(struct cache_entry *ce, struct checkout *state); extern struct alternate_object_database { - char *base; + struct alternate_object_database *next; char *name; -} *alt_odb; + char base[0]; /* more */ +} *alt_odb_list; extern void prepare_alt_odb(void); extern struct packed_git { @@ -302,6 +313,7 @@ struct ref { struct ref *next; unsigned char old_sha1[20]; unsigned char new_sha1[20]; + unsigned char force; struct ref *peer_ref; /* when renaming */ char name[0]; }; @@ -315,6 +327,8 @@ extern int get_ack(int fd, unsigned char *result_sha1); extern struct ref **get_remote_heads(int in, struct ref **list, int nr_match, char **match); extern struct packed_git *parse_pack_index(unsigned char *sha1); +extern struct packed_git *parse_pack_index_file(unsigned char *sha1, + char *idx_path); extern void prepare_packed_git(void); extern void install_packed_git(struct packed_git *pack);