This is hostname.c in view mode; [Download] [Up]
/* * (c) Copyright 1990, Kim Fabricius Storm. All rights reserved. * * "generic" gethostname() emulation: * * Possibilities are used in following order: * * HAVE_GETHOSTNAME -- use gethostname() * HAVE_UNAME -- use sysV uname().nodename * HOSTNAME_FILE "/.../..." -- read hostname from file * HOSTNAME_WHOAMI -- use sysname from whoami.h * HOSTNAME "host" -- hard-coded hostname * You lose! */ #include "config.h" #undef DONE #ifdef HAVE_GETHOSTNAME /* * Easy -- we already got it */ #define DONE #endif #ifndef DONE #ifdef HAVE_UNAME /* * System V uname() is available. Use nodename field. */ #include <sys/utsname.h> gethostname(name, length) char *name; int length; { struct utsname un; uname(&un); strncpy(name, un.nodename, length); } #define DONE #endif #endif #ifndef DONE #ifdef HOSTNAME_FILE /* * Hostname is available in a file. * The name of the file is defined in HOSTNAME_FILE. * This is not intended to fail (or exit would have been via nn_exit) */ gethostname(name, length) char *name; int length; { FILE *f; register char *p; f = fopen(HOSTNAME_FILE, "r"); /* Generic code -- don't use open_file */ if (f == NULL) goto err; if (fgets(name, length, f) == NULL) goto err; if ((p = strchr(name, NL)) != NULL) *p = NUL; fclose(f); return; err: fprintf(stderr, "HOSTNAME NOT FOUND IN %s\n", HOSTNAME_FILE); exit(77); } #define DONE #endif #endif #ifndef DONE #ifdef HOSTNAME_WHOAMI /* * Hostname is found in whoami.h */ gethostname(name, length) char *name; int length; { FILE *f; char buf[512]; register char *p, *q; f = fopen("/usr/include/whoami.h", "r"); if (f == NULL) goto err; while (fgets(buf, 512, f) != NULL) { if (buf[0] != '#') continue; if ((p = strchr(buf, '"')) == NULL) continue; *p++ = NUL; if (strncmp(buf, "#define sysname", 15)) continue; if ((q = strchr(p, '"')) == NULL) break; *q = NUL; strncpy(name, p, length); return; } err: fprintf(stderr, "HOSTNAME (sysname) NOT DEFINED IN whoami.h\n"); exit(77); } #define DONE #endif #endif #ifndef DONE #ifdef HOSTNAME gethostname(name, length) char *name; int length; { strncpy(name, HOSTNAME, length); } #define DONE #endif #endif #ifndef DONE YOU LOSE ON GETHOSTNAME -- DEFINE HOSTNAME IN CONFIG.H #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.