Annotation of embedaddon/hping2/gethostname.c, revision 1.1.1.1

1.1       misho       1: /* 
                      2:  * $smu-mark$ 
                      3:  * $name: gethostname.c$ 
                      4:  * $author: Salvatore Sanfilippo <antirez@invece.org>$ 
                      5:  * $copyright: Copyright (C) 1999 by Salvatore Sanfilippo$ 
                      6:  * $license: This software is under GPL version 2 of license$ 
                      7:  * $date: Fri Nov  5 11:55:47 MET 1999$ 
                      8:  * $rev: 8$ 
                      9:  */ 
                     10: 
                     11: #include <stdio.h>
                     12: #include <netdb.h>
                     13: #include <sys/types.h>
                     14: #include <sys/socket.h>
                     15: #include <netinet/in.h>
                     16: #include <arpa/inet.h>
                     17: #include <string.h>
                     18: 
                     19: size_t strlcpy(char *dst, const char *src, size_t siz);
                     20: 
                     21: char *get_hostname(char* addr)
                     22: {
                     23:        static char answer[1024];
                     24:        static char lastreq[1024] = {'\0'};     /* last request */
                     25:        struct hostent *he;
                     26:        struct in_addr naddr;
                     27:        static char *last_answerp = NULL;
                     28: 
                     29:        printf(" get hostname..."); fflush(stdout);
                     30:        printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
                     31:                "               "
                     32:                "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
                     33: 
                     34:        if (!strcmp(addr, lastreq))
                     35:                return last_answerp;
                     36: 
                     37:        strlcpy(lastreq, addr, 1024);
                     38:        inet_aton(addr, &naddr);
                     39:        he = gethostbyaddr((char*)&naddr, 4, AF_INET);
                     40: 
                     41:        if (he == NULL) {
                     42:                last_answerp = NULL;
                     43:                return NULL;
                     44:        }
                     45: 
                     46:        strlcpy(answer, he->h_name, 1024);
                     47:        last_answerp = answer;
                     48: 
                     49:        return answer;
                     50: }
                     51: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>