]> Zhao Yanbai Git Server - minix.git/commitdiff
Importing usr.bin/uname 96/996/2
authorThomas Cort <tcort@minix3.org>
Sat, 7 Sep 2013 01:40:42 +0000 (21:40 -0400)
committerLionel Sambuc <lionel@minix3.org>
Sat, 1 Mar 2014 08:04:55 +0000 (09:04 +0100)
Change-Id: I4c316221e288edd839e26a2af4cb59f28bf722c1

commands/Makefile
commands/uname/Makefile [deleted file]
commands/uname/uname.c [deleted file]
man/man1/Makefile
man/man1/uname.1 [deleted file]
releasetools/nbsd_ports
usr.bin/Makefile
usr.bin/uname/Makefile [new file with mode: 0644]
usr.bin/uname/uname.1 [new file with mode: 0644]
usr.bin/uname/uname.c [new file with mode: 0644]

index 7510c0c234ef76023d9bd2944d3a3e647be2187e..53fad8f6dd61b16f3da447f3baf1d0dff594777e 100644 (file)
@@ -27,7 +27,7 @@ SUBDIR=       add_route arp ash at backup btrace \
        stty svclog svrctl swifi synctree sysenv \
        syslogd tail tcpd tcpdp tcpstat telnet \
        telnetd term termcap tget time touch \
-       truncate udpstat umount uname \
+       truncate udpstat umount \
        unstack update uud uue version vol \
        whereis which writeisofs fetch \
        zdump zmodem pkgin_cd pkgin_all \
diff --git a/commands/uname/Makefile b/commands/uname/Makefile
deleted file mode 100644 (file)
index 1f96eba..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PROG=  uname
-MAN=
-
-LINKS+=      ${BINDIR}/uname ${BINDIR}/arch
-
-.include <bsd.prog.mk>
diff --git a/commands/uname/uname.c b/commands/uname/uname.c
deleted file mode 100644 (file)
index c80d153..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*  uname - print system name                  Author: Earl Chew */
-
-/* Print the following system information as returned by the uname()
- * function:
- *
- *     system name             Minix
- *     node name               10.0.2.15
- *     release name            3.2.1
- *     version                 Minix 3.2.1 (GENERIC)
- *     machine name            i686
- *     arch                    i386    (Minix specific)
- */
-
-#include <sys/types.h>
-#include <sys/utsname.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-/* Define the uname components. */
-#define ALL     ((unsigned) 0x1F)
-#define SYSNAME  ((unsigned) 0x01)
-#define NODENAME ((unsigned) 0x02)
-#define RELEASE  ((unsigned) 0x04)
-#define VERSION  ((unsigned) 0x08)
-#define U_MACHINE  ((unsigned) 0x10)
-#define ARCH     ((unsigned) 0x20)
-
-int main(int argc, char **argv );
-void print(int fd, ... );
-void usage(void );
-
-#ifdef __STDC__
-void print(int fd, ...)
-#else
-void print(fd)
-int fd;
-#endif
-{
-/* Print a sequence of strings onto the named channel. */
-  va_list argp;
-  char *p;
-
-  va_start(argp, fd);
-  while (1) {
-       p = va_arg(argp, char *);
-       if (p == (char *) NULL) break;
-       write(fd, p, strlen(p));
-  }
-  va_end(argp);
-}
-
-char *name;
-
-void usage()
-{
-  print(STDERR_FILENO, "Usage: ", name, " -snrvmpa\n", (char *) NULL);
-  exit(EXIT_FAILURE);
-}
-
-int main(argc, argv)
-int argc;
-char **argv;
-{
-  int info;
-  char *p;
-  struct utsname un;
-
-  name = strrchr(argv[0], '/');
-  if (name == NULL) name = argv[0]; else name++;
-
-  for (info = 0; argc > 1; argc--, argv++) {
-       if (argv[1][0] == '-') {
-               for (p = &argv[1][1]; *p; p++) {
-                       switch (*p) {
-                               case 'a': info |= ALL;      break;
-                               case 'm': info |= U_MACHINE;  break;
-                               case 'n': info |= NODENAME; break;
-                               case 'r': info |= RELEASE;  break;
-                               case 's': info |= SYSNAME;  break;
-                               case 'v': info |= VERSION;  break;
-                               case 'p': info |= ARCH;     break;
-                               default: usage();
-                       }
-               }
-       } else {
-               usage();
-       }
-  }
-
-  if (info == 0) info = strcmp(name, "arch") == 0 ? ARCH : SYSNAME;
-
-  if (uname(&un) != 0) {
-       print(STDERR_FILENO, "unable to determine uname values\n", (char *) NULL);
-       exit(EXIT_FAILURE);
-  }
-
-  if ((info & SYSNAME) != 0)
-       print(STDOUT_FILENO, un.sysname, (char *) NULL);
-  if ((info & NODENAME) != 0) {
-       if ((info & (SYSNAME)) != 0)
-               print(STDOUT_FILENO, " ", (char *) NULL);
-       print(STDOUT_FILENO, un.nodename, (char *) NULL);
-  }
-  if ((info & RELEASE) != 0) {
-       if ((info & (SYSNAME|NODENAME)) != 0)
-               print(STDOUT_FILENO, " ", (char *) NULL);
-       print(STDOUT_FILENO, un.release, (char *) NULL);
-  }
-  if ((info & VERSION) != 0) {
-       if ((info & (SYSNAME|NODENAME|RELEASE)) != 0)
-               print(STDOUT_FILENO, " ", (char *) NULL);
-       print(STDOUT_FILENO, un.version, (char *) NULL);
-  }
-  if ((info & U_MACHINE) != 0) {
-       if ((info & (SYSNAME|NODENAME|RELEASE|VERSION)) != 0)
-               print(STDOUT_FILENO, " ", (char *) NULL);
-       print(STDOUT_FILENO, un.machine, (char *) NULL);
-  }
-  if ((info & ARCH) != 0) {
-       if ((info & (SYSNAME|NODENAME|RELEASE|VERSION|U_MACHINE)) != 0)
-               print(STDOUT_FILENO, " ", (char *) NULL);
-       print(STDOUT_FILENO, un.arch, (char *) NULL);
-  }
-  print(STDOUT_FILENO, "\n", (char *) NULL);
-  return EXIT_SUCCESS;
-}
index dd79a8e324a2f3544fd78fa11967f3650ce412a2..5b2282f92da59693c592192364574e466245fa4a 100644 (file)
@@ -19,7 +19,7 @@ MAN=  ash.1 at.1 \
        stty.1 svc.1 svrctl.1 \
        synctree.1 sysenv.1 sz.1 tail.1 telnet.1 template.1 \
        term.1 termcap.1 tget.1 time.1 true.1 \
