X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=update-cache.c;h=16e1bb9aea6413db35039042289605124d759501;hb=0fc65a4572625405ff6dd9d8c16d835f2b1ebd49;hp=02c213cfb65a72b3768a5d5d8eb96904d4e74ef6;hpb=c6e007b0942a373bbf87fa3e4e11e2d90907de8c;p=git.git diff --git a/update-cache.c b/update-cache.c index 02c213cf..16e1bb9a 100644 --- a/update-cache.c +++ b/update-cache.c @@ -3,6 +3,7 @@ * * Copyright (C) Linus Torvalds, 2005 */ +#include #include "cache.h" /* @@ -35,8 +36,8 @@ static int index_fd(unsigned char *sha1, int fd, struct stat *st) z_stream stream; unsigned long size = st->st_size; int max_out_bytes = size + 200; - void *out = malloc(max_out_bytes); - void *metadata = malloc(200); + void *out = xmalloc(max_out_bytes); + void *metadata = xmalloc(200); int metadata_size; void *in; SHA_CTX c; @@ -122,7 +123,7 @@ static int add_file_to_cache(char *path) } namelen = strlen(path); size = cache_entry_size(namelen); - ce = malloc(size); + ce = xmalloc(size); memset(ce, 0, size); memcpy(ce->name, path, namelen); fill_stat_cache_info(ce, &st); @@ -205,7 +206,7 @@ static struct cache_entry *refresh_entry(struct cache_entry *ce) return ERR_PTR(-EINVAL); size = ce_size(ce); - updated = malloc(size); + updated = xmalloc(size); memcpy(updated, ce, size); fill_stat_cache_info(updated, &st); return updated; @@ -281,7 +282,7 @@ static int add_cacheinfo(char *arg1, char *arg2, char *arg3) len = strlen(arg3); size = cache_entry_size(len); - ce = malloc(size); + ce = xmalloc(size); memset(ce, 0, size); memcpy(ce->sha1, sha1, 20); @@ -299,6 +300,11 @@ static void remove_lock_file(void) unlink(lockfile_name); } +static void remove_lock_file_on_signal(int signo) +{ + remove_lock_file(); +} + int main(int argc, char **argv) { int i, newfd, entries; @@ -312,6 +318,7 @@ int main(int argc, char **argv) if (newfd < 0) die("unable to create new cachefile"); + signal(SIGINT, remove_lock_file_on_signal); atexit(remove_lock_file); lockfile_name = lockfile;