/[rdesktop]/sourceforge.net/trunk/rdesktop/rdesktop.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/rdesktop.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 58 by jsorg71, Sun Jul 14 00:34:21 2002 UTC revision 100 by jsorg71, Sat Aug 24 20:04:56 2002 UTC
# Line 2  Line 2 
2     rdesktop: A Remote Desktop Protocol client.     rdesktop: A Remote Desktop Protocol client.
3     Entrypoint and utility functions     Entrypoint and utility functions
4     Copyright (C) Matthew Chapman 1999-2001     Copyright (C) Matthew Chapman 1999-2001
5      
6     This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.     (at your option) any later version.
10      
11     This program is distributed in the hope that it will be useful,     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.     GNU General Public License for more details.
15      
16     You should have received a copy of the GNU General Public License     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software     along with this program; if not, write to the Free Software
18     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# Line 29  Line 29 
29  #include <sys/times.h>          /* times */  #include <sys/times.h>          /* times */
30  #include "rdesktop.h"  #include "rdesktop.h"
31    
32    char title[32];
33  char username[16];  char username[16];
34  char hostname[16];  char hostname[16];
35  char keymapname[16];  char keymapname[16];
36  int keylayout;  int keylayout = 0x409;          /* Defaults to US keyboard layout */
37  int width;  int width;
38  int height;  int height;
39  int tcp_port_rdp = TCP_PORT_RDP;  int tcp_port_rdp = TCP_PORT_RDP;
# Line 43  BOOL licence = True; Line 44  BOOL licence = True;
44  BOOL encryption = True;  BOOL encryption = True;
45  BOOL desktop_save = True;  BOOL desktop_save = True;
46  BOOL fullscreen = False;  BOOL fullscreen = False;
47    BOOL grab_keyboard = True;
48    
49  /* Display usage information */  /* Display usage information */
50  static void  static void
# Line 54  usage(char *program) Line 56  usage(char *program)
56          printf("   -s: shell\n");          printf("   -s: shell\n");
57          printf("   -c: working directory\n");          printf("   -c: working directory\n");
58          printf("   -p: password (autologon)\n");          printf("   -p: password (autologon)\n");
59            printf("   -P: askpass-program (autologon)\n");
60          printf("   -n: client hostname\n");          printf("   -n: client hostname\n");
61          printf("   -k: keyboard layout\n");          printf("   -k: keyboard layout on terminal server (us,sv,gr etc.)\n");
62          printf("   -g: desktop geometry (WxH)\n");          printf("   -g: desktop geometry (WxH)\n");
63          printf("   -f: full-screen mode\n");          printf("   -f: full-screen mode\n");
64          printf("   -b: force bitmap updates\n");          printf("   -b: force bitmap updates\n");
65          printf("   -e: disable encryption (French TS)\n");          printf("   -e: disable encryption (French TS)\n");
66          printf("   -m: do not send motion events\n");          printf("   -m: do not send motion events\n");
67          printf("   -l: do not request licence\n");          printf("   -l: do not request licence\n");
68          printf("   -t: rdp tcp port\n\n");          printf("   -t: rdp tcp port\n");
69            printf("   -K: keep window manager key bindings\n");
70  }  }
71    
72  /* Client program */  /* Client program */
# Line 72  main(int argc, char *argv[]) Line 76  main(int argc, char *argv[])
76          char fullhostname[64];          char fullhostname[64];
77          char domain[16];          char domain[16];
78          char password[16];          char password[16];
79            char *askpass_result;
80          char shell[32];          char shell[32];
81          char directory[32];          char directory[32];
         char title[32];  
