This is main.c in view mode; [Download] [Up]
/* 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 -1 int 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 sun char *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. */ void herror(s) char *s; { fprintf(stderr, "%s: %s\n", s, (u_int) h_errno < h_nerr ? h_errlist[h_errno] : "Unknown error"); } #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.