[pacman-dev,v3,2/5] pacman-conf.c: simplify usage()

Message ID 20180211041513.18835-2-iff@escondida.tk
State Rejected, archived
Delegated to: Andrew Gregory
Headers show
Series [pacman-dev,v3,1/5] pacman-conf.c: accept short options | expand

Commit Message

Ivy Foster Feb. 11, 2018, 4:15 a.m. UTC
From: Ivy Foster <iff@escondida.tk>

Signed-off-by: Ivy Foster <iff@escondida.tk>
---
 src/pacman/pacman-conf.c | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

Comments

Andrew Gregory Feb. 11, 2018, 6:15 a.m. UTC | #1
On 02/10/18 at 10:15pm, iff@escondida.tk wrote:
> From: Ivy Foster <iff@escondida.tk>
> 
> Signed-off-by: Ivy Foster <iff@escondida.tk>
> ---

There are two major changes here: adding short options to the usage
and the "simplification" of the usage function.  The short options
should be added in the patch that made them available, not here.  The
other changes need some sort of justification.  It's not obvious to me
that this is simpler.  Sure usage itself is a bit simpler, but now
parse_opts has to worry about calling cleanup and exit.

Other patches in this set similarly lack justification: using atexit
and EXIT_SUCCESS/EXIT_FAILURE and limiting parse_opts to command-line
options.

>  src/pacman/pacman-conf.c | 40 ++++++++++++++++++++--------------------
>  1 file changed, 20 insertions(+), 20 deletions(-)
> 
> diff --git a/src/pacman/pacman-conf.c b/src/pacman/pacman-conf.c
> index 3c9a80e2..9136b262 100644
> --- a/src/pacman/pacman-conf.c
> +++ b/src/pacman/pacman-conf.c
> @@ -34,24 +34,21 @@ static void cleanup(void)
>  	config_free(config);
>  }
>  
> -static void usage(int ret)
> +static void usage(FILE *stream)
>  {
> -	FILE *stream = (ret ? stderr : stdout);
> -#define hputs(x) fputs(x"\n", stream)
> -	hputs("pacman-conf - query pacman's configuration file");
> -	hputs("usage:  pacman-conf [options] [<directive>...]");
> -	hputs("        pacman-conf (--repo-list|--help|--version)");
> -	hputs("options:");
> -	hputs("  --config=<path>  set an alternate configuration file");
> -	hputs("  --rootdir=<path> set an alternate installation root");
> -	hputs("  --repo=<remote>  query options for a specific repo");
> -	hputs("  --verbose        always show directive names");
> -	hputs("  --repo-list      list configured repositories");
> -	hputs("  --help           display this help information");
> -	hputs("  --version        display version information");
> -#undef hputs
> -	cleanup();
> -	exit(ret);
> +	static const char help[] =
> +		"pacman-conf: query pacman's configuration file\n"
> +		"usage: pacman-conf [options] [directive]\n"
> +		"       pacman-conf [ { -l, --repo-list } | { -h, --help } | { -V, --version } ]\n"
> +		"options:\n"
> +		"    -c, --config=<file>  Read configuration from <file>\n"
> +		"    -h, --help           Print help\n"
> +		"    -l, --repo-list      List configured repositories\n"
> +		"    -r, --repo=<remote>  Query options for a specific repo\n"
> +		"    -R, --rootdir=<dir>  Use <dir> as system root\n"
> +		"    -v, --verbose        Always show directive names\n"
> +		"    -V, --version        Print version\n";
> +	fprintf(stream, "%s", help);
>  }
>  
>  static void parse_opts(int argc, char **argv)
> @@ -89,8 +86,9 @@ static void parse_opts(int argc, char **argv)
>  				verbose = 1;
>  				break;
>  			case 'h':
> -				usage(0);
> -				break;
> +				usage(stdout);
> +				cleanup();
> +				exit(0);
>  			case 'V':
>  				printf("%s v%s\n", myname, myver);
>  				cleanup();
> @@ -98,7 +96,9 @@ static void parse_opts(int argc, char **argv)
>  				break;
>  			case '?':
>  			default:
> -				usage(1);
> +				usage(stderr);
> +				cleanup();
> +				exit(1);
>  				break;
>  		}
>  	}
> -- 
> 2.16.1

Patch

diff --git a/src/pacman/pacman-conf.c b/src/pacman/pacman-conf.c
index 3c9a80e2..9136b262 100644
--- a/src/pacman/pacman-conf.c
+++ b/src/pacman/pacman-conf.c
@@ -34,24 +34,21 @@  static void cleanup(void)
 	config_free(config);
 }
 
-static void usage(int ret)
+static void usage(FILE *stream)
 {
-	FILE *stream = (ret ? stderr : stdout);
-#define hputs(x) fputs(x"\n", stream)
-	hputs("pacman-conf - query pacman's configuration file");
-	hputs("usage:  pacman-conf [options] [<directive>...]");
-	hputs("        pacman-conf (--repo-list|--help|--version)");
-	hputs("options:");
-	hputs("  --config=<path>  set an alternate configuration file");
-	hputs("  --rootdir=<path> set an alternate installation root");
-	hputs("  --repo=<remote>  query options for a specific repo");
-	hputs("  --verbose        always show directive names");
-	hputs("  --repo-list      list configured repositories");
-	hputs("  --help           display this help information");
-	hputs("  --version        display version information");
-#undef hputs
-	cleanup();
-	exit(ret);
+	static const char help[] =
+		"pacman-conf: query pacman's configuration file\n"
+		"usage: pacman-conf [options] [directive]\n"
+		"       pacman-conf [ { -l, --repo-list } | { -h, --help } | { -V, --version } ]\n"
+		"options:\n"
+		"    -c, --config=<file>  Read configuration from <file>\n"
+		"    -h, --help           Print help\n"
+		"    -l, --repo-list      List configured repositories\n"
+		"    -r, --repo=<remote>  Query options for a specific repo\n"
+		"    -R, --rootdir=<dir>  Use <dir> as system root\n"
+		"    -v, --verbose        Always show directive names\n"
+		"    -V, --version        Print version\n";
+	fprintf(stream, "%s", help);
 }
 
 static void parse_opts(int argc, char **argv)
@@ -89,8 +86,9 @@  static void parse_opts(int argc, char **argv)
 				verbose = 1;
 				break;
 			case 'h':
-				usage(0);
-				break;
+				usage(stdout);
+				cleanup();
+				exit(0);
 			case 'V':
 				printf("%s v%s\n", myname, myver);
 				cleanup();
@@ -98,7 +96,9 @@  static void parse_opts(int argc, char **argv)
 				break;
 			case '?':
 			default:
-				usage(1);
+				usage(stderr);
+				cleanup();
+				exit(1);
 				break;
 		}
 	}