82          struct passwd *pw;          struct passwd *pw;
83          char *server, *p;          char *server, *p;
84          uint32 flags;          uint32 flags;
# Line 88  main(int argc, char *argv[]) Line 92  main(int argc, char *argv[])
92          domain[0] = password[0] = shell[0] = directory[0] = 0;          domain[0] = password[0] = shell[0] = directory[0] = 0;
93          strcpy(keymapname, "us");          strcpy(keymapname, "us");
94    
95          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)
96          {          {
97                  switch (c)                  switch (c)
98                  {                  {
# Line 113  main(int argc, char *argv[]) Line 117  main(int argc, char *argv[])
117                                  flags |= RDP_LOGON_AUTO;                                  flags |= RDP_LOGON_AUTO;
118                                  break;                                  break;
119    
120                            case 'P':
121                                    askpass_result = askpass(optarg, "Enter password");
122                                    if (askpass_result == NULL)
123                                            exit(1);
124    
125                                    STRNCPY(password, askpass_result, sizeof(password));
126                                    free(askpass_result);
127                                    flags |= RDP_LOGON_AUTO;
128                                    break;
129    
130                          case 'n':                          case 'n':
131                                  STRNCPY(hostname, optarg, sizeof(hostname));                                  STRNCPY(hostname, optarg, sizeof(hostname));
132                                  break;                                  break;
# Line 124  main(int argc, char *argv[]) Line 138  main(int argc, char *argv[])
138                          case 'g':                          case 'g':
139                                  width = strtol(optarg, &p, 10);                                  width = strtol(optarg, &p, 10);
140                                  if (*p == 'x')                                  if (*p == 'x')
141                                          height = strtol(p+1, NULL, 10);                                          height = strtol(p + 1, NULL, 10);
142    
143                                  if ((width == 0) || (height == 0))                                  if ((width == 0) || (height == 0))
144                                  {                                  {
# Line 157  main(int argc, char *argv[]) Line 171  main(int argc, char *argv[])
171                                  tcp_port_rdp = strtol(optarg, NULL, 10);                                  tcp_port_rdp = strtol(optarg, NULL, 10);
172                                  break;                                  break;
173    
174                            case 'K':
175                                    grab_keyboard = False;
176                                    break;
177    
178                          case 'h':                          case 'h':
179                          case '?':                          case '?':
180                          default:                          default:
# Line 220  main(int argc, char *argv[]) Line 238  main(int argc, char *argv[])
238          strcpy(title, "rdesktop - ");          strcpy(title, "rdesktop - ");
239          strncat(title, server, sizeof(title) - sizeof("rdesktop - "));          strncat(title, server, sizeof(title) - sizeof("rdesktop - "));
240    
241            xkeymap_init1();
242            if (!ui_init())
243                    return 1;
244    
245          if (!rdp_connect(server, flags, domain, password, shell, directory))          if (!rdp_connect(server, flags, domain, password, shell, directory))
246                  return 1;                  return 1;
247    
248          printf("Connection successful.\n");          printf("Connection successful.\n");
249    
250          if (ui_create_window(title))          if (ui_create_window())
251          {          {
252                  rdp_main_loop();                  rdp_main_loop();
253                  ui_destroy_window();                  ui_destroy_window();
# Line 238  main(int argc, char *argv[]) Line 260  main(int argc, char *argv[])
260    
261  /* Generate a 32-byte random for the secure transport code. */  /* Generate a 32-byte random for the secure transport code. */
262  void  void
263  generate_random(uint8 *random)  generate_random(uint8 * random)
264  {  {
265          struct stat st;          struct stat st;
266          struct tms tmsbuf;          struct tms tmsbuf;
# Line 343  hexdump(unsigned char *p, unsigned int l Line 365  hexdump(unsigned char *p, unsigned int l
365                          printf("%02x ", line[i]);                          printf("%02x ", line[i]);
366    
367                  for (; i < 16; i++)                  for (; i < 16; i++)
368                                  printf("   ");                          printf("   ");
369    
370                  for (i = 0; i < thisline; i++)                  for (i = 0; i < thisline; i++)
371                          printf("%c",                          printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] : '.');
                                (line[i] >= 0x20  
                                 && line[i] < 0x7f) ? line[i] : '.');  
372    
373                  printf("\n");                  printf("\n");
374                  offset += thisline;                  offset += thisline;
# Line 369  load_licence(unsigned char **data) Line 389  load_licence(unsigned char **data)
389                  return -1;                  return -1;
390    
391          STRNCPY(path, home, sizeof(path));          STRNCPY(path, home, sizeof(path));
392          strncat(path, "/.rdesktop/licence", sizeof(path)-strlen(path)-1);          strncat(path, "/.rdesktop/licence", sizeof(path) - strlen(path) - 1);
393    
394          fd = open(path, O_RDONLY);          fd = open(path, O_RDONLY);
395          if (fd == -1)          if (fd == -1)
# Line 394  save_licence(unsigned char *data, int le Line 414  save_licence(unsigned char *data, int le
414                  return;                  return;
415    
416          STRNCPY(path, home, sizeof(path));          STRNCPY(path, home, sizeof(path));
417          strncat(path, "/.rdesktop", sizeof(path)-strlen(path)-1);          strncat(path, "/.rdesktop", sizeof(path) - strlen(path) - 1);
418          mkdir(path, 0700);          mkdir(path, 0700);
419    
420          strncat(path, "/licence", sizeof(path)-strlen(path)-1);          strncat(path, "/licence", sizeof(path) - strlen(path) - 1);
421    
422          fd = open(path, O_WRONLY|O_CREAT|O_TRUNC, 0600);          fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0600);
423          if (fd == -1)          if (fd == -1)
424          {          {
425                  perror("open");                  perror("open");
# Line 409  save_licence(unsigned char *data, int le Line 429  save_licence(unsigned char *data, int le
429          write(fd, data, length);          write(fd, data, length);
430          close(fd);          close(fd);
431  }  }
   

Legend:
Removed from v.58  
changed lines
  Added in v.100

  ViewVC Help
Powered by ViewVC 1.1.26