home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1996 May / PCOnline_05_1996.bin / linux / source / n / tcpip / nntp-1.5 / nntp-1 / nntp.1.5.11t / inews / uname.c < prev   
Encoding:
C/C++ Source or Header  |  1990-07-04  |  2.3 KB  |  104 lines

  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 <stdio.h>
  28. #include "../common/conf.h"
  29.  
  30. #ifdef UNAME
  31. # define DONE
  32. #endif /* UNAME */
  33.  
  34. #ifdef GHNAME
  35. #include <sys/types.h>
  36. #include <sys/socket.h>
  37. #include <netdb.h>
  38.  
  39. uname(uptr)
  40. char    *uptr;
  41. {
  42.     struct hostent *he;
  43.  
  44.     gethostname(uptr, 256);
  45.  
  46.     he = gethostbyname(uptr);
  47.     strncpy(uptr, he->h_name, 255);
  48.     uptr[255] = '\0';
  49. }
  50. # define DONE
  51. #endif
  52.  
  53. #ifdef    UUNAME
  54. uname(uptr)
  55. char *uptr;
  56. {
  57.     FILE *uucpf;
  58.     register char *p;
  59.     /* uucp name is stored in /etc/uucpname or /local/uucpname */
  60.  
  61.     if (((uucpf = fopen("/etc/uucpname", "r")) == NULL &&
  62.          (uucpf = fopen("/local/uucpname", "r")) == NULL) ||
  63.         fgets(uptr, 256, uucpf) == NULL) {
  64.             fprintf(stderr, "no sysname in %s\n", "/etc/uucpname");
  65.             return;
  66.     }
  67.     p = index(uptr, '\n');
  68.     if (p)
  69.         *p = '\0';
  70.     if (uucpf != NULL)
  71.         fclose(uucpf);
  72. }
  73. #define DONE
  74. #endif /* UUNAME */
  75.  
  76. #ifndef DONE
  77. #define    HDRFILE "/usr/include/whoami.h"
  78.  
  79. uname(uptr)
  80. char *uptr;
  81. {
  82.     char buf[BUFSIZ];
  83.     FILE *fd;
  84.     
  85.     fd = fopen(HDRFILE, "r");
  86.     if (fd == NULL) {
  87.         fprintf(stderr, "Cannot open %s\n", HDRFILE);
  88.         exit(1);
  89.     }
  90.     
  91.     for (;;) {    /* each line in the file */
  92.         if (fgets(buf, sizeof buf, fd) == NULL) {
  93.             fprintf(stderr, "no sysname in %s\n", HDRFILE);
  94.             fclose(fd);
  95.             exit(2);
  96.         }
  97.         if (sscanf(buf, "#define sysname \"%[^\"]\"", uptr) == 1) {
  98.             fclose(fd);
  99.             return;
  100.         }
  101.     }
  102. }
  103. #endif
  104.