?? uname.c
字號:
/* * uname - print system information * * usage: uname [-amnrsv] * */#include <config.h>#include <stdio.h>#include "bashtypes.h"#if defined (HAVE_UNAME)# include <sys/utsname.h>#elsestruct utsname { char sysname[32]; char nodename[32]; char release[32]; char version[32]; char machine[32];};#endif#include <errno.h>#include "builtins.h"#include "shell.h"#include "bashgetopt.h"#define FLAG_SYSNAME 0x01 /* -s */#define FLAG_NODENAME 0x02 /* -n */#define FLAG_RELEASE 0x04 /* -r */#define FLAG_VERSION 0x08 /* -v */#define FLAG_MACHINE 0x10 /* -m, -p */#define FLAG_ALL 0x1f#ifndef errnoextern int errno;#endifstatic void uprint();static int uname_flags;uname_builtin (list) WORD_LIST *list;{ int opt, r; struct utsname uninfo; uname_flags = 0; reset_internal_getopt (); while ((opt = internal_getopt (list, "amnprsv")) != -1) { switch (opt) { case 'a': uname_flags |= FLAG_ALL; break; case 'm': case 'p': uname_flags |= FLAG_MACHINE; break; case 'n': uname_flags |= FLAG_NODENAME; break; case 'r': uname_flags |= FLAG_RELEASE; break; case 's': uname_flags |= FLAG_SYSNAME; break; case 'v': uname_flags |= FLAG_VERSION; break; default: builtin_usage (); return (EX_USAGE); } } list = loptend; if (list) { builtin_usage (); return (EX_USAGE); } if (uname_flags == 0) uname_flags = FLAG_SYSNAME; /* Only ancient systems will not have uname(2). */#ifdef HAVE_UNAME if (uname (&uninfo) < 0) { builtin_error ("cannot get system name: %s", strerror (errno)); return (EXECUTION_FAILURE); }#else builtin_error ("cannot get system information: uname(2) not available"); return (EXECUTION_FAILURE);#endif uprint (FLAG_SYSNAME, uninfo.sysname); uprint (FLAG_NODENAME, uninfo.nodename); uprint (FLAG_RELEASE, uninfo.release); uprint (FLAG_VERSION, uninfo.version); uprint (FLAG_MACHINE, uninfo.machine); return (EXECUTION_SUCCESS);}static voiduprint (flag, info) int flag; char *info;{ if (uname_flags & flag) { uname_flags &= ~flag; printf ("%s%c", info, uname_flags ? ' ' : '\n'); }}char *uname_doc[] = { "display information about the system", (char *)NULL};struct builtin uname_struct = { "uname", uname_builtin, BUILTIN_ENABLED, uname_doc, "uname [-amnrsv]", 0};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -