#define NORETURN __attribute__((__noreturn__))
#else
#define NORETURN
-#endif
-
#ifndef __attribute__
-#define __attribute(x)
+#define __attribute__(x)
+#endif
#endif
/*
* 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
unsigned int ce_size;
unsigned char sha1[20];
unsigned short ce_flags;
- char name[0];
+ char name[];
};
#define CE_NAMEMASK (0x0fff)
#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 */
extern struct alternate_object_database {
struct alternate_object_database *next;
char *name;
- char base[0]; /* more */
+ char base[]; /* more */
} *alt_odb_list;
extern void prepare_alt_odb(void);
unsigned int pack_last_used;
unsigned int pack_use_cnt;
unsigned char sha1[20];
- char pack_name[0]; /* something like ".git/objects/pack/xxxxx.pack" */
+ char pack_name[]; /* something like ".git/objects/pack/xxxxx.pack" */
} *packed_git;
struct pack_entry {
unsigned char old_sha1[20];
unsigned char new_sha1[20];
struct ref *peer_ref; /* when renaming */
- char name[0];
+ char name[];
};
extern int git_connect(int fd[2], char *url, const char *prog);
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);