⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uname.c

📁 android-w.song.android.widget
💻 C
字号:
/* * uname - print system information * * usage: uname [-amnrsv] * *//*   Copyright (C) 1999-2009 Free Software Foundation, Inc.   This file is part of GNU Bash.   Bash is free software: you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation, either version 3 of the License, or   (at your option) any later version.   Bash is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with Bash.  If not, see <http://www.gnu.org/licenses/>.*/#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"#include "common.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 system information.",	"",	"Display information about the system hardware and OS.",	(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 + -