From patchwork Mon Feb 17 12:16:54 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 3662891 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 61390BF13A for ; Mon, 17 Feb 2014 12:17:16 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 94D642013A for ; Mon, 17 Feb 2014 12:17:15 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id A79E6200E8 for ; Mon, 17 Feb 2014 12:17:14 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4341AFA721; Mon, 17 Feb 2014 04:17:13 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTP id A5858FA721 for ; Mon, 17 Feb 2014 04:17:02 -0800 (PST) Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HCH20p021500 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 17 Feb 2014 07:17:02 -0500 Received: from shalem.localdomain.com (vpn1-7-24.ams2.redhat.com [10.36.7.24]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1HCGu7i010532; Mon, 17 Feb 2014 07:17:00 -0500 From: Hans de Goede To: intel-gfx@lists.freedesktop.org Date: Mon, 17 Feb 2014 13:16:54 +0100 Message-Id: <1392639414-3909-5-git-send-email-hdegoede@redhat.com> In-Reply-To: <1392639414-3909-1-git-send-email-hdegoede@redhat.com> References: <1392639414-3909-1-git-send-email-hdegoede@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 Cc: peter.hutterer@redhat.com Subject: [Intel-gfx] [PATCH 4/4] backlight-helper: Simplify reading the level from stdin X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Since the helper is a standalone app, the usual xserver rules of not using stdio because of signal handling don't apply. And since the helper does run with elevated rights, it is important to keep the code KISS so that it can be audited easily. This commit replaces the hard to read "raw" read loop with a much simpler loop using fgets, improving readability of the code. Signed-off-by: Hans de Goede --- tools/backlight_helper.c | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/tools/backlight_helper.c b/tools/backlight_helper.c index fc16fce..11abebc 100644 --- a/tools/backlight_helper.c +++ b/tools/backlight_helper.c @@ -9,7 +9,7 @@ int main(int argc, char *argv[]) { struct stat st; - char buf[1024], *b = buf; + char buf[1024]; int len, fd; if (argc != 2) { @@ -24,27 +24,12 @@ int main(int argc, char *argv[]) return 1; } - while ((len = read(0, b, sizeof(buf) - (b - buf) - 1)) > 0) { - len += b - buf; - buf[len] = '\0'; - - b = buf; - do { - char *end = strchr(b, '\n'); - if (end == NULL) - break; - - ++end; - if (write(fd, b, end - b) != end - b) { - fprintf(stderr, "Failed to update backlight interface '%s'\n", argv[1]); - return 2; - } - - b = end; - } while (1); - - memmove(buf, b, len = buf + len - b); - b = buf + len; + while (fgets(buf, sizeof(buf), stdin)) { + len = strlen(buf); + if (write(fd, buf, len) != len) { + fprintf(stderr, "Failed to update backlight interface '%s'\n", argv[1]); + return 2; + } } return 0;