Handle FLTK arguments at any position

E.g. vncviewer server.example.com:2 -display :2
diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx
index 6701302..53ff4b0 100644
--- a/vncviewer/vncviewer.cxx
+++ b/vncviewer/vncviewer.cxx
@@ -493,27 +493,32 @@
     if (alertOnFatalError)
       fl_alert("%s", e.str());
   }
-  
-  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;
-          }
+  for (int i = 1; i < argc;) {
+    if (Fl::arg(argc, argv, i))
+      continue;
+
+    if (Configuration::setParam(argv[i])) {
+      i++;
+      continue;
+    }
+
+    if (argv[i][0] == '-') {
+      if (i+1 < argc) {
+        if (Configuration::setParam(&argv[i][1], argv[i+1])) {
+          i += 2;
+          continue;
         }
-        usage(argv[0]);
       }
 
-      strncpy(vncServerName, argv[i], VNCSERVERNAMELEN);
-      vncServerName[VNCSERVERNAMELEN - 1] = '\0';
+      usage(argv[0]);
     }
 
+    strncpy(vncServerName, argv[i], VNCSERVERNAMELEN);
+    vncServerName[VNCSERVERNAMELEN - 1] = '\0';
+    i++;
+  }
+
   mkvnchomedir();
 
 #if !defined(WIN32) && !defined(__APPLE__)