[BACK]Return to uname.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / usr.bin / uname

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/usr.bin/uname/uname.c between version 1.3 and 1.4

version 1.3, 1993/08/07 07:58:19 version 1.4, 1994/01/27 18:00:06
Line 1 
Line 1 
 /*  /*
  * uname - print system information. Jeff Comstock - Bloomington, MN USA 1992   * Copyright (c) 1994 Winning Strategies, Inc.
  * Usage: uname [-asnrvm]   * All rights reserved.
  * -s prints system name   *
  * -n prints nodename   * Redistribution and use in source and binary forms, with or without
  * -r prints software release   * modification, are permitted provided that the following conditions
  * -v prints os version   * are met:
  * -m prints machine name   * 1. Redistributions of source code must retain the above copyright
  * -a prinst all the above information   *    notice, this list of conditions and the following disclaimer.
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the
    *    documentation and/or other materials provided with the distribution.
    * 3. All advertising materials mentioning features or use of this software
    *    must display the following acknowledgement:
    *      This product includes software developed by Winning Strategies, Inc.
    * 4. The name of Winning Strategies, Inc. may not be used to endorse or
    *    promote products derived from this software withough specific prior
    *    written permission.
    *
    * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
    * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */   */
   
 #ifndef lint  #ifndef lint
Line 14  static char rcsid[] = "$Id$";
Line 34  static char rcsid[] = "$Id$";
 #endif /* not lint */  #endif /* not lint */
   
 #include <stdio.h>  #include <stdio.h>
   #include <locale.h>
 #include <unistd.h>  #include <unistd.h>
 #include <sysexits.h>  
 #include <sys/utsname.h>  #include <sys/utsname.h>
   
 #define SYSNAME         0  static void usage();
 #define NODENAME        1  
 #define RELEASE         2  #define PRINT_SYSNAME   0x01
 #define VERSION         3  #define PRINT_NODENAME  0x02
 #define MACHINE         4  #define PRINT_RELEASE   0x04
   #define PRINT_VERSION   0x08
 struct utsname u;  #define PRINT_MACHINE   0x10
   #define PRINT_ALL       0x1f
 struct utstab {  
         char *str;  int
         int requested;  main(argc, argv)
 } uttab[] = {          int argc;
         { u.sysname,    0 },          char **argv;
         { u.nodename,   0 },  {
         { u.release,    0 },          struct utsname u;
         { u.version,    0 },          int c;
         { u.machine,    0 }          int space = 0;
 };          int print_mask = 0;
   
 main(int argc, char **argv) {          setlocale(LC_ALL, "");
 char *opts="amnrsv";  
 register int c,space, all=0;          while ((c = getopt(argc,argv,"amnrsv")) != -1 ) {
                   switch ( c ) {
         if ( ! uname(&u) ) {                  case 'a':
                 if ( argc == 1 ) {                          print_mask = PRINT_ALL;
                         puts(u.sysname);                          break;
                 } else {                  case 'm':
                         while ( (c = getopt(argc,argv,opts)) != -1 ) {                          print_mask = PRINT_MACHINE;
                                         switch ( c ) {                          break;
                                         case 'a' : all++;                  case 'n':
                                                 break;                          print_mask = PRINT_NODENAME;
                                         case 'm' : uttab[MACHINE].requested++;                          break;
                                                 break;                  case 'r':
                                         case 'n' : uttab[NODENAME].requested++;                          print_mask = PRINT_RELEASE;
                                                 break;                          break;
                                         case 'r' : uttab[RELEASE].requested++;                  case 's':
                                                 break;                          print_mask = PRINT_SYSNAME;
                                         case 's' : uttab[SYSNAME].requested++;                          break;
                                                 break;                  case 'v':
                                         case 'v' : uttab[VERSION].requested++;                          print_mask = PRINT_VERSION;
                                                 break;                          break;
                                 }                  default:
                         }                          usage();
                         space=0;                          /* NOTREACHED */
                         for(c=0; c <= MACHINE; c++) {  
                                 if ( uttab[c].requested || all ) {  
                                         if ( space )  
                                                 putchar(' ');  
                                         printf("%s", uttab[c].str);  
                                         space++;  
                                 }  
                         }  
                         puts("");  
                 }                  }
                 exit (EX_OK);  
         } else {  
                 perror("uname");  
                 exit (EX_OSERR);  
         }          }
   
           if (optind != argc) {
                   usage();
                   /* NOTREACHED */
           }
   
           if (!print_mask) {
                   print_mask = PRINT_SYSNAME;
           }
   
           if (uname(&u)) {
                   err(1, NULL);
                   /* NOTREACHED */
           }
   
           if (print_mask & PRINT_SYSNAME) {
                   space++;
                   fputs(u.sysname, stdout);
           }
           if (print_mask & PRINT_NODENAME) {
                   if (space++) putchar(' ');
                   fputs(u.nodename, stdout);
           }
           if (print_mask & PRINT_RELEASE) {
                   if (space++) putchar(' ');
                   fputs(u.release, stdout);
           }
           if (print_mask & PRINT_VERSION) {
                   if (space++) putchar(' ');
                   fputs(u.version, stdout);
           }
           if (print_mask & PRINT_MACHINE) {
                   if (space++) putchar(' ');
                   fputs(u.machine, stdout);
           }
           putchar('\n');
   
           exit(0);
           /* NOTREACHED */
   }
   
   static void
   usage()
   {
           fprintf(stderr, "usage: uname [-amnrsv]\n");
           exit(1);
 }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

CVSweb <webmaster@jp.NetBSD.org>