|
|
1.1 ! root 1: /* ! 2: * This software is Copyright (c) 1986 by Rick Adams. ! 3: * ! 4: * Permission is hereby granted to copy, reproduce, redistribute or ! 5: * otherwise use this software as long as: there is no monetary ! 6: * profit gained specifically from the use or reproduction or this ! 7: * software, it is not sold, rented, traded or otherwise marketed, and ! 8: * this copyright notice is included prominently in any copy ! 9: * made. ! 10: * ! 11: * The author make no claims as to the fitness or correctness of ! 12: * this software for any use whatsoever, and it is provided as is. ! 13: * Any use of this software is at the user's own risk. ! 14: * ! 15: * This routine is compatible with the Unix T/S system call uname, ! 16: * which figures out the name of the local system. ! 17: * However, we do it by reading the file /usr/include/whoami.h. ! 18: * This avoids having to recompile uucp for each site and hence ! 19: * avoids having to distribute the source to uucp to people who ! 20: * have only binary licenses. ! 21: */ ! 22: ! 23: #ifdef SCCSID ! 24: static char *SccsId = "@(#)uname.c 2.9 1/20/86"; ! 25: #endif /* SCCSID */ ! 26: ! 27: #include "params.h" ! 28: ! 29: #ifdef UNAME ! 30: # define DONE ! 31: #endif /* UNAME */ ! 32: ! 33: #ifdef GHNAME ! 34: uname(uptr) ! 35: struct utsname *uptr; ! 36: { ! 37: char *cp; ! 38: gethostname(uptr->nodename, sizeof (uptr->nodename)); ! 39: cp = index(uptr->nodename, '.'); ! 40: if (cp) ! 41: *cp = '\0'; ! 42: } ! 43: # define DONE ! 44: #endif ! 45: ! 46: #ifdef UUNAME ! 47: uname(uptr) ! 48: struct utsname *uptr; ! 49: { ! 50: FILE *uucpf; ! 51: register char *p; ! 52: /* uucp name is stored in /etc/uucpname or /local/uucpname */ ! 53: ! 54: if (((uucpf = fopen("/etc/uucpname", "r")) == NULL && ! 55: (uucpf = fopen("/local/uucpname", "r")) == NULL) || ! 56: fgets(uptr->nodename, sizeof (uptr->nodename), uucpf) == NULL) { ! 57: fprintf(stderr, "no sysname in %s\n", "/etc/uucpname"); ! 58: return; ! 59: } ! 60: p = index(uptr->nodename, '\n'); ! 61: if (p) ! 62: *p = '\0'; ! 63: if (uucpf != NULL) ! 64: fclose(uucpf); ! 65: } ! 66: #define DONE ! 67: #endif /* UUNAME */ ! 68: ! 69: #ifndef DONE ! 70: #define HDRFILE "/usr/include/whoami.h" ! 71: ! 72: uname(uptr) ! 73: struct utsname *uptr; ! 74: { ! 75: char buf[BUFSIZ]; ! 76: FILE *fd; ! 77: ! 78: fd = fopen(HDRFILE, "r"); ! 79: if (fd == NULL) { ! 80: fprintf(stderr, "Cannot open %s\n", HDRFILE); ! 81: exit(1); ! 82: } ! 83: ! 84: for (;;) { /* each line in the file */ ! 85: if (fgets(buf, sizeof buf, fd) == NULL) { ! 86: fprintf(stderr, "no sysname in %s\n", HDRFILE); ! 87: fclose(fd); ! 88: exit(2); ! 89: } ! 90: if (sscanf(buf, "#define sysname \"%[^\"]\"", uptr->nodename) == 1) { ! 91: fclose(fd); ! 92: return; ! 93: } ! 94: } ! 95: } ! 96: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.