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

📄 sysdeps-unix.c

📁 系统任务管理器
💻 C
字号:
/* GKrellM|  Copyright (C) 1999-2006 Bill Wilson||  Author:  Bill Wilson    billw@gkrellm.net|  Latest versions might be found at:  http://gkrellm.net||  This program is free software which I release under the GNU General Public|  License. You may redistribute and/or modify this program under the terms|  of that license as published by the Free Software Foundation; either|  version 2 of the License, or (at your option) any later version.||  This program 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.  Version 2 is in the|  COPYRIGHT file in the top level directory of this distribution.| |  To get a copy of the GNU General Puplic License, write to the Free Software|  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include "gkrellmd.h"#include "gkrellmd-private.h"#include "../src/gkrellm-sysdeps.h"static gboolean (*mbmon_check_func)();static gint gkrellm_connect_to(gchar *, gint);#if defined(__linux__)#include "../src/sysdeps/linux.c"#include "../src/sysdeps/sensors-common.c"#endif#if defined(__APPLE__)#include "../src/sysdeps/darwin.c"#include "../src/sysdeps/bsd-common.c"#endif#if defined(__FreeBSD__)#include "../src/sysdeps/freebsd.c"#include "../src/sysdeps/bsd-common.c"#include "../src/sysdeps/sensors-common.c"#endif#if defined(__NetBSD__)#include "../src/sysdeps/netbsd.c"#include "../src/sysdeps/bsd-net-open.c"#include "../src/sysdeps/bsd-common.c"#endif#if defined(__OpenBSD__)#include "../src/sysdeps/openbsd.c"#include "../src/sysdeps/bsd-net-open.c"#include "../src/sysdeps/bsd-common.c"#endif#if defined(__solaris__)#include "../src/sysdeps/solaris.c"#endif#if defined(USE_LIBGTOP)#include "../src/sysdeps/gtop.c"#endif#include <sys/utsname.h>gchar *gkrellm_sys_get_host_name(void)	{	static gboolean	have_it;	static gchar	buf[128];	if (!have_it && gethostname(buf, sizeof(buf)))		strcpy(buf, "unknown");	have_it = TRUE;	return buf;	}gchar *gkrellm_sys_get_system_name(void)	{	static gchar	*sname;	struct utsname	utsn;	if (!sname && uname(&utsn) > -1)		sname = g_strdup_printf("%s %s", utsn.sysname, utsn.release);	if (!sname)		sname = g_strdup("unknown name");	return sname;	}  /* Remove embedded "-i2c-" or "-isa-" from lm_sensors chip names so  |  there can be a chance for config name sysfs compatibility.  This function  |  here in sensors.c is a kludge.  Give user configs a chance to get  |  converted and then move this function to sysdeps/linux.c where it  |  belongs.  |  Munge names like w83627hf-isa-0290 to w83627hf-0290  |                or w83627hf-i2c-0-0290 to w83627hf-0-0290  */voidgkrellm_sensors_linux_name_fix(gchar *id_name)	{#if defined(__linux__)	gchar	*s;	gint	len, bus = 0;	guint	addr = 0;	len = strlen(id_name) + 1;	if ((s = strstr(id_name, "-i2c-")) != NULL)		{		sscanf(s + 5, "%d-%x", &bus, &addr);		snprintf(s, len - (s - id_name), "-%d-%04x", bus, addr);		}	else if ((s = strstr(id_name, "-isa-")) != NULL)		{		*(s + 1) = '0';		memmove(s + 2, s + 4, strlen(s + 4) + 1);		}#endif	}#ifdef SENSORS_COMMONstatic gintgkrellm_connect_to(gchar *server, gint server_port)	{	gint		fd	= -1;#ifdef HAVE_GETADDRINFO	gint 		rv	= 0;	struct addrinfo	hints, *res, *res0;	gchar		portnumber[6];#else	struct hostent	*addr;	struct sockaddr_in s;#endif#ifdef HAVE_GETADDRINFO	snprintf (portnumber, sizeof(portnumber), "%d", server_port);	memset(&hints, 0, sizeof(hints));	hints.ai_family = PF_UNSPEC;	hints.ai_socktype = SOCK_STREAM;	hints.ai_protocol = 0;	if ((rv = getaddrinfo(server, portnumber, &hints, &res0)) != 0)		return -1;	for (res = res0; res; res = res->ai_next)		{		if ((fd = socket(res->ai_family, res->ai_socktype,				res->ai_protocol)) < 0)			continue;		if (_GK.debug_level & DEBUG_SENSORS)			printf("\t[gkrellm_connect_to: (%d,%d,%d) %s:%d]\n",			       res->ai_family, res->ai_socktype,			       res->ai_protocol, server, server_port);		if (connect(fd, res->ai_addr, res->ai_addrlen) >= 0)			break;#ifdef WIN32		closesocket(fd);#else		close(fd);#endif		fd = -1;		}	freeaddrinfo(res0);#else	if (_GK.debug_level & DEBUG_SENSORS)		printf("\t[gkrellm_connect_to: %s:%d]\n", server, server_port);	addr = gethostbyname(server);	if (addr)		{		fd = socket(AF_INET, SOCK_STREAM, 0);		if (fd >= 0)			{			memset(&s, 0, sizeof(s));			memcpy(&s.sin_addr.s_addr, he->h_addr, he->h_length);			s.sin_family = AF_INET;			s.sin_port = htons(server_port);			if (connect(fd, (struct sockaddr *)&s, sizeof (s)) < 0)				{#ifdef WIN32				closesocket(fd);#else				close(fd);#endif				fd = -1;				}			}		}#endif	if (fd < 0)		return -1;	return fd;	}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -