[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 04/42] ivshmem-server: Fix and clean up comma
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH v2 04/42] ivshmem-server: Fix and clean up command line help |
Date: |
Wed, 9 Mar 2016 13:44:13 +0100 |
On Mon, Mar 7, 2016 at 8:25 PM, Markus Armbruster <address@hidden> wrote:
> Burying error messages in ~20 lines of usage help is bad form. Print
> a single line pointing to -h instead.
>
> Print -h help to stdout rather than stderr. Fix default of -p. Clean
> up the help text a bit.
>
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
Reviewed-by: Marc-André Lureau <address@hidden>
> contrib/ivshmem-server/main.c | 63
> ++++++++++++++++++++++++-------------------
> 1 file changed, 35 insertions(+), 28 deletions(-)
>
> diff --git a/contrib/ivshmem-server/main.c b/contrib/ivshmem-server/main.c
> index cca1061..e9b4388 100644
> --- a/contrib/ivshmem-server/main.c
> +++ b/contrib/ivshmem-server/main.c
> @@ -33,31 +33,32 @@ typedef struct IvshmemServerArgs {
> unsigned n_vectors;
> } IvshmemServerArgs;
>
> -/* show ivshmem_server_usage and exit with given error code */
> static void
> -ivshmem_server_usage(const char *name, int code)
> +ivshmem_server_usage(const char *progname)
> {
> - fprintf(stderr, "%s [opts]\n", name);
> - fprintf(stderr, " -h: show this help\n");
> - fprintf(stderr, " -v: verbose mode\n");
> - fprintf(stderr, " -F: foreground mode (default is to daemonize)\n");
> - fprintf(stderr, " -p <pid_file>: path to the PID file (used in daemon\n"
> - " mode only).\n"
> - " Default=%s\n", IVSHMEM_SERVER_DEFAULT_SHM_PATH);
> - fprintf(stderr, " -S <unix_socket_path>: path to the unix socket\n"
> - " to listen to.\n"
> - " Default=%s\n",
> IVSHMEM_SERVER_DEFAULT_UNIX_SOCK_PATH);
> - fprintf(stderr, " -m <shm_path>: path to the shared memory.\n"
> - " The path corresponds to a POSIX shm name or a\n"
> - " hugetlbfs mount point.\n"
> - " default=%s\n", IVSHMEM_SERVER_DEFAULT_SHM_PATH);
> - fprintf(stderr, " -l <size>: size of shared memory in bytes. The
> suffix\n"
> - " K, M and G can be used (ex: 1K means 1024).\n"
> - " default=%u\n", IVSHMEM_SERVER_DEFAULT_SHM_SIZE);
> - fprintf(stderr, " -n <n_vects>: number of vectors.\n"
> - " default=%u\n", IVSHMEM_SERVER_DEFAULT_N_VECTORS);
> + printf("Usage: %s [OPTION]...\n"
> + " -h: show this help\n"
> + " -v: verbose mode\n"
> + " -F: foreground mode (default is to daemonize)\n"
> + " -p <pid_file>: path to the PID file (used in daemon mode
> only)\n"
> + " default " IVSHMEM_SERVER_DEFAULT_PID_FILE "\n"
> + " -S <unix_socket_path>: path to the unix socket to listen to\n"
> + " default " IVSHMEM_SERVER_DEFAULT_UNIX_SOCK_PATH "\n"
> + " -m <shm_path>: POSIX shared memory object name or a hugetlbfs
> mount point\n"
> + " default " IVSHMEM_SERVER_DEFAULT_SHM_PATH "\n"
> + " -l <size>: size of shared memory in bytes\n"
> + " suffixes K, M and G can be used, e.g. 1K means 1024\n"
> + " default %u\n"
> + " -n <n_vectors>: number of vectors\n"
> + " default %u\n",
> + progname, IVSHMEM_SERVER_DEFAULT_SHM_SIZE,
> + IVSHMEM_SERVER_DEFAULT_N_VECTORS);
> +}
>
> - exit(code);
> +static void
> +ivshmem_server_help(const char *progname)
> +{
> + fprintf(stderr, "Try '%s -h' for more information.\n", progname);
> }
>
> /* parse the program arguments, exit on error */
> @@ -81,7 +82,8 @@ ivshmem_server_parse_args(IvshmemServerArgs *args, int
> argc, char *argv[])
>
> switch (c) {
> case 'h': /* help */
> - ivshmem_server_usage(argv[0], 0);
> + ivshmem_server_usage(argv[0]);
> + exit(0);
> break;
>
> case 'v': /* verbose */
> @@ -108,20 +110,23 @@ ivshmem_server_parse_args(IvshmemServerArgs *args, int
> argc, char *argv[])
> parse_option_size("shm_size", optarg, &args->shm_size, &err);
> if (err) {
> error_report_err(err);
> - ivshmem_server_usage(argv[0], 1);
> + ivshmem_server_help(argv[0]);
> + exit(1);
> }
> break;
>
> case 'n': /* n_vectors */
> if (parse_uint_full(optarg, &v, 0) < 0) {
> fprintf(stderr, "cannot parse n_vectors\n");
> - ivshmem_server_usage(argv[0], 1);
> + ivshmem_server_help(argv[0]);
> + exit(1);
> }
> args->n_vectors = v;
> break;
>
> default:
> - ivshmem_server_usage(argv[0], 1);
> + ivshmem_server_usage(argv[0]);
> + exit(1);
> break;
> }
> }
> @@ -129,12 +134,14 @@ ivshmem_server_parse_args(IvshmemServerArgs *args, int
> argc, char *argv[])
> if (args->n_vectors > IVSHMEM_SERVER_MAX_VECTORS) {
> fprintf(stderr, "too many requested vectors (max is %d)\n",
> IVSHMEM_SERVER_MAX_VECTORS);
> - ivshmem_server_usage(argv[0], 1);
> + ivshmem_server_help(argv[0]);
> + exit(1);
> }
>
> if (args->verbose == 1 && args->foreground == 0) {
> fprintf(stderr, "cannot use verbose in daemon mode\n");
> - ivshmem_server_usage(argv[0], 1);
> + ivshmem_server_help(argv[0]);
> + exit(1);
> }
> }
>
> --
> 2.4.3
>
>
--
Marc-André Lureau
- [Qemu-devel] [PATCH v2 00/42] ivshmem: Fixes, cleanups, device model split, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 10/42] ivshmem-test: Clean up wait for devices to become operational, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 11/42] ivshmem-test: Improve test cases /ivshmem/server-*, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 04/42] ivshmem-server: Fix and clean up command line help, Markus Armbruster, 2016/03/07
- Re: [Qemu-devel] [PATCH v2 04/42] ivshmem-server: Fix and clean up command line help,
Marc-André Lureau <=
- [Qemu-devel] [PATCH v2 13/42] ivshmem: Add missing newlines to debug printfs, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 01/42] exec: Fix memory allocation when memory path names new file, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 09/42] ivshmem-test: Improve test case /ivshmem/single, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 14/42] ivshmem: Compile debug prints unconditionally to prevent bit-rot, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 08/42] tests/libqos/pci-pc: Fix qpci_pc_iomap() to map BARs aligned, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 19/42] ivshmem: Failed realize() can leave migration blocker behind, Markus Armbruster, 2016/03/07
- [Qemu-devel] [PATCH v2 02/42] exec: Fix memory allocation when memory path isn't on hugetlbfs, Markus Armbruster, 2016/03/07