home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / uucp / duucp-1.17 / AU-117b4-src.lha / src / uucico / hostname.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-24  |  1.7 KB  |  112 lines

  1. /*
  2.  *  HOSTNAME.c
  3.  *
  4.  *    hostname [-finv]
  5.  *
  6.  *    List our hostname.
  7.  *
  8.  *        -f: list the FQDN, not just the nodename.
  9.  *        -i: should be "list IP address". Currently ignored.
  10.  *        -n: should be " ". Currently ignored.
  11.  *        -v: be verbose.
  12.  *
  13.  *  Copyright 1993 by Michael B. Smith. All rights reserved.
  14.  */
  15.  
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #include <string.h>
  19. #include "version.h"
  20. #include "protos.h"
  21.  
  22. IDENT (".01");
  23.  
  24. void
  25. usage (const char *name)
  26. {
  27.     fprintf (stderr, "usage: %s [-finv]\n", name);
  28.     exit (30);
  29. }
  30.  
  31. int
  32. main (int argc, char **argv)
  33. {
  34.     char
  35.         *nm = argv [0],
  36.         *nodename,
  37.         *domainname,
  38.         *p;
  39.     int
  40.         i,
  41.         opt_f = 0,
  42.         opt_i = 0,
  43.         opt_n = 0,
  44.         opt_v = 0;
  45.  
  46.     for (i = 1; i < argc; i++) {
  47.         p = argv [i];
  48.         if (*p != '-')
  49.             usage (nm);
  50.         p++;
  51.         switch (*p) {
  52.             case 'f':
  53.                 opt_f = 1;
  54.                 break;
  55.             case 'i':
  56.                 opt_i = 1;
  57.                 if (opt_v)
  58.                     fprintf (stderr, "option ignored %s\n", p);
  59.                 break;
  60.             case 'n':
  61.                 opt_n = 1;
  62.                 if (opt_v)
  63.                     fprintf (stderr, "option ignored %s\n", p);
  64.                 break;
  65.             case 'v':
  66.                 opt_v = 1;
  67.                 break;
  68.             default:
  69.                 usage (nm);
  70.         }
  71.     }
  72.  
  73.     nodename = FindConfig (NODENAME);
  74.     if (!nodename) {
  75.         fprintf (stderr, "Can't find NodeName\n");
  76.         exit (30);
  77.     }
  78.  
  79.     if (opt_f) {
  80.         domainname = FindConfig (DOMAINNAME);
  81.         if (!domainname) {
  82.             if (opt_v)
  83.                 fprintf (stderr, "domain of .UUCP assumed\n");
  84.  
  85.             domainname = ".UUCP";
  86.         }
  87.  
  88.         p = malloc (strlen (nodename) + strlen (domainname) + 3);
  89.         if (!p) {
  90.             fprintf (stderr, "No memory!\n");
  91.             exit (30);
  92.         }
  93.         strcpy (p, nodename);
  94.         if (*domainname != '.') {
  95.             if (opt_v)
  96.                 fprintf (stderr, "added extra period\n");
  97.  
  98.             strcat (p, ".");
  99.         }
  100.  
  101.         strcat (p, domainname);
  102.         nodename = p;
  103.     }
  104.  
  105.     puts (nodename);
  106.  
  107.     if (opt_f)
  108.         free (nodename);
  109.  
  110.     exit (0);
  111. }
  112.