Merge branch 'pe/cleanup' into next
authorJunio C Hamano <junkio@cox.net>
Tue, 4 Apr 2006 07:23:36 +0000 (00:23 -0700)
committerJunio C Hamano <junkio@cox.net>
Tue, 4 Apr 2006 07:23:36 +0000 (00:23 -0700)
* pe/cleanup:
  Replace xmalloc+memset(0) with xcalloc.
  Use blob_, commit_, tag_, and tree_type throughout.

1  2 
pack-objects.c
read-tree.c

diff --combined pack-objects.c
@@@ -1,5 -1,9 +1,9 @@@
  #include "cache.h"
  #include "object.h"
+ #include "blob.h"
+ #include "commit.h"
+ #include "tag.h"
+ #include "tree.h"
  #include "delta.h"
  #include "pack.h"
  #include "csum-file.h"
@@@ -58,7 -62,7 +62,7 @@@ static int nr_objects = 0, nr_alloc = 0
  static const char *base_name;
  static unsigned char pack_file_sha1[20];
  static int progress = 1;
 -static volatile int progress_update = 0;
 +static volatile sig_atomic_t progress_update = 0;
  
  /*
   * The object names in objects array are hashed with this hashtable,
@@@ -603,7 -607,7 +607,7 @@@ static void add_pbase_tree(struct tree_
                if (!add_object_entry(sha1, hash, 1))
                        continue;
  
-               if (!strcmp(type, "tree")) {
+               if (!strcmp(type, tree_type)) {
                        struct tree_desc sub;
                        void *elem;
                        struct name_path me;
@@@ -626,7 -630,7 +630,7 @@@ static void add_preferred_base(unsigne
        struct tree_desc tree;
        void *elem;
  
-       elem = read_object_with_reference(sha1, "tree", &tree.size, NULL);
+       elem = read_object_with_reference(sha1, tree_type, &tree.size, NULL);
        tree.buf = elem;
        if (!tree.buf)
                return;
@@@ -684,13 -688,13 +688,13 @@@ static void check_object(struct object_
                die("unable to get type of object %s",
                    sha1_to_hex(entry->sha1));
  
-       if (!strcmp(type, "commit")) {
+       if (!strcmp(type, commit_type)) {
                entry->type = OBJ_COMMIT;
-       } else if (!strcmp(type, "tree")) {
+       } else if (!strcmp(type, tree_type)) {
                entry->type = OBJ_TREE;
-       } else if (!strcmp(type, "blob")) {
+       } else if (!strcmp(type, blob_type)) {
                entry->type = OBJ_BLOB;
-       } else if (!strcmp(type, "tag")) {
+       } else if (!strcmp(type, tag_type)) {
                entry->type = OBJ_TAG;
        } else
                die("unable to pack object %s of type %s",
@@@ -879,6 -883,7 +883,6 @@@ static int try_delta(struct unpacked *c
  
  static void progress_interval(int signum)
  {
 -      signal(SIGALRM, progress_interval);
        progress_update = 1;
  }
  
@@@ -1024,23 -1029,6 +1028,23 @@@ static int reuse_cached_pack(unsigned c
        return 1;
  }
  
 +static void setup_progress_signal(void)
 +{
 +      struct sigaction sa;
 +      struct itimerval v;
 +
 +      memset(&sa, 0, sizeof(sa));
 +      sa.sa_handler = progress_interval;
 +      sigemptyset(&sa.sa_mask);
 +      sa.sa_flags = SA_RESTART;
 +      sigaction(SIGALRM, &sa, NULL);
 +
 +      v.it_interval.tv_sec = 1;
 +      v.it_interval.tv_usec = 0;
 +      v.it_value = v.it_interval;
 +      setitimer(ITIMER_REAL, &v, NULL);
 +}
 +
  int main(int argc, char **argv)
  {
        SHA_CTX ctx;
        prepare_packed_git();
  
        if (progress) {
 -              struct itimerval v;
 -              v.it_interval.tv_sec = 1;
 -              v.it_interval.tv_usec = 0;
 -              v.it_value = v.it_interval;
 -              signal(SIGALRM, progress_interval);
 -              setitimer(ITIMER_REAL, &v, NULL);
                fprintf(stderr, "Generating pack...\n");
 +              setup_progress_signal();
        }
  
 -      while (fgets(line, sizeof(line), stdin) != NULL) {
 +      for (;;) {
                unsigned char sha1[20];
  
 +              if (!fgets(line, sizeof(line), stdin)) {
 +                      if (feof(stdin))
 +                              break;
 +                      if (!ferror(stdin))
 +                              die("fgets returned NULL, not EOF, not error!");
 +                      if (errno != EINTR)
 +                              die("fgets: %s", strerror(errno));
 +                      clearerr(stdin);
 +                      continue;
 +              }
 +
                if (line[0] == '-') {
                        if (get_sha1_hex(line+1, sha1))
                                die("expected edge sha1, got garbage:\n %s",
diff --combined read-tree.c
@@@ -133,11 -133,9 +133,9 @@@ static int unpack_trees_rec(struct tree
                pathlen = strlen(first);
                ce_size = cache_entry_size(baselen + pathlen);
  
-               src = xmalloc(sizeof(struct cache_entry *) * src_size);
-               memset(src, 0, sizeof(struct cache_entry *) * src_size);
+               src = xcalloc(src_size, sizeof(struct cache_entry *));
  
-               subposns = xmalloc(sizeof(struct tree_list_entry *) * len);
-               memset(subposns, 0, sizeof(struct tree_list_entry *) * len);
+               subposns = xcalloc(len, sizeof(struct tree_list_entry *));
  
                if (cache_name && !strcmp(cache_name, first)) {
                        any_files = 1;
                        else
                                ce_stage = 2;
  
-                       ce = xmalloc(ce_size);
-                       memset(ce, 0, ce_size);
+                       ce = xcalloc(1, ce_size);
                        ce->ce_mode = create_ce_mode(posns[i]->mode);
                        ce->ce_flags = create_ce_flags(baselen + pathlen,
                                                       ce_stage);
@@@ -273,26 -270,10 +270,26 @@@ static void unlink_entry(char *name
  
  static void progress_interval(int signum)
  {
 -      signal(SIGALRM, progress_interval);
        progress_update = 1;
  }
  
 +static void setup_progress_signal(void)
 +{
 +      struct sigaction sa;
 +      struct itimerval v;
 +
 +      memset(&sa, 0, sizeof(sa));
 +      sa.sa_handler = progress_interval;
 +      sigemptyset(&sa.sa_mask);
 +      sa.sa_flags = SA_RESTART;
 +      sigaction(SIGALRM, &sa, NULL);
 +
 +      v.it_interval.tv_sec = 1;
 +      v.it_interval.tv_usec = 0;
 +      v.it_value = v.it_interval;
 +      setitimer(ITIMER_REAL, &v, NULL);
 +}
 +
  static void check_updates(struct cache_entry **src, int nr)
  {
        static struct checkout state = {
        unsigned last_percent = 200, cnt = 0, total = 0;
  
        if (update && verbose_update) {
 -              struct itimerval v;
 -
                for (total = cnt = 0; cnt < nr; cnt++) {
                        struct cache_entry *ce = src[cnt];
                        if (!ce->ce_mode || ce->ce_flags & mask)
                        total = 0;
  
                if (total) {
 -                      v.it_interval.tv_sec = 1;
 -                      v.it_interval.tv_usec = 0;
 -                      v.it_value = v.it_interval;
 -                      signal(SIGALRM, progress_interval);
 -                      setitimer(ITIMER_REAL, &v, NULL);
                        fprintf(stderr, "Checking files out...\n");
 +                      setup_progress_signal();
                        progress_update = 1;
                }
                cnt = 0;
                }
        }
        if (total) {
 -              fputc('\n', stderr);
                signal(SIGALRM, SIG_IGN);
 +              fputc('\n', stderr);
        }
  }