static int index_fd(const char *path, int namelen, struct cache_entry *ce, int fd, struct stat *st)
{
z_stream stream;
- int max_out_bytes = namelen + st->st_size + 200;
+ unsigned long size = st->st_size;
+ int max_out_bytes = namelen + size + 200;
void *out = malloc(max_out_bytes);
void *metadata = malloc(namelen + 200);
- void *in = mmap(NULL, st->st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+ void *in;
SHA_CTX c;
+ in = "";
+ if (size)
+ in = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
close(fd);
if (!out || (int)(long)in == -1)
return -1;
* ASCII size + nul byte
*/
stream.next_in = metadata;
- stream.avail_in = 1+sprintf(metadata, "blob %lu", (unsigned long) st->st_size);
+ stream.avail_in = 1+sprintf(metadata, "blob %lu", size);
stream.next_out = out;
stream.avail_out = max_out_bytes;
while (deflate(&stream, 0) == Z_OK)
* File content
*/
stream.next_in = in;
- stream.avail_in = st->st_size;
+ stream.avail_in = size;
while (deflate(&stream, Z_FINISH) == Z_OK)
/*nothing */;
static void fill_stat_cache_info(struct cache_entry *ce, struct stat *st)
{
ce->ctime.sec = st->st_ctime;
+#ifdef NSEC
ce->ctime.nsec = st->st_ctim.tv_nsec;
+#endif
ce->mtime.sec = st->st_mtime;
+#ifdef NSEC
ce->mtime.nsec = st->st_mtim.tv_nsec;
+#endif
ce->st_dev = st->st_dev;
ce->st_ino = st->st_ino;
ce->st_uid = st->st_uid;
/*
* We fundamentally don't like some paths: we don't want
* dot or dot-dot anywhere, and in fact, we don't even want
- * any other dot-files (.dircache or anything else). They
+ * any other dot-files (.git or anything else). They
* are hidden, for chist sake.
*
* Also, we don't want double slashes or slashes at the
- * end that can make pathnames ambiguous.
+ * end that can make pathnames ambiguous.
*/
static int verify_path(char *path)
{
static void remove_lock_file(void)
{
if (remove_lock)
- unlink(".dircache/index.lock");
+ unlink(".git/index.lock");
}
int main(int argc, char **argv)
int i, newfd, entries;
int allow_options = 1;
- newfd = open(".dircache/index.lock", O_RDWR | O_CREAT | O_EXCL, 0600);
+ newfd = open(".git/index.lock", O_RDWR | O_CREAT | O_EXCL, 0600);
if (newfd < 0)
- usage("unable to create new cachefile");
+ die("unable to create new cachefile");
atexit(remove_lock_file);
remove_lock = 1;
entries = read_cache();
if (entries < 0)
- usage("cache corrupted");
+ die("cache corrupted");
for (i = 1 ; i < argc; i++) {
char *path = argv[i];
refresh_cache();
continue;
}
- usage("unknown option %s", path);
+ die("unknown option %s", path);
}
if (!verify_path(path)) {
fprintf(stderr, "Ignoring path %s\n", argv[i]);
continue;
}
if (add_file_to_cache(path))
- usage("Unable to add %s to database", path);
+ die("Unable to add %s to database", path);
}
if (write_cache(newfd, active_cache, active_nr) ||
- rename(".dircache/index.lock", ".dircache/index"))
- usage("Unable to write new cachefile");
+ rename(".git/index.lock", ".git/index"))
+ die("Unable to write new cachefile");
remove_lock = 0;
return 0;