-       truncate.1 umount.1 uname.1 \
+       truncate.1 umount.1 \
        uud.1 uue.1 vol.1 whereis.1 which.1 \
        yap.1 linkfarm.1 pkg_view.1
 
diff --git a/man/man1/uname.1 b/man/man1/uname.1
deleted file mode 100644 (file)
index 7d02b8a..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.TH UNAME 1
-.SH NAME
-uname, arch \- system info
-.SH SYNOPSIS
-\fBuname\fR [\fB\-snrvmpa\fR]\fR
-.br
-\fBarch\fR [\fB\-snrvmpa\fR]\fR
-.br
-.de FL
-.TP
-\\fB\\$1\\fR
-\\$2
-..
-.de EX
-.TP 20
-\\fB\\$1\\fR
-# \\$2
-..
-.SH OPTIONS
-.TP 5
-.B \-s
-# System name
-.TP 5
-.B \-n
-# Node/network name
-.TP 5
-.B \-r
-# Operating system release
-.TP 5
-.B \-v
-# Operating system version
-.TP 5
-.B \-m
-# Machine type
-.TP 5
-.B \-p
-# Processor family
-.TP 5
-.B \-a
-# Short for \fB\-snrvm\fR
-.SH EXAMPLES
-.TP 20
-.B uname -n
-# Print the name of the system
-.TP 20
-.B arch
-# Print the name of the system architecture
-.SH DESCRIPTION
-.PP
-\fIUname\fP and \fIarch\fP give information about the system.  The options
-indicate which information strings must be printed.  These strings are always
-in the same order.  \fIUname\fP and \fIarch\fP only differ w.r.t. the default
-string to print, \fB\-s\fP and \fB\-p\fP respectively.
-.PP
-The strings are compiled into the commands except for the node name, it is
-obtained from the file \fI/etc/hostname.file\fP.  \fBUname \-m\fP should
-return the actual machine type, not the same string as with \fB\-p\fP.
-.SH "SEE ALSO"
-.BR uname (3).
index 80b6af0a9ef28de846852ab7e095953deb2ba998..14f047d5ea6670f8e76f04859316a188ca62c740 100644 (file)
 2012/10/17 12:00:00,usr.bin/tsort
 2012/10/17 12:00:00,usr.bin/tty
 2012/10/17 12:00:00,usr.bin/ul
