From patchwork Fri Apr 5 18:13:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff King X-Patchwork-Id: 10887713 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6185C1390 for ; Fri, 5 Apr 2019 18:14:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4BA5828AF3 for ; Fri, 5 Apr 2019 18:14:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3DCE928AF7; Fri, 5 Apr 2019 18:14:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DF0AC28AF3 for ; Fri, 5 Apr 2019 18:13:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731612AbfDESN6 (ORCPT ); Fri, 5 Apr 2019 14:13:58 -0400 Received: from cloud.peff.net ([104.130.231.41]:48752 "HELO cloud.peff.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1728683AbfDESN6 (ORCPT ); Fri, 5 Apr 2019 14:13:58 -0400 Received: (qmail 11379 invoked by uid 109); 5 Apr 2019 18:13:58 -0000 Received: from Unknown (HELO peff.net) (10.0.1.2) by cloud.peff.net (qpsmtpd/0.94) with SMTP; Fri, 05 Apr 2019 18:13:58 +0000 Authentication-Results: cloud.peff.net; auth=none Received: (qmail 28385 invoked by uid 111); 5 Apr 2019 18:14:25 -0000 Received: from sigill.intra.peff.net (HELO sigill.intra.peff.net) (10.0.0.7) by peff.net (qpsmtpd/0.94) with (ECDHE-RSA-AES256-GCM-SHA384 encrypted) SMTP; Fri, 05 Apr 2019 14:14:25 -0400 Authentication-Results: peff.net; auth=none Received: by sigill.intra.peff.net (sSMTP sendmail emulation); Fri, 05 Apr 2019 14:13:56 -0400 Date: Fri, 5 Apr 2019 14:13:56 -0400 From: Jeff King To: git@vger.kernel.org Cc: =?utf-8?b?UmVuw6k=?= Scharfe , SZEDER =?utf-8?b?R8OhYm9y?= Subject: [PATCH v2 10/13] server-info: use strbuf to read old info/packs file Message-ID: <20190405181356.GJ32243@sigill.intra.peff.net> References: <20190405180306.GA21113@sigill.intra.peff.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190405180306.GA21113@sigill.intra.peff.net> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This old code uses fgets with a fixed-size buffer. Let's use a strbuf instead, so we don't have to wonder if "1000" is big enough, or what happens if we see a long line. This also lets us drop our custom code to trim the newline. Probably nobody actually cares about the 1000-char limit (after all, the lines generally only say "P pack-[0-9a-f]{40}.pack"), so this is mostly just about cleanup/readability. Signed-off-by: Jeff King --- server-info.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/server-info.c b/server-info.c index ba44cece7f..d4115fecbb 100644 --- a/server-info.c +++ b/server-info.c @@ -131,40 +131,38 @@ static int parse_pack_def(const char *packname, int old_cnt) static int read_pack_info_file(const char *infofile) { FILE *fp; - char line[1000]; + struct strbuf line = STRBUF_INIT; int old_cnt = 0; int stale = 1; fp = fopen_or_warn(infofile, "r"); if (!fp) return 1; /* nonexistent is not an error. */ - while (fgets(line, sizeof(line), fp)) { + while (strbuf_getline(&line, fp) != EOF) { const char *arg; - int len = strlen(line); - if (len && line[len-1] == '\n') - line[--len] = 0; - if (!len) + if (!line.len) continue; - if (skip_prefix(line, "P ", &arg)) { + if (skip_prefix(line.buf, "P ", &arg)) { /* P name */ if (parse_pack_def(arg, old_cnt++)) goto out_stale; - } else if (line[0] == 'D') { + } else if (line.buf[0] == 'D') { /* we used to emit D but that was misguided. */ goto out_stale; - } else if (line[0] == 'T') { + } else if (line.buf[0] == 'T') { /* we used to emit T but nobody uses it. */ goto out_stale; } else { - error("unrecognized: %s", line); + error("unrecognized: %s", line.buf); } } stale = 0; out_stale: + strbuf_release(&line); fclose(fp); return stale; }