#define cache_entry_size(len) ((offsetof(struct cache_entry,name) + (len) + 8) & ~7)
-struct cache_entry **active_cache;
-unsigned int active_nr, active_alloc, active_cache_changed;
+extern struct cache_entry **active_cache;
+extern unsigned int active_nr, active_alloc, active_cache_changed;
#define GIT_DIR_ENVIRONMENT "GIT_DIR"
#define DEFAULT_GIT_DIR_ENVIRONMENT ".git"
static const char *pgm = NULL;
static const char *arguments[8];
+static int err;
static void run_program(void)
{
die("unable to execute '%s'", pgm);
}
if (waitpid(pid, &status, 0) < 0 || !WIFEXITED(status) || WEXITSTATUS(status))
- die("merge program failed");
+ err++;
}
static int merge_entry(int pos, const char *path)
}
merge_file(arg);
}
+ if (err)
+ die("merge program failed");
return 0;
}
struct object_list *refs;
};
-int nr_objs;
-struct object **objs;
+extern int nr_objs;
+extern struct object **objs;
struct object *lookup_object(unsigned char *sha1);
stream.next_in = hdr;
stream.avail_in = hdrlen;
while (deflate(&stream, 0) == Z_OK)
- /* nothing */
+ /* nothing */;
/* Then the data itself.. */
stream.next_in = buf;
+/*
+ * Copyright (c) 2005 Rene Scharfe
+ */
#include <time.h>
#include "cache.h"
offset = 0;
nr = 0;
- do {
+ while (nr < maxentries) {
struct cache_entry *ce = cachep[nr];
const char *pathname = ce->name, *filename, *dirname;
int pathlen = ce_namelen(ce), entrylen;
memcpy(buffer + offset, sha1, 20);
offset += 20;
nr++;
- } while (nr < maxentries);
+ }
write_sha1_file(buffer, offset, "tree", returnsha1);
free(buffer);
int entries = read_cache();
unsigned char sha1[20];
- if (entries <= 0)
- die("write-tree: no cache contents to write");
+ if (entries < 0)
+ die("write-tree: error reading cache");
/* Verify that the tree is merged */
funny = 0;