From: karthik nayak <karthik.188@gmail.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: Git List <git@vger.kernel.org>, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v8 1/4] sha1_file.c: support reading from a loose object of unknown type
Date: Sat, 18 Apr 2015 14:33:06 +0530 [thread overview]
Message-ID: <55321DCA.8030801@gmail.com> (raw)
In-Reply-To: <CAPig+cSiYsF6ioi+-P_BP=1bs-EAtNdAGjSqw6KmZyE39rKWBA@mail.gmail.com>
On 04/18/2015 05:01 AM, Eric Sunshine wrote:
> On Wed, Apr 15, 2015 at 12:59 PM, Karthik Nayak <karthik.188@gmail.com> wrote:
>> Update sha1_loose_object_info() to optionally allow it to read
>> from a loose object file of unknown/bogus type; as the function
>> usually returns the type of the object it read in the form of enum
>> for known types, add an optional "typename" field to receive the
>> name of the type in textual form and a flag to indicate the reading
>> of a loose object file of unknown/bogus type.
>> [...]
>> ---
>> diff --git a/sha1_file.c b/sha1_file.c
>> index 980ce6b..267399d 100644
>> --- a/sha1_file.c
>> +++ b/sha1_file.c
>> @@ -2522,13 +2575,15 @@ struct packed_git *find_sha1_pack(const unsigned char *sha1,
>> }
>>
>> static int sha1_loose_object_info(const unsigned char *sha1,
>> - struct object_info *oi)
>> + struct object_info *oi,
>> + int flags)
>> {
>> - int status;
>> - unsigned long mapsize, size;
>> + int status = 0;
>> + unsigned long mapsize;
>> void *map;
>> git_zstream stream;
>> char hdr[32];
>> + struct strbuf hdrbuf = STRBUF_INIT;
>>
>> if (oi->delta_base_sha1)
>> hashclr(oi->delta_base_sha1);
>> @@ -2555,17 +2610,26 @@ static int sha1_loose_object_info(const unsigned char *sha1,
>> return -1;
>> if (oi->disk_sizep)
>> *oi->disk_sizep = mapsize;
>> - if (unpack_sha1_header(&stream, map, mapsize, hdr, sizeof(hdr)) < 0)
>> - status = error("unable to unpack %s header",
>> - sha1_to_hex(sha1));
>> - else if ((status = parse_sha1_header(hdr, &size)) < 0)
>> - status = error("unable to parse %s header", sha1_to_hex(sha1));
>> - else if (oi->sizep)
>> - *oi->sizep = size;
>> + if ((flags & LOOKUP_LITERALLY)) {
>> + if (unpack_sha1_header_to_strbuf(&stream, map, mapsize, &hdrbuf) < 0)
>> + status = error("unable to unpack %s header with --literally",
>> + sha1_to_hex(sha1));
>> + else if ((status = parse_sha1_header_extended(hdrbuf.buf, oi, flags)) < 0)
>> + status = error("unable to parse %s header with --literally",
>> + sha1_to_hex(sha1));
>> + } else {
>> + if (unpack_sha1_header(&stream, map, mapsize, hdr, sizeof(hdr)) < 0)
>> + status = error("unable to unpack %s header",
>> + sha1_to_hex(sha1));
>> + else if ((status = parse_sha1_header_extended(hdr, oi, flags)) < 0)
>> + status = error("unable to parse %s header", sha1_to_hex(sha1));
>> + }
>> git_inflate_end(&stream);
>> munmap(map, mapsize);
>> - if (oi->typep)
>> + if (status && oi->typep)
>> *oi->typep = status;
>> + if (hdrbuf.buf)
>> + strbuf_release(&hdrbuf);
>
> Why is strbuf_release() protected by a conditional rather than being
> called unconditionally? Am I missing something obvious?
No, you're right.
>
>> return 0;
>> }
>>
next prev parent reply other threads:[~2015-04-18 9:03 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-15 16:55 [PATCH v8 0/4] cat-file: teach cat-file a '--literally' option karthik nayak
2015-04-15 16:59 ` [PATCH v8 1/4] sha1_file.c: support reading from a loose object of unknown type Karthik Nayak
2015-04-15 20:21 ` Junio C Hamano
2015-04-15 22:18 ` Jeff King
2015-04-17 14:23 ` Jeff King
2015-04-17 16:21 ` Junio C Hamano
2015-04-17 20:51 ` Jeff King
2015-04-17 21:10 ` Junio C Hamano
2015-04-20 18:43 ` karthik nayak
2015-04-20 18:51 ` Jeff King
2015-04-21 11:26 ` karthik nayak
2015-04-21 14:24 ` Jeff King
2015-04-17 18:45 ` karthik nayak
2015-04-17 18:49 ` Jeff King
2015-04-18 8:31 ` karthik nayak
2015-04-17 19:23 ` Junio C Hamano
2015-04-18 8:32 ` karthik nayak
2015-04-17 23:31 ` Eric Sunshine
2015-04-18 9:03 ` karthik nayak [this message]
2015-04-15 16:59 ` [PATCH v8 2/4] cat-file: teach cat-file a '--literally' option Karthik Nayak
2015-04-15 20:20 ` Junio C Hamano
2015-04-15 20:52 ` Junio C Hamano
2015-04-16 7:26 ` karthik nayak
2015-04-16 13:35 ` Junio C Hamano
2015-04-17 2:10 ` Karthik Nayak
2015-04-17 2:14 ` Junio C Hamano
2015-04-19 0:28 ` Charles Bailey
2015-04-20 5:30 ` Junio C Hamano
2015-04-20 7:44 ` Charles Bailey
2015-04-20 8:57 ` Karthik Nayak
2015-04-20 9:19 ` Charles Bailey
2015-04-20 15:52 ` karthik nayak
2015-04-21 10:16 ` Charles Bailey
2015-04-21 19:40 ` Eric Sunshine
2015-04-21 20:36 ` Junio C Hamano
2015-04-25 11:22 ` karthik nayak
2015-04-25 17:04 ` Junio C Hamano
2015-04-27 11:57 ` karthik nayak
2015-04-27 18:38 ` Eric Sunshine
2015-04-28 12:03 ` karthik nayak
2015-04-15 17:00 ` [PATCH v8 3/4] cat-file: add documentation for " Karthik Nayak
2015-04-15 17:00 ` [PATCH v8 4/4] t1006: add tests for git cat-file --literally Karthik Nayak
2015-04-18 0:00 ` Eric Sunshine
2015-04-18 5:22 ` karthik nayak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55321DCA.8030801@gmail.com \
--to=karthik.188@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.