summaryrefslogtreecommitdiffstats
path: root/x11vnc/x11vnc.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/x11vnc.c')
-rw-r--r--x11vnc/x11vnc.c1643
1 files changed, 815 insertions, 828 deletions
diff --git a/x11vnc/x11vnc.c b/x11vnc/x11vnc.c
index 73e9290..5b7530c 100644
--- a/x11vnc/x11vnc.c
+++ b/x11vnc/x11vnc.c
@@ -149,251 +149,12 @@
* main routine for the x11vnc program
*/
-static void check_cursor_changes(void);
-static void record_last_fb_update(void);
-static int choose_delay(double dt);
-static void watch_loop(void);
static int limit_shm(void);
static void check_rcfile(int argc, char **argv);
static void immediate_switch_user(int argc, char* argv[]);
static void print_settings(int try_http, int bg, char *gui_str);
static void check_loop_mode(int argc, char* argv[], int force);
-
-static void check_cursor_changes(void) {
- static double last_push = 0.0;
-
- if (unixpw_in_progress) return;
-
- cursor_changes += check_x11_pointer();
-
- if (cursor_changes) {
- double tm, max_push = 0.125, multi_push = 0.01, wait = 0.02;
- int cursor_shape, dopush = 0, link, latency, netrate;
-
- if (! all_clients_initialized()) {
- /* play it safe */
- return;
- }
-
- if (0) cursor_shape = cursor_shape_updates_clients(screen);
-
- dtime0(&tm);
- link = link_rate(&latency, &netrate);
- if (link == LR_DIALUP) {
- max_push = 0.2;
- wait = 0.05;
- } else if (link == LR_BROADBAND) {
- max_push = 0.075;
- wait = 0.05;
- } else if (link == LR_LAN) {
- max_push = 0.01;
- } else if (latency < 5 && netrate > 200) {
- max_push = 0.01;
- }
-
- if (tm > last_push + max_push) {
- dopush = 1;
- } else if (cursor_changes > 1 && tm > last_push + multi_push) {
- dopush = 1;
- }
-
- if (dopush) {
- mark_rect_as_modified(0, 0, 1, 1, 1);
- fb_push_wait(wait, FB_MOD);
- last_push = tm;
- } else {
- rfbPE(0);
- }
- }
- cursor_changes = 0;
-}
-
-static void record_last_fb_update(void) {
- static int rbs0 = -1;
- static time_t last_call = 0;
- time_t now = time(NULL);
- int rbs = -1;
- rfbClientIteratorPtr iter;
- rfbClientPtr cl;
-
- if (last_fb_bytes_sent == 0) {
- last_fb_bytes_sent = now;
- last_call = now;
- }
-
- if (now <= last_call + 1) {
- /* check every second or so */
- return;
- }
-
- if (unixpw_in_progress) return;
-
- last_call = now;
-
- if (! screen) {
- return;
- }
-
- iter = rfbGetClientIterator(screen);
- while( (cl = rfbClientIteratorNext(iter)) ) {
-#if 0
- rbs += cl->rawBytesEquivalent;
-#else
- rbs += rfbStatGetSentBytesIfRaw(cl);
-#endif
- }
- rfbReleaseClientIterator(iter);
-
- if (rbs != rbs0) {
- rbs0 = rbs;
- if (debug_tiles > 1) {
- printf("record_last_fb_update: %d %d\n",
- (int) now, (int) last_fb_bytes_sent);
- }
- last_fb_bytes_sent = now;
- }
-}
-
-static int choose_delay(double dt) {
- static double t0 = 0.0, t1 = 0.0, t2 = 0.0, now;
- static int x0, y0, x1, y1, x2, y2, first = 1;
- int dx0, dy0, dx1, dy1, dm, i, msec = waitms;
- double cut1 = 0.15, cut2 = 0.075, cut3 = 0.25;
- double bogdown_time = 0.25, bave = 0.0;
- int bogdown = 1, bcnt = 0;
- int ndt = 8, nave = 3;
- double fac = 1.0;
- int db = 0;
- static double dts[8];
-
- if (waitms == 0) {
- return waitms;
- }
- if (nofb) {
- return waitms;
- }
-
- if (first) {
- for(i=0; i<ndt; i++) {
- dts[i] = 0.0;
- }
- first = 0;
- }
-
- now = dnow();
-
- /*
- * first check for bogdown, e.g. lots of activity, scrolling text
- * from command output, etc.
- */
- if (nap_ok) {
- dt = 0.0;
- }
- if (! wait_bog) {
- bogdown = 0;
-
- } else if (button_mask || now < last_keyboard_time + 2*bogdown_time) {
- /*
- * let scrolls & keyboard input through the normal way
- * otherwise, it will likely just annoy them.
- */
- bogdown = 0;
-
- } else if (dt > 0.0) {
- /*
- * inspect recent dt's:
- * 0 1 2 3 4 5 6 7 dt
- * ^ ^ ^
- */
- for (i = ndt - (nave - 1); i < ndt; i++) {
- bave += dts[i];
- bcnt++;
- if (dts[i] < bogdown_time) {
- bogdown = 0;
- break;
- }
- }
- bave += dt;
- bcnt++;
- bave = bave / bcnt;
- if (dt < bogdown_time) {
- bogdown = 0;
- }
- } else {
- bogdown = 0;
- }
- /* shift for next time */
- for (i = 0; i < ndt-1; i++) {
- dts[i] = dts[i+1];
- }
- dts[ndt-1] = dt;
-
-if (0 && dt > 0.0) fprintf(stderr, "dt: %.5f %.4f\n", dt, dnowx());
- if (bogdown) {
- if (use_xdamage) {
- /* DAMAGE can queue ~1000 rectangles for a scroll */
- clear_xdamage_mark_region(NULL, 0);
- }
- msec = (int) (1000 * 1.75 * bave);
- if (dts[ndt - nave - 1] > 0.75 * bave) {
- msec = 1.5 * msec;
- set_xdamage_mark(0, 0, dpy_x, dpy_y);
- }
- if (msec > 1500) {
- msec = 1500;
- }
- if (msec < waitms) {
- msec = waitms;
- }
- db = (db || debug_tiles);
- if (db) fprintf(stderr, "bogg[%d] %.3f %.3f %.3f %.3f\n",
- msec, dts[ndt-4], dts[ndt-3], dts[ndt-2], dts[ndt-1]);
- return msec;
- }
-
- /* next check for pointer motion, keystrokes, to speed up */
- t2 = dnow();
- x2 = cursor_x;
- y2 = cursor_y;
-
- dx0 = nabs(x1 - x0);
- dy0 = nabs(y1 - y0);
- dx1 = nabs(x2 - x1);
- dy1 = nabs(y2 - y1);
- if (dx1 > dy1) {
- dm = dx1;
- } else {
- dm = dy1;
- }
-
- if ((dx0 || dy0) && (dx1 || dy1)) {
- if (t2 < t0 + cut1 || t2 < t1 + cut2 || dm > 20) {
- fac = wait_ui * 1.25;
- }
- } else if ((dx1 || dy1) && dm > 40) {
- fac = wait_ui;
- }
-
- if (fac == 1 && t2 < last_keyboard_time + cut3) {
- fac = wait_ui;
- }
- msec = (int) ((double) waitms / fac);
- if (msec == 0) {
- msec = 1;
- }
-
- x0 = x1;
- y0 = y1;
- t0 = t1;
-
- x1 = x2;
- y1 = y2;
- t1 = t2;
-
- return msec;
-}
-
static int tsdo_timeout_flag;
static void tsdo_timeout (int sig) {
@@ -894,7 +655,7 @@ fprintf(stderr, "Set: %s %s %s -> %s\n", f, t, e, num);
#endif
}
-void check_redir_services(void) {
+static void check_redir_services(void) {
#if !NO_X11
Atom a;
char prop[513];
@@ -1091,324 +852,6 @@ void ssh_remote_tunnel(char *instr, int lport) {
free(s);
}
-void check_filexfer(void) {
- static time_t last_check = 0;
- rfbClientIteratorPtr iter;
- rfbClientPtr cl;
- int transferring = 0;
-
- if (time(NULL) <= last_check) {
- return;
- }
-
-#if 0
- if (getenv("NOFT")) {
- return;
- }
-#endif
-
- iter = rfbGetClientIterator(screen);
- while( (cl = rfbClientIteratorNext(iter)) ) {
- if (cl->fileTransfer.receiving) {
- transferring = 1;
- break;
- }
- if (cl->fileTransfer.sending) {
- transferring = 1;
- break;
- }
- }
- rfbReleaseClientIterator(iter);
-
- if (transferring) {
- double start = dnow();
- while (dnow() < start + 0.5) {
- rfbCFD(5000);
- rfbCFD(1000);
- rfbCFD(0);
- }
- } else {
- last_check = time(NULL);
- }
-}
-
-/*
- * main x11vnc loop: polls, checks for events, iterate libvncserver, etc.
- */
-static void watch_loop(void) {
- int cnt = 0, tile_diffs = 0, skip_pe = 0;
- double tm, dtr, dt = 0.0;
- time_t start = time(NULL);
-
- if (use_threads) {
- rfbRunEventLoop(screen, -1, TRUE);
- }
-
- while (1) {
- char msg[] = "new client: %s taking unixpw client off hold.\n";
-
- got_user_input = 0;
- got_pointer_input = 0;
- got_local_pointer_input = 0;
- got_pointer_calls = 0;
- got_keyboard_input = 0;
- got_keyboard_calls = 0;
- urgent_update = 0;
-
- x11vnc_current = dnow();
-
- if (! use_threads) {
- dtime0(&tm);
- if (! skip_pe) {
- if (unixpw_in_progress) {
- rfbClientPtr cl = unixpw_client;
- if (cl && cl->onHold) {
- rfbLog(msg, cl->host);
- unixpw_client->onHold = FALSE;
- }
- } else {
- measure_send_rates(1);
- }
-
- unixpw_in_rfbPE = 1;
-
- /*
- * do a few more since a key press may
- * have induced a small change we want to
- * see quickly (just 1 rfbPE will likely
- * only process the subsequent "up" event)
- */
- if (tm < last_keyboard_time + 0.16) {
- rfbPE(0);
- rfbPE(0);
- rfbPE(-1);
- rfbPE(0);
- rfbPE(0);
- } else {
- rfbPE(-1);
- }
-
- unixpw_in_rfbPE = 0;
-
- if (unixpw_in_progress) {
- /* rfbPE loop until logged in. */
- skip_pe = 0;
- check_new_clients();
- continue;
- } else {
- measure_send_rates(0);
- fb_update_sent(NULL);
- }
- } else {
- if (unixpw_in_progress) {
- skip_pe = 0;
- check_new_clients();
- continue;
- }
- }
- dtr = dtime(&tm);
-
- if (! cursor_shape_updates) {
- /* undo any cursor shape requests */
- disable_cursor_shape_updates(screen);
- }
- if (screen && screen->clientHead) {
- int ret = check_user_input(dt, dtr,
- tile_diffs, &cnt);
- /* true: loop back for more input */
- if (ret == 2) {
- skip_pe = 1;
- }
- if (ret) {
- if (debug_scroll) fprintf(stderr, "watch_loop: LOOP-BACK: %d\n", ret);
- continue;
- }
- }
- /* watch for viewonly input piling up: */
- if ((got_pointer_calls > got_pointer_input) ||
- (got_keyboard_calls > got_keyboard_input)) {
- eat_viewonly_input(10, 3);
- }
- } else {
- /* -threads here. */
- if (wireframe && button_mask) {
- check_wireframe();
- }
- }
- skip_pe = 0;
-
- if (shut_down) {
- clean_up_exit(0);
- }
-
- if (unixpw_in_progress) {
- check_new_clients();
- continue;
- }
-
- if (! urgent_update) {
- if (do_copy_screen) {
- do_copy_screen = 0;
- copy_screen();
- }
-
- check_new_clients();
- check_ncache(0, 0);
- check_xevents(0);
- check_autorepeat();
- check_pm();
- check_filexfer();
- check_keycode_state();
- check_connect_inputs();
- check_gui_inputs();
- check_stunnel();
- check_openssl();
- check_https();
- record_last_fb_update();
- check_padded_fb();
- check_fixscreen();
- check_xdamage_state();
- check_xrecord_reset(0);
- check_add_keysyms();
- check_new_passwds(0);
-#ifdef ENABLE_GRABLOCAL
- if (grab_local) {
- check_local_grab();
- }
-#endif
- if (started_as_root) {
- check_switched_user();
- }
-
- if (first_conn_timeout < 0) {
- start = time(NULL);
- first_conn_timeout = -first_conn_timeout;
- }
- }
-
- if (rawfb_vnc_reflect) {
- static time_t lastone = 0;
- if (time(NULL) > lastone + 10) {
- lastone = time(NULL);
- vnc_reflect_process_client();
- }
- }
-
- if (! screen || ! screen->clientHead) {
- /* waiting for a client */
- if (first_conn_timeout) {
- if (time(NULL) - start > first_conn_timeout) {
- rfbLog("No client after %d secs.\n",
- first_conn_timeout);
- shut_down = 1;
- }
- }
- usleep(200 * 1000);
- continue;
- }
-
- if (first_conn_timeout && all_clients_initialized()) {
- first_conn_timeout = 0;
- }
-
- if (nofb) {
- /* no framebuffer polling needed */
- if (cursor_pos_updates) {
- check_x11_pointer();
- }
-#ifdef MACOSX
- else check_x11_pointer();
-#endif
- continue;
- }
-
- if (button_mask && (!show_dragging || pointer_mode == 0)) {
- /*
- * if any button is pressed in this mode do
- * not update rfb screen, but do flush the
- * X11 display.
- */
- X_LOCK;
- XFlush_wr(dpy);
- X_UNLOCK;
- dt = 0.0;
- } else {
- static double last_dt = 0.0;
- double xdamage_thrash = 0.4;
-
- check_cursor_changes();
-
- /* for timing the scan to try to detect thrashing */
-
- if (use_xdamage && last_dt > xdamage_thrash) {
- clear_xdamage_mark_region(NULL, 0);
- }
-
- if (unixpw_in_progress) continue;
-
- if (rawfb_vnc_reflect) {
- vnc_reflect_process_client();
- }
- dtime0(&tm);
-
-#if !NO_X11
- if (xrandr_present && !xrandr && xrandr_maybe) {
- int delay = 180;
- /* there may be xrandr right after xsession start */
- if (tm < x11vnc_start + delay || tm < last_client + delay) {
- int tw = 20;
- if (auth_file != NULL) {
- tw = 120;
- }
- X_LOCK;
- if (tm < x11vnc_start + tw || tm < last_client + tw) {
- XSync(dpy, False);
- } else {
- XFlush_wr(dpy);
- }
- X_UNLOCK;
- }
- check_xrandr_event("before-scan");
- }
-#endif
- if (use_snapfb) {
- int t, tries = 3;
- copy_snap();
- for (t=0; t < tries; t++) {
- tile_diffs = scan_for_updates(0);
- }
- } else {
- tile_diffs = scan_for_updates(0);
- }
- dt = dtime(&tm);
- if (! nap_ok) {
- last_dt = dt;
- }
-
- if ((debug_tiles || debug_scroll > 1 || debug_wireframe > 1)
- && (tile_diffs > 4 || debug_tiles > 1)) {
- double rate = (tile_x * tile_y * bpp/8 * tile_diffs) / dt;
- fprintf(stderr, "============================= TILES: %d dt: %.4f"
- " t: %.4f %.2f MB/s nap_ok: %d\n", tile_diffs, dt,
- tm - x11vnc_start, rate/1000000.0, nap_ok);
- }
-
- }
-
- /* sleep a bit to lessen load */
- if (! urgent_update) {
- int wait = choose_delay(dt);
- if (wait > 2*waitms) {
- /* bog case, break it up */
- nap_sleep(wait, 10);
- } else {
- usleep(wait * 1000);
- }
- }
- cnt++;
- }
-}
-
/*
* check blacklist for OSs with tight shm limits.
*/
@@ -1885,7 +1328,7 @@ static void print_settings(int try_http, int bg, char *gui_str) {
: "null");
fprintf(stderr, " overlay: %d\n", overlay);
fprintf(stderr, " ovl_cursor: %d\n", overlay_cursor);
- fprintf(stderr, " scaling: %d %.4f\n", scaling, scale_fac);
+ fprintf(stderr, " scaling: %d %.4f %.4f\n", scaling, scale_fac_x, scale_fac_y);
fprintf(stderr, " viewonly: %d\n", view_only);
fprintf(stderr, " shared: %d\n", shared);
fprintf(stderr, " conn_once: %d\n", connect_once);
@@ -2482,9 +1925,13 @@ int main(int argc, char* argv[]) {
exit(0);
}
}
- } else if (!strcmp(arg, "-find")) {
+ continue;
+ }
+ if (!strcmp(arg, "-find")) {
use_dpy = strdup("WAIT:cmd=FINDDISPLAY");
- } else if (!strcmp(arg, "-finddpy") || strstr(arg, "-listdpy") == arg) {
+ continue;
+ }
+ if (!strcmp(arg, "-finddpy") || strstr(arg, "-listdpy") == arg) {
int ic = 0;
use_dpy = strdup("WAIT:cmd=FINDDISPLAY-run");
if (argc > i+1) {
@@ -2496,15 +1943,25 @@ int main(int argc, char* argv[]) {
}
wait_for_client(&ic, NULL, 0);
exit(0);
- } else if (!strcmp(arg, "-create")) {
+ continue;
+ }
+ if (!strcmp(arg, "-create")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvfb");
- } else if (!strcmp(arg, "-xdummy")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xdummy")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xdummy");
- } else if (!strcmp(arg, "-xvnc")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xvnc")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvnc");
- } else if (!strcmp(arg, "-xvnc_redirect")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xvnc_redirect")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvnc.redirect");
- } else if (!strcmp(arg, "-redirect")) {
+ continue;
+ }
+ if (!strcmp(arg, "-redirect")) {
char *q, *t, *t0 = "WAIT:cmd=FINDDISPLAY-vnc_redirect";
CHECK_ARGC
t = (char *) malloc(strlen(t0) + strlen(argv[++i]) + 2);
@@ -2512,23 +1969,35 @@ int main(int argc, char* argv[]) {
if (q) *q = ' ';
sprintf(t, "%s=%s", t0, argv[i]);
use_dpy = t;
- } else if (!strcmp(arg, "-auth") || !strcmp(arg, "-xauth")) {
+ continue;
+ }
+ if (!strcmp(arg, "-auth") || !strcmp(arg, "-xauth")) {
CHECK_ARGC
auth_file = strdup(argv[++i]);
- } else if (!strcmp(arg, "-N")) {
+ continue;
+ }
+ if (!strcmp(arg, "-N")) {
display_N = 1;
- } else if (!strcmp(arg, "-autoport")) {
+ continue;
+ }
+ if (!strcmp(arg, "-autoport")) {
CHECK_ARGC
auto_port = atoi(argv[++i]);
- } else if (!strcmp(arg, "-reflect")) {
+ continue;
+ }
+ if (!strcmp(arg, "-reflect")) {
CHECK_ARGC
raw_fb_str = (char *) malloc(4 + strlen(argv[i]) + 1);
sprintf(raw_fb_str, "vnc:%s", argv[++i]);
shared = 1;
- } else if (!strcmp(arg, "-tsd")) {
+ continue;
+ }
+ if (!strcmp(arg, "-tsd")) {
CHECK_ARGC
terminal_services_daemon = strdup(argv[++i]);
- } else if (!strcmp(arg, "-id") || !strcmp(arg, "-sid")) {
+ continue;
+ }
+ if (!strcmp(arg, "-id") || !strcmp(arg, "-sid")) {
CHECK_ARGC
if (!strcmp(arg, "-sid")) {
rootshift = 1;
@@ -2551,19 +2020,31 @@ int main(int argc, char* argv[]) {
argv[i]);
exit(1);
}
- } else if (!strcmp(arg, "-waitmapped")) {
+ continue;
+ }
+ if (!strcmp(arg, "-waitmapped")) {
subwin_wait_mapped = 1;
- } else if (!strcmp(arg, "-clip")) {
+ continue;
+ }
+ if (!strcmp(arg, "-clip")) {
CHECK_ARGC
clip_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-flashcmap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-flashcmap")) {
flash_cmap = 1;
- } else if (!strcmp(arg, "-shiftcmap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-shiftcmap")) {
CHECK_ARGC
shift_cmap = atoi(argv[++i]);
- } else if (!strcmp(arg, "-notruecolor")) {
+ continue;
+ }
+ if (!strcmp(arg, "-notruecolor")) {
force_indexed_color = 1;
- } else if (!strcmp(arg, "-advertise_truecolor")) {
+ continue;
+ }
+ if (!strcmp(arg, "-advertise_truecolor")) {
advertise_truecolor = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2574,16 +2055,24 @@ int main(int argc, char* argv[]) {
i++;
}
}
- } else if (!strcmp(arg, "-overlay")) {
+ continue;
+ }
+ if (!strcmp(arg, "-overlay")) {
overlay = 1;
- } else if (!strcmp(arg, "-overlay_nocursor")) {
+ continue;
+ }
+ if (!strcmp(arg, "-overlay_nocursor")) {
overlay = 1;
overlay_cursor = 0;
- } else if (!strcmp(arg, "-overlay_yescursor")) {
+ continue;
+ }
+ if (!strcmp(arg, "-overlay_yescursor")) {
overlay = 1;
overlay_cursor = 2;
+ continue;
+ }
#if !SKIP_8TO24
- } else if (!strcmp(arg, "-8to24")) {
+ if (!strcmp(arg, "-8to24")) {
cmap8to24 = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2592,58 +2081,105 @@ int main(int argc, char* argv[]) {
i++;
}
}
+ continue;
+ }
#endif
- } else if (!strcmp(arg, "-24to32")) {
+ if (!strcmp(arg, "-24to32")) {
xform24to32 = 1;
- } else if (!strcmp(arg, "-visual")) {
+ continue;
+ }
+ if (!strcmp(arg, "-visual")) {
CHECK_ARGC
visual_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-scale")) {
+ continue;
+ }
+ if (!strcmp(arg, "-scale")) {
CHECK_ARGC
scale_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-scale_cursor")) {
+ continue;
+ }
+ if (!strcmp(arg, "-geometry")) {
+ CHECK_ARGC
+ scale_str = strdup(argv[++i]);
+ continue;
+ }
+ if (!strcmp(arg, "-scale_cursor")) {
CHECK_ARGC
scale_cursor_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-viewonly")) {
+ continue;
+ }
+ if (!strcmp(arg, "-viewonly")) {
view_only = 1;
- } else if (!strcmp(arg, "-noviewonly")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noviewonly")) {
view_only = 0;
got_noviewonly = 1;
- } else if (!strcmp(arg, "-shared")) {
+ continue;
+ }
+ if (!strcmp(arg, "-shared")) {
shared = 1;
- } else if (!strcmp(arg, "-noshared")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noshared")) {
shared = 0;
- } else if (!strcmp(arg, "-once")) {
+ continue;
+ }
+ if (!strcmp(arg, "-once")) {
connect_once = 1;
got_connect_once = 1;
- } else if (!strcmp(arg, "-many") || !strcmp(arg, "-forever")) {
+ continue;
+ }
+ if (!strcmp(arg, "-many") || !strcmp(arg, "-forever")) {
connect_once = 0;
- } else if (strstr(arg, "-loop") == arg) {
+ continue;
+ }
+ if (strstr(arg, "-loop") == arg) {
; /* handled above */
- } else if (!strcmp(arg, "-timeout")) {
+ continue;
+ }
+ if (!strcmp(arg, "-timeout")) {
CHECK_ARGC
first_conn_timeout = atoi(argv[++i]);
- } else if (!strcmp(arg, "-sleepin")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sleepin")) {
int n;
CHECK_ARGC
do_sleepin(argv[++i]);
- } else if (!strcmp(arg, "-users")) {
+ continue;
+ }
+ if (!strcmp(arg, "-users")) {
CHECK_ARGC
users_list = strdup(argv[++i]);
- } else if (!strcmp(arg, "-inetd")) {
+ continue;
+ }
+ if (!strcmp(arg, "-inetd")) {
inetd = 1;
- } else if (!strcmp(arg, "-notightfilexfer")) {
+ continue;
+ }
+ if (!strcmp(arg, "-notightfilexfer")) {
tightfilexfer = 0;
- } else if (!strcmp(arg, "-tightfilexfer")) {
+ continue;
+ }
+ if (!strcmp(arg, "-tightfilexfer")) {
tightfilexfer = 1;
- } else if (!strcmp(arg, "-http")) {
+ continue;
+ }
+ if (!strcmp(arg, "-http")) {
try_http = 1;
- } else if (!strcmp(arg, "-http_ssl")) {
+ continue;
+ }
+ if (!strcmp(arg, "-http_ssl")) {
try_http = 1;
http_ssl = 1;
- } else if (!strcmp(arg, "-avahi") || !strcmp(arg, "-mdns")) {
+ continue;
+ }
+ if (!strcmp(arg, "-avahi") || !strcmp(arg, "-mdns")) {
avahi = 1;
- } else if (!strcmp(arg, "-connect") ||
+ continue;
+ }
+ if (!strcmp(arg, "-connect") ||
!strcmp(arg, "-connect_or_exit")) {
CHECK_ARGC
if (!strcmp(arg, "-connect_or_exit")) {
@@ -2659,77 +2195,115 @@ int main(int argc, char* argv[]) {
} else {
client_connect = strdup(argv[i]);
}
- } else if (!strcmp(arg, "-proxy")) {
+ continue;
+ }
+ if (!strcmp(arg, "-proxy")) {
CHECK_ARGC
connect_proxy = strdup(argv[++i]);
- } else if (!strcmp(arg, "-vncconnect")) {
+ continue;
+ }
+ if (!strcmp(arg, "-vncconnect")) {
vnc_connect = 1;
- } else if (!strcmp(arg, "-novncconnect")) {
+ continue;
+ }
+ if (!strcmp(arg, "-novncconnect")) {
vnc_connect = 0;
- } else if (!strcmp(arg, "-allow")) {
+ continue;
+ }
+ if (!strcmp(arg, "-allow")) {
CHECK_ARGC
allow_list = strdup(argv[++i]);
- } else if (!strcmp(arg, "-localhost")) {
+ continue;
+ }
+ if (!strcmp(arg, "-localhost")) {
allow_list = strdup("127.0.0.1");
got_localhost = 1;
- } else if (!strcmp(arg, "-nolookup")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nolookup")) {
host_lookup = 0;
- } else if (!strcmp(arg, "-input")) {
+ continue;
+ }
+ if (!strcmp(arg, "-input")) {
CHECK_ARGC
allowed_input_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-grabkbd")) {
+ continue;
+ }
+ if (!strcmp(arg, "-grabkbd")) {
grab_kbd = 1;
- } else if (!strcmp(arg, "-grabptr")) {
+ continue;
+ }
+ if (!strcmp(arg, "-grabptr")) {
grab_ptr = 1;
- } else if (!strcmp(arg, "-grabalways")) {
+ continue;
+ }
+ if (!strcmp(arg, "-grabalways")) {
grab_kbd = 1;
grab_ptr = 1;
grab_always = 1;
+ continue;
+ }
#ifdef ENABLE_GRABLOCAL
- } else if (!strcmp(arg, "-grablocal")) {
+ if (!strcmp(arg, "-grablocal")) {
CHECK_ARGC
grab_local = atoi(argv[++i]);
+ continue;
+ }
#endif
- } else if (!strcmp(arg, "-viewpasswd")) {
+ if (!strcmp(arg, "-viewpasswd")) {
vpw_loc = i;
CHECK_ARGC
viewonly_passwd = strdup(argv[++i]);
got_viewpasswd = 1;
- } else if (!strcmp(arg, "-passwdfile")) {
+ continue;
+ }
+ if (!strcmp(arg, "-passwdfile")) {
CHECK_ARGC
passwdfile = strdup(argv[++i]);
got_passwdfile = 1;
- } else if (!strcmp(arg, "-svc") || !strcmp(arg, "-service")) {
+ continue;
+ }
+ if (!strcmp(arg, "-svc") || !strcmp(arg, "-service")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvfb");
unixpw = 1;
users_list = strdup("unixpw=");
use_openssl = 1;
openssl_pem = strdup("SAVE");
- } else if (!strcmp(arg, "-svc_xdummy")) {
+ continue;
+ }
+ if (!strcmp(arg, "-svc_xdummy")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xdummy");
unixpw = 1;
users_list = strdup("unixpw=");
use_openssl = 1;
openssl_pem = strdup("SAVE");
set_env("FD_XDUMMY_NOROOT", "1");
- } else if (!strcmp(arg, "-svc_xvnc")) {
+ continue;
+ }
+ if (!strcmp(arg, "-svc_xvnc")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvnc");
unixpw = 1;
users_list = strdup("unixpw=");
use_openssl = 1;
openssl_pem = strdup("SAVE");
- } else if (!strcmp(arg, "-xdmsvc") || !strcmp(arg, "-xdm_service")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xdmsvc") || !strcmp(arg, "-xdm_service")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp");
unixpw = 1;
users_list = strdup("unixpw=");
use_openssl = 1;
openssl_pem = strdup("SAVE");
- } else if (!strcmp(arg, "-sshxdmsvc")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sshxdmsvc")) {
use_dpy = strdup("WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp");
allow_list = strdup("127.0.0.1");
got_localhost = 1;
+ continue;
+ }
#ifndef NO_SSL_OR_UNIXPW
- } else if (!strcmp(arg, "-unixpw_cmd")
+ if (!strcmp(arg, "-unixpw_cmd")
|| !strcmp(arg, "-unixpw_cmd_unsafe")) {
CHECK_ARGC
unixpw_cmd = strdup(argv[++i]);
@@ -2739,7 +2313,9 @@ int main(int argc, char* argv[]) {
set_env("UNIXPW_DISABLE_SSL", "1");
set_env("UNIXPW_DISABLE_LOCALHOST", "1");
}
- } else if (strstr(arg, "-unixpw") == arg) {
+ continue;
+ }
+ if (strstr(arg, "-unixpw") == arg) {
unixpw = 1;
if (strstr(arg, "-unixpw_nis")) {
unixpw_nis = 1;
@@ -2761,10 +2337,14 @@ int main(int argc, char* argv[]) {
set_env("UNIXPW_DISABLE_SSL", "1");
set_env("UNIXPW_DISABLE_LOCALHOST", "1");
}
- } else if (!strcmp(arg, "-nossl")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nossl")) {
use_openssl = 0;
openssl_pem = NULL;
- } else if (!strcmp(arg, "-ssl")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ssl")) {
use_openssl = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2773,25 +2353,35 @@ int main(int argc, char* argv[]) {
i++;
}
}
- } else if (!strcmp(arg, "-enc")) {
+ continue;
+ }
+ if (!strcmp(arg, "-enc")) {
char *q;
use_openssl = 1;
CHECK_ARGC
enc_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-ssltimeout")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ssltimeout")) {
CHECK_ARGC
ssl_timeout_secs = atoi(argv[++i]);
- } else if (!strcmp(arg, "-sslnofail")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sslnofail")) {
ssl_no_fail = 1;
- } else if (!strcmp(arg, "-ssldir")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ssldir")) {
CHECK_ARGC
ssl_certs_dir = strdup(argv[++i]);
-
- } else if (!strcmp(arg, "-sslverify")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sslverify")) {
CHECK_ARGC
ssl_verify = strdup(argv[++i]);
-
- } else if (!strcmp(arg, "-sslGenCA")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sslGenCA")) {
char *cdir = NULL;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2802,7 +2392,9 @@ int main(int argc, char* argv[]) {
}
sslGenCA(cdir);
exit(0);
- } else if (!strcmp(arg, "-sslGenCert")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sslGenCert")) {
char *ty, *nm = NULL;
if (i >= argc-1) {
fprintf(stderr, "Must be:\n");
@@ -2822,26 +2414,34 @@ int main(int argc, char* argv[]) {
}
sslGenCert(ty, nm);
exit(0);
- } else if (!strcmp(arg, "-sslEncKey")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sslEncKey")) {
if (i < argc-1) {
char *s = argv[i+1];
sslEncKey(s, 0);
}
exit(0);
- } else if (!strcmp(arg, "-sslCertInfo")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sslCertInfo")) {
if (i < argc-1) {
char *s = argv[i+1];
sslEncKey(s, 1);
}
exit(0);
- } else if (!strcmp(arg, "-sslDelCert")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sslDelCert")) {
if (i < argc-1) {
char *s = argv[i+1];
sslEncKey(s, 2);
}
exit(0);
- } else if (!strcmp(arg, "-stunnel")) {
+ continue;
+ }
+ if (!strcmp(arg, "-stunnel")) {
use_stunnel = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2850,7 +2450,9 @@ int main(int argc, char* argv[]) {
i++;
}
}
- } else if (!strcmp(arg, "-stunnel3")) {
+ continue;
+ }
+ if (!strcmp(arg, "-stunnel3")) {
use_stunnel = 3;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2859,7 +2461,9 @@ int main(int argc, char* argv[]) {
i++;
}
}
- } else if (!strcmp(arg, "-https")) {
+ continue;
+ }
+ if (!strcmp(arg, "-https")) {
https_port_num = 0;
try_http = 1;
if (i < argc-1) {
@@ -2869,7 +2473,9 @@ int main(int argc, char* argv[]) {
i++;
}
}
- } else if (!strcmp(arg, "-httpsredir")) {
+ continue;
+ }
+ if (!strcmp(arg, "-httpsredir")) {
https_port_redir = -1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2878,15 +2484,23 @@ int main(int argc, char* argv[]) {
i++;
}
}
+ continue;
+ }
#endif
- } else if (!strcmp(arg, "-nopw")) {
+ if (!strcmp(arg, "-nopw")) {
nopw = 1;
- } else if (!strcmp(arg, "-ssh")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ssh")) {
CHECK_ARGC
ssh_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-usepw")) {
+ continue;
+ }
+ if (!strcmp(arg, "-usepw")) {
usepw = 1;
- } else if (!strcmp(arg, "-storepasswd")) {
+ continue;
+ }
+ if (!strcmp(arg, "-storepasswd")) {
if (argc == i+1) {
store_homedir_passwd(NULL);
exit(0);
@@ -2904,22 +2518,36 @@ int main(int argc, char* argv[]) {
argv[i+2]);
exit(0);
}
- } else if (!strcmp(arg, "-accept")) {
+ continue;
+ }
+ if (!strcmp(arg, "-accept")) {
CHECK_ARGC
accept_cmd = strdup(argv[++i]);
- } else if (!strcmp(arg, "-afteraccept")) {
+ continue;
+ }
+ if (!strcmp(arg, "-afteraccept")) {
CHECK_ARGC
afteraccept_cmd = strdup(argv[++i]);
- } else if (!strcmp(arg, "-gone")) {
+ continue;
+ }
+ if (!strcmp(arg, "-gone")) {
CHECK_ARGC
gone_cmd = strdup(argv[++i]);
- } else if (!strcmp(arg, "-noshm")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noshm")) {
using_shm = 0;
- } else if (!strcmp(arg, "-flipbyteorder")) {
+ continue;
+ }
+ if (!strcmp(arg, "-flipbyteorder")) {
flip_byte_order = 1;
- } else if (!strcmp(arg, "-onetile")) {
+ continue;
+ }
+ if (!strcmp(arg, "-onetile")) {
single_copytile = 1;
- } else if (!strcmp(arg, "-solid")) {
+ continue;
+ }
+ if (!strcmp(arg, "-solid")) {
use_solid_bg = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2931,16 +2559,26 @@ int main(int argc, char* argv[]) {
if (! solid_str) {
solid_str = strdup(solid_default);
}
- } else if (!strcmp(arg, "-blackout")) {
+ continue;
+ }
+ if (!strcmp(arg, "-blackout")) {
CHECK_ARGC
blackout_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-xinerama")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xinerama")) {
xinerama = 1;
- } else if (!strcmp(arg, "-noxinerama")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noxinerama")) {
xinerama = 0;
- } else if (!strcmp(arg, "-xtrap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xtrap")) {
xtrap_input = 1;
- } else if (!strcmp(arg, "-xrandr")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xrandr")) {
xrandr = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -2949,106 +2587,182 @@ int main(int argc, char* argv[]) {
i++;
}
}
- } else if (!strcmp(arg, "-noxrandr")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noxrandr")) {
xrandr = 0;
xrandr_maybe = 0;
- } else if (!strcmp(arg, "-rotate")) {
+ continue;
+ }
+ if (!strcmp(arg, "-rotate")) {
CHECK_ARGC
rotating_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-padgeom")
+ continue;
+ }
+ if (!strcmp(arg, "-padgeom")
|| !strcmp(arg, "-padgeometry")) {
CHECK_ARGC
pad_geometry = strdup(argv[++i]);
- } else if (!strcmp(arg, "-o") || !strcmp(arg, "-logfile")) {
+ continue;
+ }
+ if (!strcmp(arg, "-o") || !strcmp(arg, "-logfile")) {
CHECK_ARGC
logfile_append = 0;
logfile = strdup(argv[++i]);
- } else if (!strcmp(arg, "-oa") || !strcmp(arg, "-logappend")) {
+ continue;
+ }
+ if (!strcmp(arg, "-oa") || !strcmp(arg, "-logappend")) {
CHECK_ARGC
logfile_append = 1;
logfile = strdup(argv[++i]);
- } else if (!strcmp(arg, "-flag")) {
+ continue;
+ }
+ if (!strcmp(arg, "-flag")) {
CHECK_ARGC
flagfile = strdup(argv[++i]);
- } else if (!strcmp(arg, "-rc")) {
+ continue;
+ }
+ if (!strcmp(arg, "-rc")) {
i++; /* done above */
- } else if (!strcmp(arg, "-norc")) {
+ continue;
+ }
+ if (!strcmp(arg, "-norc")) {
; /* done above */
- } else if (!strcmp(arg, "-env")) {
+ continue;
+ }
+ if (!strcmp(arg, "-env")) {
i++; /* done above */
- } else if (!strcmp(arg, "-prog")) {
+ continue;
+ }
+ if (!strcmp(arg, "-prog")) {
CHECK_ARGC
if (program_name) {
free(program_name);
}
program_name = strdup(argv[++i]);
- } else if (!strcmp(arg, "-h") || !strcmp(arg, "-help")) {
+ continue;
+ }
+ if (!strcmp(arg, "-h") || !strcmp(arg, "-help")) {
print_help(0);
- } else if (!strcmp(arg, "-?") || !strcmp(arg, "-opts")) {
+ continue;
+ }
+ if (!strcmp(arg, "-?") || !strcmp(arg, "-opts")) {
print_help(1);
- } else if (!strcmp(arg, "-V") || !strcmp(arg, "-version")) {
+ continue;
+ }
+ if (!strcmp(arg, "-V") || !strcmp(arg, "-version")) {
fprintf(stdout, "x11vnc: %s\n", lastmod);
exit(0);
- } else if (!strcmp(arg, "-license") ||
+ continue;
+ }
+ if (!strcmp(arg, "-license") ||
!strcmp(arg, "-copying") || !strcmp(arg, "-warranty")) {
print_license();
- } else if (!strcmp(arg, "-dbg")) {
+ continue;
+ }
+ if (!strcmp(arg, "-dbg")) {
crash_debug = 1;
- } else if (!strcmp(arg, "-nodbg")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nodbg")) {
crash_debug = 0;
- } else if (!strcmp(arg, "-q") || !strcmp(arg, "-quiet")) {
+ continue;
+ }
+ if (!strcmp(arg, "-q") || !strcmp(arg, "-quiet")) {
quiet = 1;
- } else if (!strcmp(arg, "-v") || !strcmp(arg, "-verbose")) {
+ continue;
+ }
+ if (!strcmp(arg, "-v") || !strcmp(arg, "-verbose")) {
verbose = 1;
- } else if (!strcmp(arg, "-bg") || !strcmp(arg, "-background")) {
+ continue;
+ }
+ if (!strcmp(arg, "-bg") || !strcmp(arg, "-background")) {
#if LIBVNCSERVER_HAVE_SETSID
bg = 1;
opts_bg = bg;
#else
fprintf(stderr, "warning: -bg mode not supported.\n");
#endif
- } else if (!strcmp(arg, "-modtweak")) {
+ continue;
+ }
+ if (!strcmp(arg, "-modtweak")) {
use_modifier_tweak = 1;
- } else if (!strcmp(arg, "-nomodtweak")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nomodtweak")) {
use_modifier_tweak = 0;
got_nomodtweak = 1;
- } else if (!strcmp(arg, "-isolevel3")) {
+ continue;
+ }
+ if (!strcmp(arg, "-isolevel3")) {
use_iso_level3 = 1;
- } else if (!strcmp(arg, "-xkb")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xkb")) {
use_modifier_tweak = 1;
use_xkb_modtweak = 1;
- } else if (!strcmp(arg, "-noxkb")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noxkb")) {
use_xkb_modtweak = 0;
got_noxkb = 1;
- } else if (!strcmp(arg, "-capslock")) {
+ continue;
+ }
+ if (!strcmp(arg, "-capslock")) {
watch_capslock = 1;
- } else if (!strcmp(arg, "-skip_lockkeys")) {
+ continue;
+ }
+ if (!strcmp(arg, "-skip_lockkeys")) {
skip_lockkeys = 1;
- } else if (!strcmp(arg, "-xkbcompat")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xkbcompat")) {
xkbcompat = 1;
- } else if (!strcmp(arg, "-skip_keycodes")) {
+ continue;
+ }
+ if (!strcmp(arg, "-skip_keycodes")) {
CHECK_ARGC
skip_keycodes = strdup(argv[++i]);
- } else if (!strcmp(arg, "-sloppy_keys")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sloppy_keys")) {
sloppy_keys++;
- } else if (!strcmp(arg, "-skip_dups")) {
+ continue;
+ }
+ if (!strcmp(arg, "-skip_dups")) {
skip_duplicate_key_events = 1;
- } else if (!strcmp(arg, "-noskip_dups")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noskip_dups")) {
skip_duplicate_key_events = 0;
- } else if (!strcmp(arg, "-add_keysyms")) {
+ continue;
+ }
+ if (!strcmp(arg, "-add_keysyms")) {
add_keysyms++;
- } else if (!strcmp(arg, "-noadd_keysyms")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noadd_keysyms")) {
add_keysyms = 0;
- } else if (!strcmp(arg, "-clear_mods")) {
+ continue;
+ }
+ if (!strcmp(arg, "-clear_mods")) {
clear_mods = 1;
- } else if (!strcmp(arg, "-clear_keys")) {
+ continue;
+ }
+ if (!strcmp(arg, "-clear_keys")) {
clear_mods = 2;
- } else if (!strcmp(arg, "-clear_all")) {
+ continue;
+ }
+ if (!strcmp(arg, "-clear_all")) {
clear_mods = 3;
- } else if (!strcmp(arg, "-remap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-remap")) {
CHECK_ARGC
remap_file = strdup(argv[++i]);
- } else if (!strcmp(arg, "-norepeat")) {
+ continue;
+ }
+ if (!strcmp(arg, "-norepeat")) {
no_autorepeat = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -3059,29 +2773,49 @@ int main(int argc, char* argv[]) {
no_repeat_countdown = atoi(argv[++i]);
}
}
- } else if (!strcmp(arg, "-repeat")) {
+ continue;
+ }
+ if (!strcmp(arg, "-repeat")) {
no_autorepeat = 0;
- } else if (!strcmp(arg, "-nofb")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nofb")) {
nofb = 1;
- } else if (!strcmp(arg, "-nobell")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nobell")) {
watch_bell = 0;
sound_bell = 0;
- } else if (!strcmp(arg, "-nosel")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nosel")) {
watch_selection = 0;
watch_primary = 0;
watch_clipboard = 0;
- } else if (!strcmp(arg, "-noprimary")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noprimary")) {
watch_primary = 0;
- } else if (!strcmp(arg, "-nosetprimary")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nosetprimary")) {
set_primary = 0;
- } else if (!strcmp(arg, "-noclipboard")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noclipboard")) {
watch_clipboard = 0;
- } else if (!strcmp(arg, "-nosetclipboard")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nosetclipboard")) {
set_clipboard = 0;
- } else if (!strcmp(arg, "-seldir")) {
+ continue;
+ }
+ if (!strcmp(arg, "-seldir")) {
CHECK_ARGC
sel_direction = strdup(argv[++i]);
- } else if (!strcmp(arg, "-cursor")) {
+ continue;
+ }
+ if (!strcmp(arg, "-cursor")) {
show_cursor = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -3091,51 +2825,87 @@ int main(int argc, char* argv[]) {
if (!strcmp(s, "none")) {
show_cursor = 0;
}
- }
+ }
}
- } else if (!strcmp(arg, "-nocursor")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nocursor")) {
multiple_cursors_mode = strdup("none");
show_cursor = 0;
- } else if (!strcmp(arg, "-cursor_drag")) {
+ continue;
+ }
+ if (!strcmp(arg, "-cursor_drag")) {
cursor_drag_changes = 1;
- } else if (!strcmp(arg, "-nocursor_drag")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nocursor_drag")) {
cursor_drag_changes = 0;
- } else if (!strcmp(arg, "-arrow")) {
+ continue;
+ }
+ if (!strcmp(arg, "-arrow")) {
CHECK_ARGC
alt_arrow = atoi(argv[++i]);
- } else if (!strcmp(arg, "-xfixes")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xfixes")) {
use_xfixes = 1;
- } else if (!strcmp(arg, "-noxfixes")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noxfixes")) {
use_xfixes = 0;
- } else if (!strcmp(arg, "-alphacut")) {
+ continue;
+ }
+ if (!strcmp(arg, "-alphacut")) {
CHECK_ARGC
alpha_threshold = atoi(argv[++i]);
- } else if (!strcmp(arg, "-alphafrac")) {
+ continue;
+ }
+ if (!strcmp(arg, "-alphafrac")) {
CHECK_ARGC
alpha_frac = atof(argv[++i]);
- } else if (!strcmp(arg, "-alpharemove")) {
+ continue;
+ }
+ if (!strcmp(arg, "-alpharemove")) {
alpha_remove = 1;
- } else if (!strcmp(arg, "-noalphablend")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noalphablend")) {
alpha_blend = 0;
- } else if (!strcmp(arg, "-nocursorshape")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nocursorshape")) {
cursor_shape_updates = 0;
- } else if (!strcmp(arg, "-cursorpos")) {
+ continue;
+ }
+ if (!strcmp(arg, "-cursorpos")) {
cursor_pos_updates = 1;
got_cursorpos = 1;
- } else if (!strcmp(arg, "-nocursorpos")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nocursorpos")) {
cursor_pos_updates = 0;
- } else if (!strcmp(arg, "-xwarppointer")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xwarppointer")) {
use_xwarppointer = 1;
- } else if (!strcmp(arg, "-noxwarppointer")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noxwarppointer")) {
use_xwarppointer = 0;
got_noxwarppointer = 1;
- } else if (!strcmp(arg, "-buttonmap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-buttonmap")) {
CHECK_ARGC
pointer_remap = strdup(argv[++i]);
- } else if (!strcmp(arg, "-nodragging")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nodragging")) {
show_dragging = 0;
+ continue;
+ }
#ifndef NO_NCACHE
- } else if (!strcmp(arg, "-ncache") || !strcmp(arg, "-nc")) {
+ if (!strcmp(arg, "-ncache") || !strcmp(arg, "-nc")) {
if (i < argc-1) {
char *s = argv[i+1];
if (s[0] != '-') {
@@ -3150,27 +2920,47 @@ int main(int argc, char* argv[]) {
if (ncache % 2 != 0) {
ncache++;
}
- } else if (!strcmp(arg, "-noncache") || !strcmp(arg, "-nonc")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noncache") || !strcmp(arg, "-nonc")) {
ncache = 0;
- } else if (!strcmp(arg, "-ncache_cr") || !strcmp(arg, "-nc_cr")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ncache_cr") || !strcmp(arg, "-nc_cr")) {
ncache_copyrect = 1;
- } else if (!strcmp(arg, "-ncache_no_moveraise") || !strcmp(arg, "-nc_no_moveraise")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ncache_no_moveraise") || !strcmp(arg, "-nc_no_moveraise")) {
ncache_wf_raises = 1;
- } else if (!strcmp(arg, "-ncache_no_dtchange") || !strcmp(arg, "-nc_no_dtchange")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ncache_no_dtchange") || !strcmp(arg, "-nc_no_dtchange")) {
ncache_dt_change = 0;
- } else if (!strcmp(arg, "-ncache_no_rootpixmap") || !strcmp(arg, "-nc_no_rootpixmap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ncache_no_rootpixmap") || !strcmp(arg, "-nc_no_rootpixmap")) {
ncache_xrootpmap = 0;
- } else if (!strcmp(arg, "-ncache_keep_anims") || !strcmp(arg, "-nc_keep_anims")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ncache_keep_anims") || !strcmp(arg, "-nc_keep_anims")) {
ncache_keep_anims = 1;
- } else if (!strcmp(arg, "-ncache_old_wm") || !strcmp(arg, "-nc_old_wm")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ncache_old_wm") || !strcmp(arg, "-nc_old_wm")) {
ncache_old_wm = 1;
- } else if (!strcmp(arg, "-ncache_pad") || !strcmp(arg, "-nc_pad")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ncache_pad") || !strcmp(arg, "-nc_pad")) {
CHECK_ARGC
ncache_pad = atoi(argv[++i]);
- } else if (!strcmp(arg, "-debug_ncache")) {
+ continue;
+ }
+ if (!strcmp(arg, "-debug_ncache")) {
ncdb++;
+ continue;
+ }
#endif
- } else if (!strcmp(arg, "-wireframe")
+ if (!strcmp(arg, "-wireframe")
|| !strcmp(arg, "-wf")) {
wireframe = 1;
if (i < argc-1) {
@@ -3179,65 +2969,101 @@ int main(int argc, char* argv[]) {
wireframe_str = strdup(argv[++i]);
}
}
- } else if (!strcmp(arg, "-nowireframe")
+ continue;
+ }
+ if (!strcmp(arg, "-nowireframe")
|| !strcmp(arg, "-nowf")) {
wireframe = 0;
- } else if (!strcmp(arg, "-nowireframelocal")
+ continue;
+ }
+ if (!strcmp(arg, "-nowireframelocal")
|| !strcmp(arg, "-nowfl")) {
wireframe_local = 0;
- } else if (!strcmp(arg, "-wirecopyrect")
+ continue;
+ }
+ if (!strcmp(arg, "-wirecopyrect")
|| !strcmp(arg, "-wcr")) {
CHECK_ARGC
set_wirecopyrect_mode(argv[++i]);
got_wirecopyrect = 1;
- } else if (!strcmp(arg, "-nowirecopyrect")
+ continue;
+ }
+ if (!strcmp(arg, "-nowirecopyrect")
|| !strcmp(arg, "-nowcr")) {
set_wirecopyrect_mode("never");
- } else if (!strcmp(arg, "-debug_wireframe")
+ continue;
+ }
+ if (!strcmp(arg, "-debug_wireframe")
|| !strcmp(arg, "-dwf")) {
debug_wireframe++;
- } else if (!strcmp(arg, "-scrollcopyrect")
+ continue;
+ }
+ if (!strcmp(arg, "-scrollcopyrect")
|| !strcmp(arg, "-scr")) {
CHECK_ARGC
set_scrollcopyrect_mode(argv[++i]);
got_scrollcopyrect = 1;
- } else if (!strcmp(arg, "-noscrollcopyrect")
+ continue;
+ }
+ if (!strcmp(arg, "-noscrollcopyrect")
|| !strcmp(arg, "-noscr")) {
set_scrollcopyrect_mode("never");
- } else if (!strcmp(arg, "-scr_area")) {
+ continue;
+ }
+ if (!strcmp(arg, "-scr_area")) {
int tn;
CHECK_ARGC
tn = atoi(argv[++i]);
if (tn >= 0) {
scrollcopyrect_min_area = tn;
}
- } else if (!strcmp(arg, "-scr_skip")) {
+ continue;
+ }
+ if (!strcmp(arg, "-scr_skip")) {
CHECK_ARGC
scroll_skip_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-scr_inc")) {
+ continue;
+ }
+ if (!strcmp(arg, "-scr_inc")) {
CHECK_ARGC
scroll_good_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-scr_keys")) {
+ continue;
+ }
+ if (!strcmp(arg, "-scr_keys")) {
CHECK_ARGC
scroll_key_list_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-scr_term")) {
+ continue;
+ }
+ if (!strcmp(arg, "-scr_term")) {
CHECK_ARGC
scroll_term_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-scr_keyrepeat")) {
+ continue;
+ }
+ if (!strcmp(arg, "-scr_keyrepeat")) {
CHECK_ARGC
max_keyrepeat_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-scr_parms")) {
+ continue;
+ }
+ if (!strcmp(arg, "-scr_parms")) {
CHECK_ARGC
scroll_copyrect_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-fixscreen")) {
+ continue;
+ }
+ if (!strcmp(arg, "-fixscreen")) {
CHECK_ARGC
screen_fixup_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-debug_scroll")
+ continue;
+ }
+ if (!strcmp(arg, "-debug_scroll")
|| !strcmp(arg, "-ds")) {
debug_scroll++;
- } else if (!strcmp(arg, "-noxrecord")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noxrecord")) {
noxrecord = 1;
- } else if (!strcmp(arg, "-pointer_mode")
+ continue;
+ }
+ if (!strcmp(arg, "-pointer_mode")
|| !strcmp(arg, "-pm")) {
char *p, *s;
CHECK_ARGC
@@ -3254,95 +3080,168 @@ int main(int argc, char* argv[]) {
pointer_mode = atoi(s);
got_pointer_mode = pointer_mode;
}
- } else if (!strcmp(arg, "-input_skip")) {
+ continue;
+ }
+ if (!strcmp(arg, "-input_skip")) {
CHECK_ARGC
ui_skip = atoi(argv[++i]);
if (! ui_skip) ui_skip = 1;
- } else if (!strcmp(arg, "-allinput")) {
+ continue;
+ }
+ if (!strcmp(arg, "-allinput")) {
all_input = 1;
- } else if (!strcmp(arg, "-noallinput")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noallinput")) {
all_input = 0;
- } else if (!strcmp(arg, "-speeds")) {
+ continue;
+ }
+ if (!strcmp(arg, "-speeds")) {
CHECK_ARGC
speeds_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-wmdt")) {
+ continue;
+ }
+ if (!strcmp(arg, "-wmdt")) {
CHECK_ARGC
wmdt_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-debug_pointer")
+ continue;
+ }
+ if (!strcmp(arg, "-debug_pointer")
|| !strcmp(arg, "-dp")) {
debug_pointer++;
- } else if (!strcmp(arg, "-debug_keyboard")
+ continue;
+ }
+ if (!strcmp(arg, "-debug_keyboard")
|| !strcmp(arg, "-dk")) {
debug_keyboard++;
- } else if (!strcmp(arg, "-debug_xdamage")) {
+ continue;
+ }
+ if (!strcmp(arg, "-debug_xdamage")) {
debug_xdamage++;
- } else if (!strcmp(arg, "-defer")) {
+ continue;
+ }
+ if (!strcmp(arg, "-defer")) {
CHECK_ARGC
defer_update = atoi(argv[++i]);
got_defer = 1;
- } else if (!strcmp(arg, "-wait")) {
+ continue;
+ }
+ if (!strcmp(arg, "-wait")) {
CHECK_ARGC
waitms = atoi(argv[++i]);
got_waitms = 1;
- } else if (!strcmp(arg, "-wait_ui")) {
+ continue;
+ }
+ if (!strcmp(arg, "-wait_ui")) {
CHECK_ARGC
wait_ui = atof(argv[++i]);
- } else if (!strcmp(arg, "-nowait_bog")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nowait_bog")) {
wait_bog = 0;
- } else if (!strcmp(arg, "-slow_fb")) {
+ continue;
+ }
+ if (!strcmp(arg, "-slow_fb")) {
CHECK_ARGC
slow_fb = atof(argv[++i]);
- } else if (!strcmp(arg, "-xrefresh")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xrefresh")) {
CHECK_ARGC
xrefresh = atof(argv[++i]);
- } else if (!strcmp(arg, "-readtimeout")) {
+ continue;
+ }
+ if (!strcmp(arg, "-readtimeout")) {
CHECK_ARGC
rfbMaxClientWait = atoi(argv[++i]) * 1000;
- } else if (!strcmp(arg, "-ping")) {
+ continue;
+ }
+ if (!strcmp(arg, "-ping")) {
CHECK_ARGC
ping_interval = atoi(argv[++i]);
- } else if (!strcmp(arg, "-nap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nap")) {
take_naps = 1;
- } else if (!strcmp(arg, "-nonap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nonap")) {
take_naps = 0;
- } else if (!strcmp(arg, "-sb")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sb")) {
CHECK_ARGC
screen_blank = atoi(argv[++i]);
- } else if (!strcmp(arg, "-nofbpm")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nofbpm")) {
watch_fbpm = 1;
- } else if (!strcmp(arg, "-fbpm")) {
+ continue;
+ }
+ if (!strcmp(arg, "-fbpm")) {
watch_fbpm = 0;
- } else if (!strcmp(arg, "-nodpms")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nodpms")) {
watch_dpms = 1;
- } else if (!strcmp(arg, "-dpms")) {
+ continue;
+ }
+ if (!strcmp(arg, "-dpms")) {
watch_dpms = 0;
- } else if (!strcmp(arg, "-forcedpms")) {
+ continue;
+ }
+ if (!strcmp(arg, "-forcedpms")) {
force_dpms = 1;
- } else if (!strcmp(arg, "-clientdpms")) {
+ continue;
+ }
+ if (!strcmp(arg, "-clientdpms")) {
client_dpms = 1;
- } else if (!strcmp(arg, "-noserverdpms")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noserverdpms")) {
no_ultra_dpms = 1;
- } else if (!strcmp(arg, "-noultraext")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noultraext")) {
no_ultra_ext = 1;
- } else if (!strcmp(arg, "-xdamage")) {
+ continue;
+ }
+ if (!strcmp(arg, "-chatwindow")) {
+ chat_window = 1;
+ if (argc_vnc + 1 < argc_vnc_max) {
+ rfbLog("setting '-rfbversion 3.6' for -chatwindow.\n");
+ argv_vnc[argc_vnc++] = strdup("-rfbversion");
+ argv_vnc[argc_vnc++] = strdup("3.6");
+ }
+ continue;
+ }
+ if (!strcmp(arg, "-xdamage")) {
use_xdamage++;
- } else if (!strcmp(arg, "-noxdamage")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noxdamage")) {
use_xdamage = 0;
- } else if (!strcmp(arg, "-xd_area")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xd_area")) {
int tn;
CHECK_ARGC
tn = atoi(argv[++i]);
if (tn >= 0) {
xdamage_max_area = tn;
}
- } else if (!strcmp(arg, "-xd_mem")) {
+ continue;
+ }
+ if (!strcmp(arg, "-xd_mem")) {
double f;
CHECK_ARGC
f = atof(argv[++i]);
if (f >= 0.0) {
xdamage_memory = f;
}
- } else if (!strcmp(arg, "-sigpipe") || !strcmp(arg, "-sig")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sigpipe") || !strcmp(arg, "-sig")) {
CHECK_ARGC
if (known_sigpipe_mode(argv[++i])) {
sigpipe = strdup(argv[i]);
@@ -3351,8 +3250,10 @@ int main(int argc, char* argv[]) {
" be \"ignore\" or \"exit\"\n", argv[i]);
exit(1);
}
+ continue;
+ }
#if LIBVNCSERVER_HAVE_LIBPTHREAD
- } else if (!strcmp(arg, "-threads")) {
+ if (!strcmp(arg, "-threads")) {
#if defined(X11VNC_THREADED)
use_threads = 1;
#else
@@ -3369,69 +3270,119 @@ int main(int argc, char* argv[]) {
usleep(500*1000);
}
#endif
- } else if (!strcmp(arg, "-nothreads")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nothreads")) {
use_threads = 0;
+ continue;
+ }
#endif
- } else if (!strcmp(arg, "-fs")) {
+ if (!strcmp(arg, "-fs")) {
CHECK_ARGC
fs_frac = atof(argv[++i]);
- } else if (!strcmp(arg, "-gaps")) {
+ continue;
+ }
+ if (!strcmp(arg, "-gaps")) {
CHECK_ARGC
gaps_fill = atoi(argv[++i]);
- } else if (!strcmp(arg, "-grow")) {
+ continue;
+ }
+ if (!strcmp(arg, "-grow")) {
CHECK_ARGC
grow_fill = atoi(argv[++i]);
- } else if (!strcmp(arg, "-fuzz")) {
+ continue;
+ }
+ if (!strcmp(arg, "-fuzz")) {
CHECK_ARGC
tile_fuzz = atoi(argv[++i]);
- } else if (!strcmp(arg, "-debug_tiles")
+ continue;
+ }
+ if (!strcmp(arg, "-debug_tiles")
|| !strcmp(arg, "-dbt")) {
debug_tiles++;
- } else if (!strcmp(arg, "-debug_grabs")) {
+ continue;
+ }
+ if (!strcmp(arg, "-debug_grabs")) {
debug_grabs++;
- } else if (!strcmp(arg, "-debug_sel")) {
+ continue;
+ }
+ if (!strcmp(arg, "-debug_sel")) {
debug_sel++;
- } else if (!strcmp(arg, "-grab_buster")) {
+ continue;
+ }
+ if (!strcmp(arg, "-grab_buster")) {
grab_buster++;
- } else if (!strcmp(arg, "-nograb_buster")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nograb_buster")) {
grab_buster = 0;
- } else if (!strcmp(arg, "-snapfb")) {
+ continue;
+ }
+ if (!strcmp(arg, "-snapfb")) {
use_snapfb = 1;
- } else if (!strcmp(arg, "-rawfb")) {
+ continue;
+ }
+ if (!strcmp(arg, "-rawfb")) {
CHECK_ARGC
raw_fb_str = strdup(argv[++i]);
if (strstr(raw_fb_str, "vnc:") == raw_fb_str) {
shared = 1;
}
- } else if (!strcmp(arg, "-freqtab")) {
+ continue;
+ }
+ if (!strcmp(arg, "-freqtab")) {
CHECK_ARGC
freqtab = strdup(argv[++i]);
- } else if (!strcmp(arg, "-pipeinput")) {
+ continue;
+ }
+ if (!strcmp(arg, "-pipeinput")) {
CHECK_ARGC
pipeinput_str = strdup(argv[++i]);
- } else if (!strcmp(arg, "-macnodim")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macnodim")) {
macosx_nodimming = 1;
- } else if (!strcmp(arg, "-macnosleep")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macnosleep")) {
macosx_nosleep = 1;
- } else if (!strcmp(arg, "-macnosaver")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macnosaver")) {
macosx_noscreensaver = 1;
- } else if (!strcmp(arg, "-macnowait")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macnowait")) {
macosx_wait_for_switch = 0;
- } else if (!strcmp(arg, "-macwheel")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macwheel")) {
CHECK_ARGC
macosx_mouse_wheel_speed = atoi(argv[++i]);
- } else if (!strcmp(arg, "-macnoswap")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macnoswap")) {
macosx_swap23 = 0;
- } else if (!strcmp(arg, "-macnoresize")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macnoresize")) {
macosx_resize = 0;
- } else if (!strcmp(arg, "-maciconanim")) {
+ continue;
+ }
+ if (!strcmp(arg, "-maciconanim")) {
CHECK_ARGC
macosx_icon_anim_time = atoi(argv[++i]);
- } else if (!strcmp(arg, "-macmenu")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macmenu")) {
macosx_ncache_macmenu = 1;
- } else if (!strcmp(arg, "-macuskbd")) {
+ continue;
+ }
+ if (!strcmp(arg, "-macuskbd")) {
macosx_us_kbd = 1;
- } else if (!strcmp(arg, "-gui")) {
+ continue;
+ }
+ if (!strcmp(arg, "-gui")) {
launch_gui = 1;
if (i < argc-1) {
char *s = argv[i+1];
@@ -3441,9 +3392,11 @@ int main(int argc, char* argv[]) {
got_gui_pw = 1;
}
i++;
- }
+ }
}
- } else if (!strcmp(arg, "-remote") || !strcmp(arg, "-R")
+ continue;
+ }
+ if (!strcmp(arg, "-remote") || !strcmp(arg, "-R")
|| !strcmp(arg, "-r") || !strcmp(arg, "-remote-control")) {
char *str;
CHECK_ARGC
@@ -3475,41 +3428,69 @@ int main(int argc, char* argv[]) {
}
quiet = 1;
xkbcompat = 0;
- } else if (!strcmp(arg, "-query") || !strcmp(arg, "-Q")) {
+ continue;
+ }
+ if (!strcmp(arg, "-query") || !strcmp(arg, "-Q")) {
CHECK_ARGC
query_cmd = strdup(argv[++i]);
quiet = 1;
xkbcompat = 0;
- } else if (!strcmp(arg, "-QD")) {
+ continue;
+ }
+ if (!strcmp(arg, "-QD")) {
CHECK_ARGC
query_cmd = strdup(argv[++i]);
query_default = 1;
- } else if (!strcmp(arg, "-sync")) {
+ continue;
+ }
+ if (!strcmp(arg, "-sync")) {
remote_sync = 1;
- } else if (!strcmp(arg, "-nosync")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nosync")) {
remote_sync = 0;
- } else if (!strcmp(arg, "-noremote")) {
+ continue;
+ }
+ if (!strcmp(arg, "-noremote")) {
accept_remote_cmds = 0;
- } else if (!strcmp(arg, "-yesremote")) {
+ continue;
+ }
+ if (!strcmp(arg, "-yesremote")) {
accept_remote_cmds = 1;
- } else if (!strcmp(arg, "-unsafe")) {
+ continue;
+ }
+ if (!strcmp(arg, "-unsafe")) {
safe_remote_only = 0;
- } else if (!strcmp(arg, "-privremote")) {
+ continue;
+ }
+ if (!strcmp(arg, "-privremote")) {
priv_remote = 1;
- } else if (!strcmp(arg, "-safer")) {
+ continue;
+ }
+ if (!strcmp(arg, "-safer")) {
more_safe = 1;
- } else if (!strcmp(arg, "-nocmds")) {
+ continue;
+ }
+ if (!strcmp(arg, "-nocmds")) {
no_external_cmds = 1;
- } else if (!strcmp(arg, "-allowedcmds")) {
+ continue;
+ }
+ if (!strcmp(arg, "-allowedcmds")) {
CHECK_ARGC
allowed_external_cmds = strdup(argv[++i]);
- } else if (!strcmp(arg, "-deny_all")) {
+ continue;
+ }
+ if (!strcmp(arg, "-deny_all")) {
deny_all = 1;
- } else if (!strcmp(arg, "-httpdir")) {
+ continue;
+ }
+ if (!strcmp(arg, "-httpdir")) {
CHECK_ARGC
http_dir = strdup(argv[++i]);
got_httpdir = 1;
- } else {
+ continue;
+ }
+ if (1) {
if (!strcmp(arg, "-desktop") && i < argc-1) {
dt = 1;
rfb_desktop_name = strdup(argv[i+1]);
@@ -3553,6 +3534,7 @@ int main(int argc, char* argv[]) {
rfbLog("too many arguments.\n");
exit(1);
}
+ continue;
}
}
@@ -3812,7 +3794,7 @@ int main(int argc, char* argv[]) {
strzero(p);
}
}
- }
+ }
#ifdef HARDWIRE_PASSWD
if (!got_rfbauth && !got_passwd) {
argv_vnc[argc_vnc++] = strdup("-passwd");
@@ -4637,6 +4619,12 @@ if (0) fprintf(stderr, "XA: %s\n", getenv("XAUTHORITY"));
using_shm = 0;
#endif
}
+ } else {
+ int op, ev, er;
+ if (XQueryExtension(dpy, "MIT-SHM", &op, &ev, &er)) {
+ xshm_opcode = op;
+ if (0) fprintf(stderr, "xshm_opcode: %d %d %d\n", op, ev, er);
+ }
}
#if LIBVNCSERVER_HAVE_XKEYBOARD
@@ -4828,7 +4816,6 @@ if (0) fprintf(stderr, "XA: %s\n", getenv("XAUTHORITY"));
#endif
}
check_redir_services();
-
}
if (! waited_for_client) {