From 8d048a1fd3e3806c408192d33e62859f5bc5c343 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 23 Oct 2018 14:28:21 -0400 Subject: [PATCH] os: Factor out CHECK_FOR_REQUIRED_ARGUMENTS Lifted from vfb. xfree86 had almost the same thing but unparameterized, port it to the vfb style. Signed-off-by: Adam Jackson Reviewed-by: Alan Coopersmith --- hw/vfb/InitOutput.c | 7 ------- hw/xfree86/common/xf86Init.c | 33 +++++++++++++-------------------- include/os.h | 7 +++++++ 3 files changed, 20 insertions(+), 27 deletions(-) diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index 070cede35..be26467ea 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -264,13 +264,6 @@ ddxProcessArgument(int argc, char *argv[], int i) else currentScreen = &vfbScreens[lastScreen]; -#define CHECK_FOR_REQUIRED_ARGUMENTS(num) \ - if (((i + num) >= argc) || (!argv[i + num])) { \ - ErrorF("Required argument to %s not specified\n", argv[i]); \ - UseMsg(); \ - FatalError("Required argument to %s not specified\n", argv[i]); \ - } - if (strcmp(argv[i], "-screen") == 0) { /* -screen n WxHxD */ int screenNum; diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 0f57efa86..b148e1320 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -925,16 +925,9 @@ xf86CheckPrivs(const char *option, const char *arg) int ddxProcessArgument(int argc, char **argv, int i) { -#define CHECK_FOR_REQUIRED_ARGUMENT() \ - if (((i + 1) >= argc) || (!argv[i + 1])) { \ - ErrorF("Required argument to %s not specified\n", argv[i]); \ - UseMsg(); \ - FatalError("Required argument to %s not specified\n", argv[i]); \ - } - /* First the options that are not allowed with elevated privileges */ if (!strcmp(argv[i], "-modulepath")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); if (xf86PrivsElevated()) FatalError("\nInvalid argument -modulepath " "with elevated privileges\n"); @@ -943,7 +936,7 @@ ddxProcessArgument(int argc, char **argv, int i) return 2; } if (!strcmp(argv[i], "-logfile")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); if (xf86PrivsElevated()) FatalError("\nInvalid argument -logfile " "with elevated privileges\n"); @@ -952,13 +945,13 @@ ddxProcessArgument(int argc, char **argv, int i) return 2; } if (!strcmp(argv[i], "-config") || !strcmp(argv[i], "-xf86config")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); xf86CheckPrivs(argv[i], argv[i + 1]); xf86ConfigFile = argv[i + 1]; return 2; } if (!strcmp(argv[i], "-configdir")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); xf86CheckPrivs(argv[i], argv[i + 1]); xf86ConfigDir = argv[i + 1]; return 2; @@ -1052,7 +1045,7 @@ ddxProcessArgument(int argc, char **argv, int i) if (!strcmp(argv[i], "-fbbpp")) { int bpp; - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); if (sscanf(argv[++i], "%d", &bpp) == 1) { xf86FbBpp = bpp; return 2; @@ -1065,7 +1058,7 @@ ddxProcessArgument(int argc, char **argv, int i) if (!strcmp(argv[i], "-depth")) { int depth; - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); if (sscanf(argv[++i], "%d", &depth) == 1) { xf86Depth = depth; return 2; @@ -1078,7 +1071,7 @@ ddxProcessArgument(int argc, char **argv, int i) if (!strcmp(argv[i], "-weight")) { int red, green, blue; - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); if (sscanf(argv[++i], "%1d%1d%1d", &red, &green, &blue) == 3) { xf86Weight.red = red; xf86Weight.green = green; @@ -1094,7 +1087,7 @@ ddxProcessArgument(int argc, char **argv, int i) !strcmp(argv[i], "-ggamma") || !strcmp(argv[i], "-bgamma")) { double gamma; - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); if (sscanf(argv[++i], "%lf", &gamma) == 1) { if (gamma < GAMMA_MIN || gamma > GAMMA_MAX) { ErrorF("gamma out of range, only %.2f <= gamma_value <= %.1f" @@ -1113,22 +1106,22 @@ ddxProcessArgument(int argc, char **argv, int i) } } if (!strcmp(argv[i], "-layout")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); xf86LayoutName = argv[++i]; return 2; } if (!strcmp(argv[i], "-screen")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); xf86ScreenName = argv[++i]; return 2; } if (!strcmp(argv[i], "-pointer")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); xf86PointerName = argv[++i]; return 2; } if (!strcmp(argv[i], "-keyboard")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); xf86KeyboardName = argv[++i]; return 2; } @@ -1161,7 +1154,7 @@ ddxProcessArgument(int argc, char **argv, int i) } #ifdef XSERVER_LIBPCIACCESS if (!strcmp(argv[i], "-isolateDevice")) { - CHECK_FOR_REQUIRED_ARGUMENT(); + CHECK_FOR_REQUIRED_ARGUMENTS(1); if (strncmp(argv[++i], "PCI:", 4)) { FatalError("Bus types other than PCI not yet isolable\n"); } diff --git a/include/os.h b/include/os.h index 6d209cd21..553126734 100644 --- a/include/os.h +++ b/include/os.h @@ -526,6 +526,13 @@ GenerateAuthorization(unsigned int /* name_length */ , extern _X_EXPORT int ddxProcessArgument(int /*argc */ , char * /*argv */ [], int /*i */ ); +#define CHECK_FOR_REQUIRED_ARGUMENTS(num) \ + do if (((i + num) >= argc) || (!argv[i + num])) { \ + UseMsg(); \ + FatalError("Required argument to %s not specified\n", argv[i]); \ + } while (0) + + extern _X_EXPORT void ddxUseMsg(void);