>man надо читать до конца. Читай дальше, там через два абзаца
>про параметр dst написано. Еще ниже написано про то что
>возвращает эта функция. Первые два абзаца то же прочитать не
>забудь. На раздел BUGS обрати внимание. По ссылкам в
>SEE ALSO походи для общего развития. Короче, прочитай его целиком
>и убедись что все именно так как я описал с самого
>начала.
Cорри, может я английский и не очень хорошо знаю(так и не понял приводит он его к вду структуры и копирует в dst или как по дугому) но вот этот код работает вполне корректно:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
int inet_pton_loose(const char *addr,int af)
{
struct in_addr *k;
int dst;
if(af==AF_INET){
if( inet_pton(AF_INET,addr,&dst) ==0)
{
printf("inet_pton==0\n");
inet_aton(addr,k);
return(k->s_addr);
}
}
if(af==AF_INET6){
if( inet_pton(AF_INET6,addr,&dst) ==0)
{
printf("inet_pton==0\n");
inet_aton(addr,k);
return(k->s_addr);
}
}
return(dst);
}
int main(int argc,char *argv[])
{
if(argc<1){
printf("No arguments\n");
exit(1);
}
//if(argv[2]=="AF_INET")
// printf("%i\n",inet_pton_loose(argv[1],AF_INET));
//if(argv[2]=="AF_INET6")
// printf("%i\n",inet_pton_loose(argv[1],AF_INET6));
printf("%i\n",inet_pton_loose(argv[1],AF_INET));
return 0;
}
Правда 2 if'a закоментированых не работает