/[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 79 by astrand, Mon Jul 29 20:35:13 2002 UTC revision 171 by n-ki, Tue Sep 17 09:20:13 2002 UTC
# Line 1  Line 1 
1  /*  /*
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-2002
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 = 0x409;          /* Defaults to US keyboard layout */  int keylayout = 0x409;          /* Defaults to US keyboard layout */
37  int width;  int width = 800;
38  int height;  int height = 600;
39  int tcp_port_rdp = TCP_PORT_RDP;  int tcp_port_rdp = TCP_PORT_RDP;
40  BOOL bitmap_compression = True;  BOOL bitmap_compression = True;
41  BOOL sendmotion = True;  BOOL sendmotion = True;
# Line 49  BOOL grab_keyboard = True; Line 50  BOOL grab_keyboard = True;
50  static void  static void
51  usage(char *program)  usage(char *program)
52  {  {
53          printf("Usage: %s [options] server\n", program);          fprintf(stderr, "rdesktop: A Remote Desktop Protocol client.\n");
54          printf("   -u: user name\n");          fprintf(stderr, "Version " VERSION ". Copyright (C) 1999-2002 Matt Chapman.\n");
55          printf("   -d: domain\n");          fprintf(stderr, "See http://www.rdesktop.org/ for more information.\n\n");
56          printf("   -s: shell\n");  
57          printf("   -c: working directory\n");          fprintf(stderr, "Usage: %s [options] server\n", program);
58          printf("   -p: password (autologon)\n");          fprintf(stderr, "   -u: user name\n");
59          printf("   -n: client hostname\n");          fprintf(stderr, "   -d: domain\n");
60          printf("   -k: keyboard layout on terminal server (us,sv,gr etc.)\n");          fprintf(stderr, "   -s: shell\n");
61          printf("   -g: desktop geometry (WxH)\n");          fprintf(stderr, "   -c: working directory\n");
62          printf("   -f: full-screen mode\n");          fprintf(stderr, "   -p: password (autologon)\n");
63          printf("   -b: force bitmap updates\n");          fprintf(stderr, "   -P: askpass-program (autologon)\n");
64          printf("   -e: disable encryption (French TS)\n");          fprintf(stderr, "   -n: client hostname\n");
65          printf("   -m: do not send motion events\n");          fprintf(stderr, "   -k: keyboard layout on terminal server (us,sv,gr etc.)\n");
66          printf("   -l: do not request licence\n");          fprintf(stderr, "   -g: desktop geometry (WxH)\n");
67          printf("   -t: rdp tcp port\n");          fprintf(stderr, "   -f: full-screen mode\n");
68          printf("   -K: keep window manager key bindings\n");          fprintf(stderr, "   -b: force bitmap updates\n");
69            fprintf(stderr, "   -e: disable encryption (French TS)\n");
70            fprintf(stderr, "   -m: do not send motion events\n");
71            fprintf(stderr, "   -l: do not request licence\n");
72            fprintf(stderr, "   -t: rdp tcp port\n");
73            fprintf(stderr, "   -K: keep window manager key bindings\n");
74            fprintf(stderr, "   -w: window title\n");
75  }  }
76    
77  /* Client program */  /* Client program */
# Line 74  main(int argc, char *argv[]) Line 81  main(int argc, char *argv[])
81          char fullhostname[64];          char fullhostname[64];
82          char domain[16];          char domain[16];
83          char password[16];          char password[16];
84            char *askpass_result;
85          char shell[32];          char shell[32];
86          char directory[32];          char directory[32];
         char title[32];  
87          struct passwd *pw;          struct passwd *pw;
88          char *server, *p;          char *server, *p;
89          uint32 flags;          uint32 flags;
90          int c;          int c;
91    
         printf("rdesktop: A Remote Desktop Protocol client.\n");  
         printf("Version " VERSION  
                ". Copyright (C) 1999-2001 Matt Chapman.\n");  
         printf("See http://www.rdesktop.org/ for more information.\n\n");  
   
92          flags = RDP_LOGON_NORMAL;          flags = RDP_LOGON_NORMAL;
93          domain[0] = password[0] = shell[0] = directory[0] = 0;          domain[0] = password[0] = shell[0] = directory[0] = 0;
94          strcpy(keymapname, "us");          strcpy(keymapname, "us");
95    
96          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:fbemlKw:h?")) != -1)
97          {          {
98                  switch (c)                  switch (c)
99                  {                  {
# Line 114  main(int argc, char *argv[]) Line 116  main(int argc, char *argv[])
116                          case 'p':                          case 'p':
117                                  STRNCPY(password, optarg, sizeof(password));                                  STRNCPY(password, optarg, sizeof(password));
118                                  flags |= RDP_LOGON_AUTO;                                  flags |= RDP_LOGON_AUTO;
119                                    p = optarg;
120                                    while (*p)
121                                            *(p++) = 'X';
122                                    break;
123    
124                            case 'P':
125                                    askpass_result = askpass(optarg, "Enter password");
126                                    if (askpass_result == NULL)
127                                            exit(1);
128    
129                                    STRNCPY(password, askpass_result, sizeof(password));
130                                    free(askpass_result);
131                                    flags |= RDP_LOGON_AUTO;
132                                  break;                                  break;
133    
134                          case 'n':                          case 'n':
# Line 121  main(int argc, char *argv[]) Line 136  main(int argc, char *argv[])
136                                  break;                                  break;
137    
138                          case 'k':                          case 'k':
139                                  STRNCPY(keymapname, optarg,                                  STRNCPY(keymapname, optarg, sizeof(keymapname));
                                         sizeof(keymapname));  
140                                  break;                                  break;
141    
142                          case 'g':                          case 'g':
# Line 165  main(int argc, char *argv[]) Line 179  main(int argc, char *argv[])
179                                  grab_keyboard = False;                                  grab_keyboard = False;
180                                  break;                                  break;
181    
182                            case 'w':
183                                    strncpy(title, optarg, sizeof(title));
184                                    break;
185    
186                          case 'h':                          case 'h':
187                          case '?':                          case '?':
188                          default:                          default:
# Line 219  main(int argc, char *argv[]) Line 237  main(int argc, char *argv[])
237                  STRNCPY(password, p, sizeof(password));                  STRNCPY(password, p, sizeof(password));
238          }          }
239    
240          if ((width == 0) || (height == 0))          if (!strlen(title))
241          {          {
242                  width = 800;                  strcpy(title, "rdesktop - ");
243                  height = 600;                  strncat(title, server, sizeof(title) - sizeof("rdesktop - "));
244          }          }
245    
246          strcpy(title, "rdesktop - ");          if (!ui_init())
247          strncat(title, server, sizeof(title) - sizeof("rdesktop - "));                  return 1;
   
         xkeymap_init1();  
248    
249          if (!rdp_connect(server, flags, domain, password, shell, directory))          if (!rdp_connect(server, flags, domain, password, shell, directory))
250                  return 1;                  return 1;
251    
252          printf("Connection successful.\n");          DEBUG(("Connection successful.\n"));
253    
254          if (ui_create_window(title))          if (ui_create_window())
255          {          {
256                  rdp_main_loop();                  rdp_main_loop();
257                  ui_destroy_window();                  ui_destroy_window();
258          }          }
259    
260          printf("Disconnecting...\n");          DEBUG(("Disconnecting...\n"));
261          rdp_disconnect();          rdp_disconnect();
262          return 0;          return 0;
263  }  }
# Line 356  hexdump(unsigned char *p, unsigned int l Line 372  hexdump(unsigned char *p, unsigned int l
372                          printf("   ");                          printf("   ");
373    
374                  for (i = 0; i < thisline; i++)                  for (i = 0; i < thisline; i++)
375                          printf("%c",                          printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] : '.');
                                (line[i] >= 0x20  
                                 && line[i] < 0x7f) ? line[i] : '.');  
376    
377                  printf("\n");                  printf("\n");
378                  offset += thisline;                  offset += thisline;
# Line 366  hexdump(unsigned char *p, unsigned int l Line 380  hexdump(unsigned char *p, unsigned int l
380          }          }
381  }  }
382    
383    #ifdef SAVE_LICENCE
384  int  int
385  load_licence(unsigned char **data)  load_licence(unsigned char **data)
386  {  {
# Line 419  save_licence(unsigned char *data, int le Line 434  save_licence(unsigned char *data, int le
434          write(fd, data, length);          write(fd, data, length);
435          close(fd);          close(fd);
436  }  }
437    #endif

Legend:
Removed from v.79  
changed lines
  Added in v.171

  ViewVC Help
Powered by ViewVC 1.1.26