+2013/09/06 12:00:00,usr.bin/uname
 2012/10/17 12:00:00,usr.bin/unifdef
 2010/10/06 07:59:18,usr.bin/uniq
 2013/10/23 12:00:00,usr.bin/units
index ae7dc7d1baab9ff355e87bbe836d9104b83d6afa..20903c571fb62b391ab0a715999eb0cffcedfaa5 100644 (file)
@@ -26,12 +26,12 @@ SUBDIR= asa \
        sdiff sed seq shlock \
        shuffle soelim sort split stat su \
        tee tic tput \
-       tr tsort tty ul unexpand unifdef \
+       tr tsort tty ul uname unexpand unifdef \
        toproto \
        uniq units unvis unzip users \
        uuidgen vis \
        \
-       wc what whatis who whois \
+       wc what who whois \
        write xargs xinstall xstr yes
 
 .if !defined(__MINIX)
@@ -42,10 +42,11 @@ SUBDIR+= ministat
 
 # Minix commands
 SUBDIR+= top 
+SUBDIR+= toproto
 
-# LSC FIXME For now we compile unconditionnaly apropos even if we 
+# LSC FIXME For now we compile unconditionnaly apropos and whatis even if we 
 # do not have whatis
-SUBDIR+= apropos
+SUBDIR+= apropos whatis
 .endif # defie
 
 .if (${MKMAKEMANDB} == "no")
