[PATCH weston v3 3/3] simple-dmabuf-drm: use getopt_long

Guido Günther agx at sigxcpu.org
Fri Mar 16 17:56:50 UTC 2018


Signed-off-by: Guido Günther <agx at sigxcpu.org>
---
 clients/simple-dmabuf-drm.c | 51 ++++++++++++++++++++++++---------------------
 1 file changed, 27 insertions(+), 24 deletions(-)

diff --git a/clients/simple-dmabuf-drm.c b/clients/simple-dmabuf-drm.c
index 427597ab..4f26e4a9 100644
--- a/clients/simple-dmabuf-drm.c
+++ b/clients/simple-dmabuf-drm.c
@@ -38,6 +38,7 @@
 #include <sys/mman.h>
 #include <signal.h>
 #include <fcntl.h>
+#include <getopt.h>
 
 #include <xf86drm.h>
 
@@ -877,30 +878,32 @@ main(int argc, char **argv)
 	struct window *window;
 	int opts = 0;
 	int import_format = DRM_FORMAT_XRGB8888;
-	int ret = 0, i = 0;
-
-	if (argc > 1) {
-		static const char import_mode[] = "--import-immediate=";
-		static const char format[] = "--import-format=";
-		static const char y_inverted[] = "--y-inverted=";
-		for (i = 1; i < argc; i++) {
-			if (!strncmp(argv[i], import_mode,
-				     sizeof(import_mode) - 1)) {
-				if (is_true(argv[i] + sizeof(import_mode) - 1))
-					opts |= OPT_IMMEDIATE;
-			}
-			else if (!strncmp(argv[i], format, sizeof(format) - 1)) {
-				import_format = parse_import_format(argv[i]
-							+ sizeof(format) - 1);
-			}
-			else if (!strncmp(argv[i], y_inverted,
-					  sizeof(y_inverted) - 1)) {
-				if (is_true(argv[i] + sizeof(y_inverted) - 1))
-					opts |= OPT_Y_INVERTED;
-			}
-			else {
-				print_usage_and_exit();
-			}
+	int c, option_index, ret = 0;
+
+	static struct option long_options[] = {
+		{"import-format",    required_argument, 0,  'f' },
+		{"import-immediate", required_argument, 0,  'i' },
+		{"y-inverted",       required_argument, 0,  'y' },
+		{"help",             no_argument      , 0,  'h' },
+		{0, 0, 0, 0}
+	};
+
+	while ((c = getopt_long(argc, argv, "hf:i:y:",
+				  long_options, &option_index)) != -1) {
+		switch (c) {
+		case 'f':
+			import_format = parse_import_format(optarg);
+			break;
+		case 'i':
+			if (is_true(optarg))
+				opts |= OPT_IMMEDIATE;
+			break;
+		case 'y':
+			if (is_true(optarg))
+				opts |= OPT_Y_INVERTED;
+			break;
+		default:
+			print_usage_and_exit();
 		}
 	}
 
-- 
2.16.1



More information about the wayland-devel mailing list