Call Fl::args() to properly parse the "hidden" arguments that FLTK understands.  This has two primary benefits:  (1) On X11 systems, you can now override the X display by passing '-display {display}' as the first argument, as is the case for most other X11 apps, and (2) on OS X, this allows the application to run within an application (.app) bundle, because Fl::args() parses the hidden arguments passed to the app by the launcher.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4525 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx
index aa742ce..b9e8ab5 100644
--- a/vncviewer/vncviewer.cxx
+++ b/vncviewer/vncviewer.cxx
@@ -1,5 +1,6 @@
 /* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
  * Copyright 2011 Pierre Ossman <ossman@cendio.se> for Cendio AB
+ * Copyright (C) 2011 D. R. Commander
  * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -214,22 +215,24 @@
 
   Configuration::enableViewerParams();
 
-  for (int i = 1; i < argc; i++) {
-    if (Configuration::setParam(argv[i]))
-      continue;
+  int i = 1;
+  if (!Fl::args(argc, argv, i) || i < argc)
+    for (; i < argc; i++) {
+      if (Configuration::setParam(argv[i]))
+        continue;
 
-    if (argv[i][0] == '-') {
-      if (i+1 < argc) {
-        if (Configuration::setParam(&argv[i][1], argv[i+1])) {
-          i++;
-          continue;
+      if (argv[i][0] == '-') {
+        if (i+1 < argc) {
+          if (Configuration::setParam(&argv[i][1], argv[i+1])) {
+            i++;
+            continue;
+          }
         }
+        usage(argv[0]);
       }
-      usage(argv[0]);
-    }
 
-    vncServerName = argv[i];
-  }
+      vncServerName = argv[i];
+    }
 
   if (!::autoSelect.hasBeenSet()) {
     // Default to AutoSelect=0 if -PreferredEncoding or -FullColor is used