Merge branch 'ot/ref-filter-cleanup'
authorJunio C Hamano <gitster@pobox.com>
Thu, 8 Mar 2018 20:36:24 +0000 (12:36 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 8 Mar 2018 20:36:24 +0000 (12:36 -0800)
Code cleanup.

* ot/ref-filter-cleanup:
ref-filter: get rid of goto
ref-filter: get rid of duplicate code

1  2 
ref-filter.c
diff --combined ref-filter.c
index ac9ac6b0c136ae7cdf463abb9638feb6610250cd,be94766f78cc000249f4bea8908662a213b412d4..45fc56216aaa8fd084a10514f6f4912878ab1627
@@@ -529,12 -529,12 +529,12 @@@ static void end_align_handler(struct re
  
  static void align_atom_handler(struct atom_value *atomv, struct ref_formatting_state *state)
  {
 -      struct ref_formatting_stack *new;
 +      struct ref_formatting_stack *new_stack;
  
        push_stack_element(&state->stack);
 -      new = state->stack;
 -      new->at_end = end_align_handler;
 -      new->at_end_data = &atomv->atom->u.align;
 +      new_stack = state->stack;
 +      new_stack->at_end = end_align_handler;
 +      new_stack->at_end_data = &atomv->atom->u.align;
  }
  
  static void if_then_else_handler(struct ref_formatting_stack **stack)
  
  static void if_atom_handler(struct atom_value *atomv, struct ref_formatting_state *state)
  {
 -      struct ref_formatting_stack *new;
 +      struct ref_formatting_stack *new_stack;
        struct if_then_else *if_then_else = xcalloc(sizeof(struct if_then_else), 1);
  
        if_then_else->str = atomv->atom->u.if_then_else.str;
        if_then_else->cmp_status = atomv->atom->u.if_then_else.cmp_status;
  
        push_stack_element(&state->stack);
 -      new = state->stack;
 -      new->at_end = if_then_else_handler;
 -      new->at_end_data = if_then_else;
 +      new_stack = state->stack;
 +      new_stack->at_end = if_then_else_handler;
 +      new_stack->at_end_data = if_then_else;
  }
  
  static int is_empty(const char *s)
@@@ -769,7 -769,7 +769,7 @@@ static void grab_common_values(struct a
                if (deref)
                        name++;
                if (!strcmp(name, "objecttype"))
 -                      v->s = typename(obj->type);
 +                      v->s = type_name(obj->type);
                else if (!strcmp(name, "objectsize")) {
                        v->value = sz;
                        v->s = xstrfmt("%lu", sz);
@@@ -795,7 -795,7 +795,7 @@@ static void grab_tag_values(struct atom
                if (!strcmp(name, "tag"))
                        v->s = tag->tag;
                else if (!strcmp(name, "type") && tag->tagged)
 -                      v->s = typename(tag->tagged->type);
 +                      v->s = type_name(tag->tagged->type);
                else if (!strcmp(name, "object") && tag->tagged)
                        v->s = xstrdup(oid_to_hex(&tag->tagged->oid));
        }
@@@ -1249,8 -1249,8 +1249,8 @@@ static void fill_remote_ref_details(str
        if (atom->u.remote_ref.option == RR_REF)
                *s = show_ref(&atom->u.remote_ref.refname, refname);
        else if (atom->u.remote_ref.option == RR_TRACK) {
 -              if (stat_tracking_info(branch, &num_ours,
 -                                     &num_theirs, NULL)) {
 +              if (stat_tracking_info(branch, &num_ours, &num_theirs,
 +                                     NULL, AHEAD_BEHIND_FULL) < 0) {
                        *s = xstrdup(msgs.gone);
                } else if (!num_ours && !num_theirs)
                        *s = "";
                        free((void *)to_free);
                }
        } else if (atom->u.remote_ref.option == RR_TRACKSHORT) {
 -              if (stat_tracking_info(branch, &num_ours,
 -                                     &num_theirs, NULL))
 +              if (stat_tracking_info(branch, &num_ours, &num_theirs,
 +                                     NULL, AHEAD_BEHIND_FULL) < 0)
                        return;
  
                if (!num_ours && !num_theirs)
@@@ -1354,15 -1354,31 +1354,31 @@@ static const char *get_refname(struct u
        return show_ref(&atom->u.refname, ref->refname);
  }
  
+ static void get_object(struct ref_array_item *ref, const struct object_id *oid,
+                      int deref, struct object **obj)
+ {
+       int eaten;
+       unsigned long size;
+       void *buf = get_obj(oid, obj, &size, &eaten);
+       if (!buf)
+               die(_("missing object %s for %s"),
+                   oid_to_hex(oid), ref->refname);
+       if (!*obj)
+               die(_("parse_object_buffer failed on %s for %s"),
+                   oid_to_hex(oid), ref->refname);
+       grab_values(ref->value, deref, *obj, buf, size);
+       if (!eaten)
+               free(buf);
+ }
  /*
   * Parse the object referred by ref, and grab needed value.
   */
  static void populate_value(struct ref_array_item *ref)
  {
-       void *buf;
        struct object *obj;
-       int eaten, i;
-       unsigned long size;
+       int i;
        const struct object_id *tagged;
  
        ref->value = xcalloc(used_atom_cnt, sizeof(struct atom_value));
        for (i = 0; i < used_atom_cnt; i++) {
                struct atom_value *v = &ref->value[i];
                if (v->s == NULL)
-                       goto need_obj;
+                       break;
        }
-       return;
+       if (used_atom_cnt <= i)
+               return;
  
-  need_obj:
-       buf = get_obj(&ref->objectname, &obj, &size, &eaten);
-       if (!buf)
-               die(_("missing object %s for %s"),
-                   oid_to_hex(&ref->objectname), ref->refname);
-       if (!obj)
-               die(_("parse_object_buffer failed on %s for %s"),
-                   oid_to_hex(&ref->objectname), ref->refname);
-       grab_values(ref->value, 0, obj, buf, size);
-       if (!eaten)
-               free(buf);
+       get_object(ref, &ref->objectname, 0, &obj);
  
        /*
         * If there is no atom that wants to know about tagged
         * is not consistent with what deref_tag() does
         * which peels the onion to the core.
         */
-       buf = get_obj(tagged, &obj, &size, &eaten);
-       if (!buf)
-               die(_("missing object %s for %s"),
-                   oid_to_hex(tagged), ref->refname);
-       if (!obj)
-               die(_("parse_object_buffer failed on %s for %s"),
-                   oid_to_hex(tagged), ref->refname);
-       grab_values(ref->value, 1, obj, buf, size);
-       if (!eaten)
-               free(buf);
+       get_object(ref, tagged, 1, &obj);
  }
  
  /*
@@@ -1995,7 -1992,8 +1992,7 @@@ static void do_merge_filter(struct ref_
                        free_array_item(item);
        }
  
 -      for (i = 0; i < old_nr; i++)
 -              clear_commit_marks(to_clear[i], ALL_REV_FLAGS);
 +      clear_commit_marks_many(old_nr, to_clear, ALL_REV_FLAGS);
        clear_commit_marks(filter->merge_commit, ALL_REV_FLAGS);
        free(to_clear);
  }