-#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
}
/*
+ * When setting up X forwarding, we should send the screen number
+ * from the specified local display. This function extracts it from
+ * the display string.
+ */
+int x11_get_screen_number(char *display)
+{
+ int n;
+
+ n = strcspn(display, ":");
+ if (!display[n])
+ return 0;
+ n = strcspn(display, ".");
+ if (!display[n])
+ return 0;
+ return atoi(display + n + 1);
+}
+
+/*
* Called to set up the raw connection.
*
* Returns an error message, or NULL on success.
displaynum = 0; /* sensible default */
if (n > sizeof(host) - 1)
n = sizeof(host) - 1;
- strncpy(host, display, n);
- host[n] = '\0';
+ if (n > 0) {
+ strncpy(host, display, n);
+ host[n] = '\0';
+ } else {
+ /*
+ * Local display numbers, particularly on Unix, often omit
+ * the display part completely.
+ */
+ strcpy(host, "localhost");
+ }
/*
* Try to find host.
*/
- addr = sk_namelookup(host, &dummy_realhost);
+ addr = name_lookup(host, port, &dummy_realhost);
if ((err = sk_addr_error(addr)))
return err;