]> source.dussan.org Git - tigervnc.git/commitdiff
Use CHECK_FOR_REQUIRED_ARGUMENTS() for arg check
authorPierre Ossman <ossman@cendio.se>
Sun, 11 Jul 2021 17:45:11 +0000 (19:45 +0200)
committerPierre Ossman <ossman@cendio.se>
Tue, 13 Jul 2021 12:26:04 +0000 (14:26 +0200)
This is what all the other ddx variants use, so do the same in Xvnc to
be consistent.

unix/xserver/hw/vnc/xvnc.c

index e9ca3b7081d44eb90660c4491825a4950e57dd2d..3059621de1977249219885834ac9599642e2c265 100644 (file)
@@ -345,13 +345,6 @@ displayNumFree(int num)
     return TRUE;
 }
 
-#define fail_unless_args(_argc,_i,_n)          \
-    if (_i + _n >= _argc)                      \
-    {                                          \
-        UseMsg();                              \
-        return 0;                              \
-    }
-
 int
 ddxProcessArgument(int argc, char *argv[], int i)
 {
@@ -370,10 +363,17 @@ ddxProcessArgument(int argc, char *argv[], int i)
     if (argv[i][0] == ':')
         displaySpecified = TRUE;
 
+#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;
 
-        fail_unless_args(argc, i, 2);
+        CHECK_FOR_REQUIRED_ARGUMENTS(2);
         screenNum = atoi(argv[i + 1]);
         if (screenNum < 0 || screenNum >= MAXSCREENS) {
             ErrorF("Invalid screen number %d\n", screenNum);
@@ -398,7 +398,7 @@ ddxProcessArgument(int argc, char *argv[], int i)
     if (strcmp(argv[i], "-pixdepths") == 0) {   /* -pixdepths list-of-depth */
         int depth, ret = 1;
 
-        fail_unless_args(argc, i, 1);
+        CHECK_FOR_REQUIRED_ARGUMENTS(1);
         ++i;
         while ((i < argc) && (depth = atoi(argv[i++])) != 0) {
             if (depth < 0 || depth > 32) {
@@ -425,7 +425,7 @@ ddxProcessArgument(int argc, char *argv[], int i)
     if (strcmp(argv[i], "-blackpixel") == 0) {  /* -blackpixel n */
         Pixel pix;
 
-        fail_unless_args(argc, i, 1);
+        CHECK_FOR_REQUIRED_ARGUMENTS(1);
         ++i;
         pix = atoi(argv[i]);
         if (-1 == lastScreen) {
@@ -444,7 +444,7 @@ ddxProcessArgument(int argc, char *argv[], int i)
     if (strcmp(argv[i], "-whitepixel") == 0) {  /* -whitepixel n */
         Pixel pix;
 
-        fail_unless_args(argc, i, 1);
+        CHECK_FOR_REQUIRED_ARGUMENTS(1);
         ++i;
         pix = atoi(argv[i]);
         if (-1 == lastScreen) {
@@ -463,7 +463,7 @@ ddxProcessArgument(int argc, char *argv[], int i)
     if (strcmp(argv[i], "-linebias") == 0) {    /* -linebias n */
         unsigned int linebias;
 
-        fail_unless_args(argc, i, 1);
+        CHECK_FOR_REQUIRED_ARGUMENTS(1);
         ++i;
         linebias = atoi(argv[i]);
         if (-1 == lastScreen) {
@@ -487,7 +487,7 @@ ddxProcessArgument(int argc, char *argv[], int i)
 #endif
 
     if (strcmp(argv[i], "-geometry") == 0) {
-        fail_unless_args(argc, i, 1);
+        CHECK_FOR_REQUIRED_ARGUMENTS(1);
         ++i;
         if (sscanf(argv[i], "%dx%d", &vfbScreens[0].fb.width,
                    &vfbScreens[0].fb.height) != 2) {
@@ -499,7 +499,7 @@ ddxProcessArgument(int argc, char *argv[], int i)
     }
 
     if (strcmp(argv[i], "-depth") == 0) {
-        fail_unless_args(argc, i, 1);
+        CHECK_FOR_REQUIRED_ARGUMENTS(1);
         ++i;
         vfbScreens[0].fb.depth = atoi(argv[i]);
         return 2;
@@ -509,7 +509,7 @@ ddxProcessArgument(int argc, char *argv[], int i)
         char rgbbgr[4];
         int bits1, bits2, bits3;
 
-        fail_unless_args(argc, i, 1);
+        CHECK_FOR_REQUIRED_ARGUMENTS(1);
         ++i;
         if (sscanf(argv[i], "%3s%1d%1d%1d", rgbbgr, &bits1, &bits2, &bits3) < 4) {
             ErrorF("Invalid pixel format %s\n", argv[i]);