--- sourceforge.net/trunk/rdesktop/rdesktop.c 2002/07/18 18:28:12 66 +++ sourceforge.net/trunk/rdesktop/rdesktop.c 2002/08/09 09:11:01 96 @@ -43,6 +43,7 @@ BOOL encryption = True; BOOL desktop_save = True; BOOL fullscreen = False; +BOOL grab_keyboard = True; /* Display usage information */ static void @@ -54,6 +55,7 @@ printf(" -s: shell\n"); printf(" -c: working directory\n"); printf(" -p: password (autologon)\n"); + printf(" -P: askpass-program (autologon)\n"); printf(" -n: client hostname\n"); printf(" -k: keyboard layout on terminal server (us,sv,gr etc.)\n"); printf(" -g: desktop geometry (WxH)\n"); @@ -62,7 +64,8 @@ printf(" -e: disable encryption (French TS)\n"); printf(" -m: do not send motion events\n"); printf(" -l: do not request licence\n"); - printf(" -t: rdp tcp port\n\n"); + printf(" -t: rdp tcp port\n"); + printf(" -K: keep window manager key bindings\n"); } /* Client program */ @@ -72,6 +75,7 @@ char fullhostname[64]; char domain[16]; char password[16]; + char *askpass_result; char shell[32]; char directory[32]; char title[32]; @@ -81,15 +85,14 @@ int c; printf("rdesktop: A Remote Desktop Protocol client.\n"); - printf("Version " VERSION - ". Copyright (C) 1999-2001 Matt Chapman.\n"); + printf("Version " VERSION ". Copyright (C) 1999-2001 Matt Chapman.\n"); printf("See http://www.rdesktop.org/ for more information.\n\n"); flags = RDP_LOGON_NORMAL; domain[0] = password[0] = shell[0] = directory[0] = 0; strcpy(keymapname, "us"); - while ((c = getopt(argc, argv, "u:d:s:c:p:n:k:g:t:fbemlh?")) != -1) + while ((c = getopt(argc, argv, "u:d:s:c:p:P:n:k:g:t:fbemlKh?")) != -1) { switch (c) { @@ -114,13 +117,22 @@ flags |= RDP_LOGON_AUTO; break; + case 'P': + askpass_result = askpass(optarg, "Enter password"); + if (askpass_result == NULL) + exit(1); + + STRNCPY(password, askpass_result, sizeof(password)); + free(askpass_result); + flags |= RDP_LOGON_AUTO; + break; + case 'n': STRNCPY(hostname, optarg, sizeof(hostname)); break; case 'k': - STRNCPY(keymapname, optarg, - sizeof(keymapname)); + STRNCPY(keymapname, optarg, sizeof(keymapname)); break; case 'g': @@ -159,6 +171,10 @@ tcp_port_rdp = strtol(optarg, NULL, 10); break; + case 'K': + grab_keyboard = False; + break; + case 'h': case '?': default: @@ -223,6 +239,8 @@ strncat(title, server, sizeof(title) - sizeof("rdesktop - ")); xkeymap_init1(); + if (!ui_init()) + return 1; if (!rdp_connect(server, flags, domain, password, shell, directory)) return 1; @@ -350,9 +368,7 @@ printf(" "); for (i = 0; i < thisline; i++) - printf("%c", - (line[i] >= 0x20 - && line[i] < 0x7f) ? line[i] : '.'); + printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] : '.'); printf("\n"); offset += thisline;