📄 main.c
字号:
/* Copyright (c) 1993 Carlos Leandro and Rui Salgueiro * Dep. Matematica Universidade de Coimbra, Portugal, Europe *//* * Copyright (c) 1983 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#if defined(LIBC_SCCS) && !defined(lint)static char sccsid[] = "@(#)main.c 1.4 (Coimbra) 93/06/03";#endif /* LIBC_SCCS and not lint */#include <sys/types.h>#include <netdb.h>#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <ctype.h>#include <arpa/nameser.h>#include <resolv.h>#define ADDR 1#define NAME 2#define UNDEF -1int h_errno;void herror();char *progname;char *use = "%s [-d] [-a addr | -n name | string] \n";int name_or_addr = UNDEF;main(argc, argv)int argc;char *argv[];{ char **ch, c, *net_name_or_addr, *s; struct netent *net_entry; register unsigned long net2, nn; unsigned netbr[4]; progname = argv[0]; net_name_or_addr = NULL; while (--argc > 0 && (*++argv)[0] == '-') { for (s = argv[0] + 1; *s != '\0'; s++) { switch (*s) { case 'd': _res.options |= RES_DEBUG; break; case 'a': if (--argc > 0) { name_or_addr = ADDR; net_name_or_addr = *++argv; } else terminate(); break; case 'n': if (--argc > 0) { name_or_addr = NAME; net_name_or_addr = *++argv; } else terminate(); break; default: terminate(); break; } } } if (name_or_addr == UNDEF) { if (argc > 0) { c = **argv; if (isalpha(c)) { name_or_addr = NAME; } else if (isdigit(c)) { name_or_addr = ADDR; } else { terminate(); } net_name_or_addr = *argv++; --argc; } else terminate(); } if (argc > 0) { fprintf(stderr, "extra arguments ignored:"); while (argc-- > 0 ) fprintf(stderr, " %s", *argv++); fprintf(stderr, "\n"); }/* fprintf(stderr, "name_or_addr = %d, net_name_or_addr = %s\n", name_or_addr , net_name_or_addr);*/ switch (name_or_addr) { case ADDR: net_entry = getnetbyaddr(inet_network(net_name_or_addr ), AF_INET); break; case NAME: net_entry = getnetbyname(net_name_or_addr ); break; default: /* can't happen */ terminate(); } if (net_entry) { printf(" Official name: %s \n", net_entry->n_name); printf(" Net addr. type: %d \n", net_entry->n_addrtype); printf(" Network : %u ----> ", net2 = (unsigned long)net_entry->n_net); for (nn = 4; net2; netbr[--nn] = net2 & 0xff, net2 >>= 8) ; printf(" "); switch (nn) { case 0: printf("%u.%u.%u.%u", netbr[0], netbr[1], netbr[2], netbr[3]); break; case 1: printf("%u.%u.%u", netbr[1], netbr[2], netbr[3]); break; case 2: printf("%u.%u", netbr[2], netbr[3]); break; case 3: printf("%u", netbr[3]); break; } printf(" \n"); printf(" Aliases : \n"); for (ch = net_entry->n_aliases; *ch != NULL; ch++) printf(" %s \n", *ch); return 0; } else { herror(progname); return 2; }}terminate(){ fprintf(stderr, use, progname); exit (1);}#ifdef sunchar *h_errlist[] = { "Error 0", "Unknown host", /* 1 HOST_NOT_FOUND */ "Host name lookup failure", /* 2 TRY_AGAIN */ "Unknown server error", /* 3 NO_RECOVERY */ "No address associated with name", /* 4 NO_ADDRESS */};int h_nerr = { sizeof(h_errlist) / sizeof(h_errlist[0]) };extern int h_errno;/* * herror -- * print the error indicated by the h_errno value. */voidherror(s)char *s;{ fprintf(stderr, "%s: %s\n", s, (u_int) h_errno < h_nerr ? h_errlist[h_errno] : "Unknown error");}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -