#include #include #include #include #define SWAP(a, b, tmp) tmp=a; a=b; b=tmp void swap_endian(char* x, int size) { char tmp; switch(size) { case 2: SWAP(x[0], x[1], tmp); break; case 4: SWAP(x[0], x[3], tmp); SWAP(x[1], x[2], tmp); break; } } int main(int argc, char** argv) { int i; int little_endian; struct in_addr addr; char* dotform; little_endian = 1; if(*(char *)&little_endian != 1) little_endian = 0; for(i = 1; i < argc; i++) { addr.s_addr = atoi(argv[i]); if(little_endian) swap_endian((char *)&addr.s_addr, sizeof(addr.s_addr)); dotform = inet_ntoa(addr); if(dotform == NULL) fprintf(stderr, "Invalid argument: %s\n", argv[i]); else printf("%s %s\n", argv[i], dotform); } return 0; }