From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2119) id 831D53858416; Tue, 6 Jun 2023 03:11:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 831D53858416 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1686021079; bh=TVLrxRc7rNNDH8o8mx2rsWArURQmPf8qKy+YH41kdb4=; h=From:To:Subject:Date:From; b=JPoyCmF+BioIpcpQSRKi4+ikM9BEPFFA2DV1bbnGxcaU3hGSixUglAmxqF8PnaWl6 DJ3mvGJ3iCH/rjsiSpAoWEoVcOkYwYg9Pb0KdA/hqeop8H3jxVn7Yxof7k/vkqMVej SoxZ0Ek/tu1O9WfcIHKtdRfJu2CGOBfrwzN/PqF8= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jeff Law To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-1560] libiberty: writeargv: Simplify function error mode. X-Act-Checkin: gcc X-Git-Author: Costas Argyris X-Git-Refname: refs/heads/master X-Git-Oldrev: 9677cc7496ffe44c5b483658ce30361519576537 X-Git-Newrev: 4d1e4ce986f84a853531ac9c51e37d101e28d15c Message-Id: <20230606031119.831D53858416@sourceware.org> Date: Tue, 6 Jun 2023 03:11:19 +0000 (GMT) List-Id: https://gcc.gnu.org/g:4d1e4ce986f84a853531ac9c51e37d101e28d15c commit r14-1560-g4d1e4ce986f84a853531ac9c51e37d101e28d15c Author: Costas Argyris Date: Mon Jun 5 21:10:26 2023 -0600 libiberty: writeargv: Simplify function error mode. writeargv can be simplified by getting rid of the error exit mode that was only relevant many years ago when the function used to open the file descriptor internally. 0001-libiberty-writeargv-Simplify-function-error-mode.patch From 1271552baee5561fa61652f4ca7673c9667e4f8f Mon Sep 17 00:00:00 2001 From: Costas Argyris Date: Mon, 5 Jun 2023 15:02:06 +0100 Subject: [PATCH] libiberty: writeargv: Simplify function error mode. The goto-based error mode was based on a previous version of the function where it was responsible for opening the file, so it had to close it upon any exit: https://inbox.sourceware.org/gcc-patches/20070417200340.GM9017@sparrowhawk.codesourcery.com/ (thanks pinskia) This is no longer the case though since now the function takes the file descriptor as input, so the exit mode on error can be just a simple return 1 statement. libiberty/ * argv.c (writeargv): Simplify & remove gotos. Signed-off-by: Costas Argyris Diff: --- libiberty/argv.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/libiberty/argv.c b/libiberty/argv.c index a95a10e14ff..1a18b4d8866 100644 --- a/libiberty/argv.c +++ b/libiberty/argv.c @@ -289,8 +289,8 @@ char **buildargv (const char *input) @deftypefn Extension int writeargv (char * const *@var{argv}, FILE *@var{file}) Write each member of ARGV, handling all necessary quoting, to the file -named by FILE, separated by whitespace. Return 0 on success, non-zero -if an error occurred while writing to FILE. +associated with FILE, separated by whitespace. Return 0 on success, +non-zero if an error occurred while writing to FILE. @end deftypefn @@ -314,36 +314,25 @@ writeargv (char * const *argv, FILE *f) if (ISSPACE(c) || c == '\\' || c == '\'' || c == '"') if (EOF == fputc ('\\', f)) - { - status = 1; - goto done; - } + return 1; if (EOF == fputc (c, f)) - { - status = 1; - goto done; - } + return 1; + arg++; } /* Write out a pair of quotes for an empty argument. */ if (arg == *argv) - if (EOF == fputs ("\"\"", f)) - { - status = 1; - goto done; - } + if (EOF == fputs ("\"\"", f)) + return 1; if (EOF == fputc ('\n', f)) - { - status = 1; - goto done; - } + return 1; + argv++; } - done: return status; }