--- sourceforge.net/trunk/rdesktop/rdesktop.c 2002/07/30 01:57:39 81 +++ sourceforge.net/trunk/rdesktop/rdesktop.c 2002/08/09 09:11:01 96 @@ -55,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"); @@ -74,6 +75,7 @@ char fullhostname[64]; char domain[16]; char password[16]; + char *askpass_result; char shell[32]; char directory[32]; char title[32]; @@ -83,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:fbemlKh?")) != -1) + while ((c = getopt(argc, argv, "u:d:s:c:p:P:n:k:g:t:fbemlKh?")) != -1) { switch (c) { @@ -116,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': @@ -229,8 +239,8 @@ strncat(title, server, sizeof(title) - sizeof("rdesktop - ")); xkeymap_init1(); - if(!ui_init()) - return 1; + if (!ui_init()) + return 1; if (!rdp_connect(server, flags, domain, password, shell, directory)) return 1; @@ -358,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;