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

  1. /*
  2.  *  UNAME.C
  3.  *
  4.  *    uname [-amnprsv]
  5.  *
  6.  *    List various information about the system
  7.  *
  8.  *    a: all information
  9.  *    m: machine hardware name
  10.  *    n: nodename
  11.  *    p: processor type
  12.  *    r: operating system release
  13.  *    s: name of the operation system
  14.  *    v: operating system version
  15.  *
  16.  *    -n is the default.
  17.  *
  18.  *  Copyright 1993 by Michael B. Smith. All rights reserved.
  19.  */
  20.  
  21. #include <stdio.h>
  22. #include <stdlib.h>
  23. #include <string.h>
  24.  
  25. #include "version.h"
  26. #include "protos.h"
  27.  
  28. #include <graphics/gfxbase.h>
  29.  
  30. struct GfxBase
  31.     *g = NULL;
  32.  
  33. IDENT (".01");
  34.  
  35. void usage (const char *name);
  36.  
  37. void
  38. usage (const char *name)
  39. {
  40.     fprintf (stderr, "usage: %s [-amnprsv]\n", name);
  41.     exit (30);
  42. }
  43.  
  44. void
  45. m_opt (void)
  46. {
  47.     if (!g) {
  48.         printf ("Amiga");
  49.     }
  50.     else {
  51.         ULONG
  52.             r = g->ChipRevBits0;
  53.  
  54.         if ((r & GFXF_AA_LISA) || (r & GFXF_AA_ALICE) || (r & GFXF_AA_MLISA))
  55.             printf ("Amiga/AGA");
  56.         else
  57.         if ((r & GFXF_HR_DENISE) && (r & GFXF_HR_AGNUS))
  58.             printf ("Amiga/ECS");
  59.         else
  60.         if (r & GFXF_HR_DENISE)
  61.             printf ("Amiga/ECS_Denise");
  62.         else
  63.         if (r & GFXF_HR_AGNUS)
  64.             printf ("Amiga/ECS_Agnus");
  65.         else
  66.             printf ("Amiga/OCS");
  67.     }
  68.  
  69.     printf (" ");
  70.     return;
  71. }
  72.  
  73. void
  74. n_opt (void)
  75. {
  76.     char
  77.         *p;
  78.  
  79.     mountrequest (0);
  80.     p = FindConfig (NODENAME);
  81.     mountrequest (1);
  82.  
  83.     if (!p)
  84.         printf ("<unknown_nodename>");
  85.     else
  86.         printf (p);
  87.  
  88.     printf (" ");
  89.     return;
  90. }
  91.  
  92. void
  93. p_opt (void)
  94. {
  95.     ULONG
  96.         flag = SysBase->AttnFlags;
  97.  
  98.     printf ("m68");
  99.     if (flag & AFF_68040)
  100.         printf ("040");
  101.     else
  102.     if (flag & AFF_68030)
  103.         printf ("030");
  104.     else
  105.     if (flag & AFF_68020)
  106.         printf ("020");
  107.     else
  108.     if (flag & AFF_68010)
  109.         printf ("010");
  110.     else
  111.         printf ("000");
  112.  
  113.     printf (" ");
  114.     return;
  115. }
  116.  
  117. void
  118. r_opt (void)
  119. {
  120.     int
  121.         ver = SysBase->LibNode.lib_Version;
  122.  
  123.     switch (ver) {
  124.         case 33:
  125.             printf ("1.2");
  126.             break;
  127.         case 34:
  128.         case 35:
  129.             printf ("1.3");
  130.             break;
  131.         case 36:
  132.             printf ("2.01");
  133.             break;
  134.         case 37:
  135.             printf ("2.04");
  136.             break;
  137.         case 38:
  138.             printf ("2.1");
  139.             break;
  140.         case 39:
  141.             printf ("3.0");
  142.             break;
  143.         case 40:
  144.             printf ("3.1");
  145.             break;
  146.         default:
  147.             printf ("V%ld", ver);
  148.             break;
  149.     }
  150.     printf (" ");
  151.     return;
  152. }
  153.  
  154. void
  155. s_opt (void)
  156. {
  157.     printf ("AmigaOS ");
  158.     return;
  159. }
  160.  
  161. void
  162. v_opt (void)
  163. {
  164.     int
  165.         ver = SysBase->LibNode.lib_Version,
  166.         rev = SysBase->SoftVer;
  167.         /*rev = SysBase->LibNode.lib_Revision;*/
  168.  
  169.     printf ("%ld.%ld ", ver, rev);
  170.     return;
  171. }
  172.  
  173. int
  174. main (int argc, char **argv)
  175. {
  176.     char
  177.         *nm = argv [0],
  178.         *p;
  179.     int
  180.         i,
  181.         got_opt = 0,
  182.         opt_a = 0,
  183.         opt_m = 0,
  184.         opt_n = 0,
  185.         opt_p = 0,
  186.         opt_r = 0,
  187.         opt_s = 0,
  188.         opt_v = 0;
  189.  
  190.  
  191.     for (i = 1; i < argc; i++) {
  192.         got_opt = 1;
  193.         p = argv [i];
  194.         if (*p != '-')
  195.             usage (nm);
  196.         p++;
  197.         switch (*p) {
  198.             case 'a':
  199.                 opt_a = 1;
  200.                 break;
  201.             case 'm':
  202.                 opt_m = 1;
  203.                 break;
  204.             case 'n':
  205.                 opt_n = 1;
  206.                 break;
  207.             case 'p':
  208.                 opt_p = 1;
  209.                 break;
  210.             case 'r':
  211.                 opt_r = 1;
  212.                 break;
  213.             case 's':
  214.                 opt_s = 1;
  215.                 break;
  216.             case 'v':
  217.                 opt_v = 1;
  218.                 break;
  219.             default:
  220.                 usage (nm);
  221.         }
  222.     }
  223.  
  224.     if (got_opt == 0)
  225.         opt_n = 1;
  226.  
  227.     if (opt_a)
  228.         opt_m = opt_n = opt_p = opt_r = opt_s = opt_v = 1;
  229.  
  230.     g = (struct GfxBase *) OpenLibrary ("graphics.library", 0);
  231.  
  232.     if (opt_s)
  233.         s_opt ();
  234.     if (opt_n)
  235.         n_opt ();
  236.     if (opt_r)
  237.         r_opt ();
  238.     if (opt_v)
  239.         v_opt ();
  240.     if (opt_m)
  241.         m_opt ();
  242.     if (opt_p)
  243.         p_opt ();
  244.  
  245.     printf ("\n");
  246.  
  247.     if (g)
  248.         CloseLibrary ((struct Library *) g);
  249.  
  250.     exit (0);
  251. }
  252.