diff --git a/usr.bin/uname/Makefile b/usr.bin/uname/Makefile
new file mode 100644 (file)
index 0000000..44b3a6d
--- /dev/null
@@ -0,0 +1,10 @@
+#      $NetBSD: Makefile,v 1.3 1997/01/09 20:23:11 tls Exp $
+#      from: @(#)Makefile      5.3 (Berkeley) 5/11/90
+
+PROG=  uname
+
+.if defined(__MINIX)
+LINKS+=        ${BINDIR}/uname ${BINDIR}/arch
+.endif # __MINIX
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/uname/uname.1 b/usr.bin/uname/uname.1
new file mode 100644 (file)
index 0000000..8253ea9
--- /dev/null
@@ -0,0 +1,86 @@
+.\"    $NetBSD: uname.1,v 1.12 2005/03/27 18:41:22 peter Exp $
+.\"
+.\" Copyright (c) 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    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. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
+.\"
+.\"     from: @(#)du.1 6.13 (Berkeley) 6/20/91
+.\"    $NetBSD: uname.1,v 1.12 2005/03/27 18:41:22 peter Exp $
+.\"
+.Dd November 9, 1998
+.Dt UNAME 1
+.Os
+.Sh NAME
+.Nm uname
+.Nd Print operating system name
+.Sh SYNOPSIS
+.Nm
+.Op Fl amnprsv
+.Sh DESCRIPTION
+The
+.Nm
+utility writes symbols representing one or more system characteristics
+to the standard output.
+.Pp
+The following options are available:
+.Bl -tag -width indent
+.It Fl a
+Behave as though all of the options
+.Fl mnrsv
+were specified.
+.It Fl m
+print the machine hardware name.
+.It Fl n
+print the nodename (the nodename may be a name
+that the system is known by to a communications
+network).
+.It Fl p
+print the machine processor architecture name.
+.It Fl r
+print the operating system release.
+.It Fl s
+print the operating system name.
+.It Fl v
+print the operating system version.
+.El
+.Pp
+If no options are specified,
+.Nm
+prints the operating system name as if the
+.Fl s
+option had been specified.
+.Sh SEE ALSO
+.Xr hostname 1 ,
+.Xr machine 1 ,
+.Xr uname 3
+.Sh STANDARDS
+The
+.Nm
+utility conforms to
+.St -p1003.2-92 .
+The
+.Fl p
+option is an extension to the standard.
diff --git a/usr.bin/uname/uname.c b/usr.bin/uname/uname.c
new file mode 100644 (file)
index 0000000..233fc68
--- /dev/null
@@ -0,0 +1,175 @@
+/*     $NetBSD: uname.c,v 1.11 2011/09/06 18:35:13 joerg Exp $ */
+
+/*
+ * Copyright (c) 1994 Winning Strategies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    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 without 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.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__RCSID("$NetBSD: uname.c,v 1.11 2011/09/06 18:35:13 joerg Exp $");
+#endif /* not lint */
+
+#include <sys/param.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <err.h>
+
+#ifdef __minix
+#include <string.h>
+#else /* !__minix */
+#include <sys/sysctl.h>
+#endif /* !__minix */
+#include <sys/utsname.h>
+
+__dead static void usage(void);
+
+/* Note that PRINT_MACHINE_ARCH is excluded from PRINT_ALL! */
+#define        PRINT_SYSNAME           0x01
+#define        PRINT_NODENAME          0x02
+#define        PRINT_RELEASE           0x04
+#define        PRINT_VERSION           0x08
+#define        PRINT_MACHINE           0x10
+#define        PRINT_MACHINE_ARCH      0x20
+#define        PRINT_ALL               \
+    (PRINT_SYSNAME|PRINT_NODENAME|PRINT_RELEASE|PRINT_VERSION|PRINT_MACHINE)
+
+int
+main(int argc, char **argv)
+{
+       struct utsname u;
+       char machine_arch[SYS_NMLN];
+       int c;
+       int space = 0;
+       int print_mask = 0;
+
+       (void)setlocale(LC_ALL, "");
+
+       while ((c = getopt(argc,argv,"amnprsv")) != -1) {
+               switch (c) {
+               case 'a':
+                       print_mask |= PRINT_ALL;
+                       break;
+               case 'm':
+                       print_mask |= PRINT_MACHINE;
+                       break;
+               case 'n':
+                       print_mask |= PRINT_NODENAME;
+                       break;
+               case 'p':
+                       print_mask |= PRINT_MACHINE_ARCH;
+                       break;
+               case 'r': 
+                       print_mask |= PRINT_RELEASE;
+                       break;
+               case 's': 
+                       print_mask |= PRINT_SYSNAME;
+                       break;
+               case 'v':
+                       print_mask |= PRINT_VERSION;
+                       break;
+               default:
+                       usage();
+                       /* NOTREACHED */
+               }
+       }
+       
+       if (optind != argc) {
+               usage();
+               /* NOTREACHED */
+       }
+
+       if (!print_mask) {
+#ifdef __minix
+               setprogname(argv[0]);
+
+               /* When executed via the `arch` symlink, do `uname -p` */
+               if (getprogname() != NULL && strcmp(getprogname(), "arch") == 0)
+                       print_mask = PRINT_MACHINE_ARCH;
+               else
+#endif /* __minix */
+                       print_mask = PRINT_SYSNAME;
+       }
+
+       if (uname(&u) != 0) {
+               err(EXIT_FAILURE, "uname");
+               /* NOTREACHED */
+       }
+       if (print_mask & PRINT_MACHINE_ARCH) {
+#ifdef __minix
+               strlcpy(machine_arch, u.arch, sizeof(machine_arch));
+#else /* !__minix */
+               int mib[2] = { CTL_HW, HW_MACHINE_ARCH };
+               size_t len = sizeof (machine_arch);
+
+               if (sysctl(mib, sizeof (mib) / sizeof (mib[0]), machine_arch,
+                   &len, NULL, 0) < 0)
+                       err(EXIT_FAILURE, "sysctl");
+#endif /* !__minix */
+       }
+
+       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);
+       }
+       if (print_mask & PRINT_MACHINE_ARCH) {
+               if (space++) putchar(' ');
+               fputs(machine_arch, stdout);
+       }
+       putchar('\n');
+
+       exit(EXIT_SUCCESS);
+       /* NOTREACHED */
+}
+
+static void
+usage(void)
+{
+       fprintf(stderr, "usage: uname [-amnprsv]\n");
+       exit(EXIT_FAILURE);
+}