#define NEWLINE '\n' #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_MALLOC_H #include #endif #include char **split (const char *string, const char *delimit); static struct sockaddr_in ftp_addr; static struct sockaddr_in data_addr; static struct sockaddr_in host_addr; int main () { int sock, datasock; register struct hostent *hp = 0; socklen_t socklen; int rc; int recvlen; fd_set fds; char hostname[256]; char inbuffer[1024]; char outbuffer[1024]; char **tokens; /* What's my IP/hostname? */ memset (&host_addr, 0, sizeof (host_addr)); if (inet_aton ("visualnet.dhs.org", &host_addr.sin_addr)) { host_addr.sin_family = AF_INET; strncpy (hostname, "visualnet.dhs.org", sizeof (hostname)); } else printf ("Waiting to get hostname...\n"); hp = gethostbyname ("visualnet.dhs.org"); host_addr.sin_family = hp->h_addrtype; if (hp->h_length > (int)sizeof(host_addr.sin_addr)) { hp->h_length = sizeof(host_addr.sin_addr); } memcpy (&host_addr.sin_addr, hp->h_addr_list[0], hp->h_length); (void) strncpy (hostname, hp->h_name, sizeof(hostname)); hostname[sizeof(hostname)-1] = 0; printf ("Hostname = %s\n", hostname); sock = socket(host_addr.sin_family, SOCK_STREAM, 0); host_addr.sin_port = 21; signal (SIGPIPE, SIG_IGN); while (connect (sock, (struct sockaddr *)&host_addr, sizeof(host_addr)) < 0) { if (hp && hp->h_addr_list[1]) { fprintf (stdout, "GNOME Update: Connecting to address %s: ", inet_ntoa(host_addr.sin_addr)); hp->h_addr_list++; memcpy (&host_addr.sin_addr, hp->h_addr_list[0], hp->h_length); fprintf (stdout, "Trying %s...\n", inet_ntoa(host_addr.sin_addr)); (void) close (sock); sock = socket(host_addr.sin_family, SOCK_STREAM,0); continue; } } } char **split (const char *string, const char *delimit) { int cntr = 0; char **tmpbuffer; tmpbuffer = (char **) malloc (200 * sizeof (char **)); tmpbuffer[cntr] = (char *) malloc (256); tmpbuffer[cntr] = strtok ((char *)string, delimit); do { cntr++; tmpbuffer[cntr] = (char *) malloc (256); tmpbuffer[cntr] = strtok (NULL, delimit); } while (tmpbuffer[cntr] != NULL); tmpbuffer[cntr] = NULL; return tmpbuffer; } UUUUUUUUUUUUUUUUUUUUUUUUU