Fixed license list of contributors.
[libguac-client-rdp.git] / src / client.c
index aa37ad3..e873d9d 100644 (file)
@@ -21,6 +21,7 @@
  *
  * Contributor(s):
  * Matt Hortman
+ * David PHAM-VAN <d.pham-van@ulteo.com> Ulteo SAS - http://www.ulteo.com
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
 #include "rdp_glyph.h"
 #include "rdp_pointer.h"
 #include "rdp_gdi.h"
+#include "default_pointer.h"
 
 /* Client plugin arguments */
 const char* GUAC_CLIENT_ARGS[] = {
     "hostname",
     "port",
+    "domain",
     "username",
     "password",
     "width",
     "height",
-    "initial_program",
-    "color_depth",
+    "initial-program",
+    "color-depth",
     NULL
 };
 
 enum ARGS_IDX {
     IDX_HOSTNAME,
     IDX_PORT,
+    IDX_DOMAIN,
     IDX_USERNAME,
     IDX_PASSWORD,
     IDX_WIDTH,
@@ -148,6 +152,8 @@ boolean rdp_freerdp_pre_connect(freerdp* instance) {
     pointer->New = guac_rdp_pointer_new;
     pointer->Free = guac_rdp_pointer_free;
     pointer->Set = guac_rdp_pointer_set;
+    pointer->SetNull = guac_rdp_pointer_set_null;
+    pointer->SetDefault = guac_rdp_pointer_set_default;
     graphics_register_pointer(context->graphics, pointer);
     xfree(pointer);
 
@@ -263,7 +269,7 @@ int guac_client_init(guac_client* client, int argc, char** argv) {
      */
     const guac_rdp_keymap* chosen_keymap = &guac_rdp_keymap_en_us;
 
-    if (argc < 8) {
+    if (argc < 9) {
 
         guac_protocol_send_error(client->socket,
                 "Wrong argument count received.");
@@ -330,20 +336,23 @@ int guac_client_init(guac_client* client, int argc, char** argv) {
     settings->port = port;
     settings->window_title = strdup(hostname);
 
-    /* username */
-    settings->username = "guest";
+    /* Domain */
+    if (argv[IDX_DOMAIN][0] != '\0')
+        settings->domain = strdup(argv[IDX_DOMAIN]);
+
+    /* Username */
     if (argv[IDX_USERNAME][0] != '\0')
-        settings->username = strdup (argv[IDX_USERNAME]);
+        settings->username = strdup(argv[IDX_USERNAME]);
 
-    /* password */
+    /* Password */
     if (argv[IDX_PASSWORD][0] != '\0') {
-        settings->password = strdup (argv[IDX_PASSWORD]);
+        settings->password = strdup(argv[IDX_PASSWORD]);
         settings->autologon = 1;
     }
 
-    /* initial program */
+    /* Initial program */
     if (argv[IDX_INITIAL_PROGRAM][0] != '\0')
-        settings->shell = strdup (argv[IDX_INITIAL_PROGRAM]);
+        settings->shell = strdup(argv[IDX_INITIAL_PROGRAM]);
 
     /* Order support */
     bitmap_cache = settings->bitmap_cache;
@@ -423,6 +432,9 @@ int guac_client_init(guac_client* client, int argc, char** argv) {
     guac_client_data->trans_glyph_surface = cairo_image_surface_create(
             CAIRO_FORMAT_ARGB32, settings->width, settings->height);
 
+    /* Set default pointer */
+    guac_rdp_pointer_set_default(client);
+
     /* Success */
     return 0;