Merge branch 'jt/fsck-code-cleanup'
authorJunio C Hamano <gitster@pobox.com>
Fri, 11 Aug 2017 20:26:59 +0000 (13:26 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 11 Aug 2017 20:27:00 +0000 (13:27 -0700)
Code clean-up.

* jt/fsck-code-cleanup:
fsck: cleanup unused variable
object: remove "used" field from struct object
fsck: remove redundant parse_tree() invocation

1  2 
builtin/fsck.c
diff --combined builtin/fsck.c
index 0e5a18e843b6dab11bd952886f00da3804d10dc0,64542ac3dea48e3a92901319233aa3a1e0c4cb9a..a92f44818610784091f8aac5ea14612be59cd184
@@@ -19,6 -19,8 +19,8 @@@
  #define REACHABLE 0x0001
  #define SEEN      0x0002
  #define HAS_OBJ   0x0004
+ /* This flag is set if something points to this object. */
+ #define USED      0x0008
  
  static int show_root;
  static int show_tags;
@@@ -168,18 -170,7 +170,7 @@@ static void mark_object_reachable(struc
  
  static int traverse_one_object(struct object *obj)
  {
-       int result;
-       struct tree *tree = NULL;
-       if (obj->type == OBJ_TREE) {
-               tree = (struct tree *)obj;
-               if (parse_tree(tree) < 0)
-                       return 1; /* error already displayed */
-       }
-       result = fsck_walk(obj, obj, &fsck_walk_options);
-       if (tree)
-               free_tree_buffer(tree);
-       return result;
+       return fsck_walk(obj, obj, &fsck_walk_options);
  }
  
  static int traverse_reachable(void)
@@@ -206,7 -197,7 +197,7 @@@ static int mark_used(struct object *obj
  {
        if (!obj)
                return 1;
-       obj->used = 1;
+       obj->flags |= USED;
        return 0;
  }
  
@@@ -255,7 -246,7 +246,7 @@@ static void check_unreachable_object(st
        }
  
        /*
-        * "!used" means that nothing at all points to it, including
+        * "!USED" means that nothing at all points to it, including
         * other unreachable objects. In other words, it's the "tip"
         * of some set of unreachable objects, usually a commit that
         * got dropped.
         * deleted a branch by mistake, this is a prime candidate to
         * start looking at, for example.
         */
-       if (!obj->used) {
+       if (!(obj->flags & USED)) {
                if (show_dangling)
                        printf("dangling %s %s\n", printable_type(obj),
                               describe_object(obj));
@@@ -390,7 -381,8 +381,8 @@@ static int fsck_obj_buffer(const struc
                errors_found |= ERROR_OBJECT;
                return error("%s: object corrupt or missing", oid_to_hex(oid));
        }
-       obj->flags = HAS_OBJ;
+       obj->flags &= ~(REACHABLE | SEEN);
+       obj->flags |= HAS_OBJ;
        return fsck_obj(obj);
  }
  
@@@ -408,7 -400,7 +400,7 @@@ static void fsck_handle_reflog_oid(cons
                                add_decoration(fsck_walk_options.object_names,
                                        obj,
                                        xstrfmt("%s@{%"PRItime"}", refname, timestamp));
-                       obj->used = 1;
+                       obj->flags |= USED;
                        mark_object_reachable(obj);
                } else {
                        error("%s: invalid reflog entry %s", refname, oid_to_hex(oid));
@@@ -456,7 -448,7 +448,7 @@@ static int fsck_handle_ref(const char *
                errors_found |= ERROR_REFS;
        }
        default_refs++;
-       obj->used = 1;
+       obj->flags |= USED;
        if (name_objects)
                add_decoration(fsck_walk_options.object_names,
                        obj, xstrdup(refname));
@@@ -524,7 -516,8 +516,8 @@@ static int fsck_loose(const struct obje
                return 0; /* keep checking other objects */
        }
  
-       obj->flags = HAS_OBJ;
+       obj->flags &= ~(REACHABLE | SEEN);
+       obj->flags |= HAS_OBJ;
        if (fsck_obj(obj))
                errors_found |= ERROR_OBJECT;
        return 0;
@@@ -606,7 -599,7 +599,7 @@@ static int fsck_cache_tree(struct cache
                        errors_found |= ERROR_REFS;
                        return 1;
                }
-               obj->used = 1;
+               obj->flags |= USED;
                if (name_objects)
                        add_decoration(fsck_walk_options.object_names,
                                obj, xstrdup(":"));
@@@ -667,7 -660,7 +660,7 @@@ static struct option fsck_opts[] = 
  
  int cmd_fsck(int argc, const char **argv, const char *prefix)
  {
-       int i, heads;
+       int i;
        struct alternate_object_database *alt;
  
        errors_found = 0;
                }
        }
  
-       heads = 0;
        for (i = 0; i < argc; i++) {
                const char *arg = argv[i];
 -              unsigned char sha1[20];
 -              if (!get_sha1(arg, sha1)) {
 -                      struct object *obj = lookup_object(sha1);
 +              struct object_id oid;
 +              if (!get_oid(arg, &oid)) {
 +                      struct object *obj = lookup_object(oid.hash);
  
                        if (!obj || !(obj->flags & HAS_OBJ)) {
 -                              error("%s: object missing", sha1_to_hex(sha1));
 +                              error("%s: object missing", oid_to_hex(&oid));
                                errors_found |= ERROR_OBJECT;
                                continue;
                        }
  
-                       obj->used = 1;
+                       obj->flags |= USED;
                        if (name_objects)
                                add_decoration(fsck_walk_options.object_names,
                                        obj, xstrdup(arg));
                        mark_object_reachable(obj);
-                       heads++;
                        continue;
                }
                error("invalid parameter: expected sha1, got '%s'", arg);
                        if (!blob)
                                continue;
                        obj = &blob->object;
-                       obj->used = 1;
+                       obj->flags |= USED;
                        if (name_objects)
                                add_decoration(fsck_walk_options.object_names,
                                        obj,