ref-filter: add objectsize:disk option
Add new formatting option objectsize:disk to know exact size that object takes up on disk. Signed-off-by: Olga Telezhnaia <olyatelezhnaya@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Olga Telezhnaya committed
Dec 24, 2018 at 13:24 UTC
1867ce6cbec9c8f23f958cb675de129fcd6471a4
1 file changed
+16
-7
ref-filter.c
+16
-7
@@ -231,12 +231,18 @@ static int objecttype_atom_parser(const struct ref_format *format, struct used_a
231
static int objectsize_atom_parser(const struct ref_format *format, struct used_atom *atom,
232
const char *arg, struct strbuf *err)
233
{
234
- if (arg)
235
- return strbuf_addf_ret(err, -1, _("%%(objectsize) does not take arguments"));
236
- if (*atom->name == '*')
237
- oi_deref.info.sizep = &oi_deref.size;
238
- else
239
- oi.info.sizep = &oi.size;
234
+ if (!arg) {
235
+ if (*atom->name == '*')
236
+ oi_deref.info.sizep = &oi_deref.size;
237
+ else
238
+ oi.info.sizep = &oi.size;
239
+ } else if (!strcmp(arg, "disk")) {
240
+ if (*atom->name == '*')
241
+ oi_deref.info.disk_sizep = &oi_deref.disk_size;
242
+ else
243
+ oi.info.disk_sizep = &oi.disk_size;
244
+ } else
245
+ return strbuf_addf_ret(err, -1, _("unrecognized %%(objectsize) argument: %s"), arg);
246
return 0;
247
}
248
@@ -876,7 +882,10 @@ static void grab_common_values(struct atom_value *val, int deref, struct expand_
882
name++;
883
if (!strcmp(name, "objecttype"))
884
v->s = xstrdup(type_name(oi->type));
879
- else if (!strcmp(name, "objectsize")) {
885
+ else if (!strcmp(name, "objectsize:disk")) {
886
+ v->value = oi->disk_size;
887
+ v->s = xstrfmt("%"PRIuMAX, (intmax_t)oi->disk_size);
888
+ } else if (!strcmp(name, "objectsize")) {
889
v->value = oi->size;
890
v->s = xstrfmt("%lu", oi->size);
891
}