688
695
gtk_widget_realize(vnc);
690
697
snprintf(hostname, sizeof(hostname), "%s", args[0]);
691
display = strchr(hostname, ':');
695
snprintf(port, sizeof(port), "%d", 5900 + atoi(display + 1));
697
snprintf(port, sizeof(port), "%d", 5900);
700
snprintf(hostname, sizeof(hostname), "%s", "127.0.0.1");
701
vnc_display_open_host(VNC_DISPLAY(vnc), hostname, port);
698
if ((0 == stat(hostname, &sockstat)) &&
699
S_ISSOCK(sockstat.st_mode)) {
700
size_t sockaddrsize = offsetof(struct sockaddr_un, sun_path) + strlen(hostname) + 1;
701
struct sockaddr_un* addr = malloc(sockaddrsize);
703
/* the argument refers to a unix domain socket */
704
sock = socket(AF_UNIX, SOCK_STREAM, 0);
705
addr->sun_family = AF_UNIX;
706
strcpy(addr->sun_path, hostname);
707
if (0 == connect(sock, (const struct sockaddr *)addr, sockaddrsize)) {
708
vnc_display_open_fd(VNC_DISPLAY(vnc), sock);
710
fprintf(stderr, "Failed to open unix domain socket %s\n", hostname);
715
/* treat it as a regular hostname */
716
display = strchr(hostname, ':');
720
snprintf(port, sizeof(port), "%d", 5900 + atoi(display + 1));
722
snprintf(port, sizeof(port), "%d", 5900);
725
snprintf(hostname, sizeof(hostname), "%s", "127.0.0.1");
726
vnc_display_open_host(VNC_DISPLAY(vnc), hostname, port);
702
728
vnc_display_set_keyboard_grab(VNC_DISPLAY(vnc), TRUE);
703
729
vnc_display_set_pointer_grab(VNC_DISPLAY(vnc), TRUE);