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

📄 client.c

📁 系统任务管理器
💻 C
📖 第 1 页 / 共 3 页
字号:
	{	GList		*list;	ActiveTCP	*tcp;	for (list = inet_list; list; list = list->next)		{		tcp = (ActiveTCP *) list->data;		gkrellm_inet_log_tcp_port_data(tcp);		}	}static voidclient_inet_reset(void)	{	gkrellm_free_glist_and_data(&inet_list);	}static voidclient_sys_inet_init(void)	{	if (inet_unsupported)		return;	gkrellm_inet_client_divert(read_tcp_data);	}static voidclient_inet_setup(gchar *line)	{	if (!strcmp(line, "inet_unsupported"))		inet_unsupported = TRUE;	}/* ================================================================= */struct	{	guint64		total,				used,				free,				shared,				buffers,				cached;	guint64		swap_total,				swap_used;	gulong		swap_in,				swap_out;	}	mem;static voidclient_mem_line_from_server(gchar *line)	{	sscanf(line, "%llu %llu %llu %llu %llu %llu",			&mem.total, &mem.used, &mem.free,			&mem.shared, &mem.buffers, &mem.cached);	}static voidclient_swap_line_from_server(gchar *line)	{	sscanf(line, "%llu %llu %lu %lu",			&mem.swap_total, &mem.swap_used,			&mem.swap_in, &mem.swap_out);	}static voidread_mem_data(void)	{	gkrellm_mem_assign_data(mem.total, mem.used, mem.free, mem.shared,				mem.buffers, mem.cached);	}static voidread_swap_data(void)	{	gkrellm_swap_assign_data(mem.swap_total, mem.swap_used,				mem.swap_in, mem.swap_out);	}static voidclient_sys_mem_init(void)	{	gkrellm_mem_client_divert(read_mem_data, read_swap_data);	}/* ================================================================= */typedef struct	{	gchar	*directory,			*device,			*type;	gulong	blocks,			bavail,			bfree,			bsize;	}	Mount;static GList	*mounts_list,				*fstab_list;static gboolean fstab_modified,				mounting_unsupported;static voidclient_fstab_line_from_server(gchar *line)	{	GList	*list;	Mount	*m;	gchar	dir[128], dev[64], type[64];	if (!strcmp(line, ".clear"))		{		for (list = fstab_list; list; list = list->next)			{			m = (Mount *) list->data;			g_free(m->directory);			g_free(m->device);			g_free(m->type);			g_free(m);			}		g_list_free(fstab_list);		fstab_list = NULL;		fstab_modified = TRUE;		}	else		{		m = g_new0(Mount, 1);		sscanf(line, "%127s %63s %63s", dir, dev, type);		m->directory = g_strdup(dir);		m->device = g_strdup(dev);		m->type = g_strdup(type);		fstab_list = g_list_append(fstab_list, m);		}	}static voidclient_mounts_line_from_server(gchar *line)	{	GList	*list;	Mount	*m;	gchar	dir[128], dev[64], type[64];	if (!strcmp(line, ".clear"))		{		for (list = mounts_list; list; list = list->next)			{			m = (Mount *) list->data;			g_free(m->directory);			g_free(m->device);			g_free(m->type);			g_free(m);			}		g_list_free(mounts_list);		mounts_list = NULL;		}	else		{		m = g_new0(Mount, 1);		sscanf(line, "%127s %63s %63s %lu %lu %lu %lu", dir, dev, type,				&m->blocks, &m->bavail, &m->bfree, &m->bsize);		m->directory = g_strdup(dir);		m->device = g_strdup(dev);		m->type = g_strdup(type);		mounts_list = g_list_append(mounts_list, m);		}	}static voidclient_fs_line_from_server(gchar *line)	{	GList	*list;	Mount	*m;	gchar	dir[128], dev[64];	gulong	blocks, bavail, bfree, bsize;	sscanf(line, "%127s %63s %lu %lu %lu %lu", dir, dev,				&blocks, &bavail, &bfree, &bsize);	for (list = mounts_list; list; list = list->next)		{		m = (Mount *) list->data;		if (!strcmp(m->directory, dir) && !strcmp(m->device, dev))			{			m->blocks = blocks;			m->bavail = bavail;			m->bfree = bfree;			m->bsize = bsize;			break;			}		}	}static voidget_fsusage(gpointer fs, gchar *dir)	{	GList	*list;	Mount	*m;	for (list = mounts_list; list; list = list->next)		{		m = (Mount *) list->data;		if (!strcmp(m->directory, dir))			{			gkrellm_fs_assign_fsusage_data(fs, m->blocks, m->bavail,						m->bfree, m->bsize);			break;			}		}	}static voidget_mounts_list(void)	{	GList	*list;	Mount	*m;	for (list = mounts_list; list; list = list->next)		{		m = (Mount *) list->data;		gkrellm_fs_add_to_mounts_list(m->directory, m->device, m->type);		}	}static voidget_fstab_list(void)	{	GList	*list;	Mount	*m;	for (list = fstab_list; list; list = list->next)		{		m = (Mount *) list->data;		gkrellm_fs_add_to_fstab_list(m->directory, m->device,				m->type, "none" /* options NA since no mounting */ );		}	fstab_modified = FALSE;	}static gbooleanget_fstab_modified(void)	{	return fstab_modified;	}static voidclient_sys_fs_init(void)	{	gkrellm_fs_client_divert(get_fsusage, get_mounts_list,				get_fstab_list, get_fstab_modified);	if (mounting_unsupported)		gkrellm_fs_mounting_unsupported();	}static voidclient_fs_setup(gchar *line)	{	if (!strcmp(line, "mounting_unsupported"))		mounting_unsupported = TRUE;	}/* ================================================================= */typedef struct	{	gchar		*path;	gint		total,				new;	gpointer	mbox_ptr;	}	Mailbox;static GList	*mailbox_list;static gbooleancheck_mail(Mailbox *mbox)	{	gkrellm_set_external_mbox_counts(mbox->mbox_ptr, mbox->total, mbox->new);	return TRUE;	}static voidclient_mail_line_from_server(gchar *line)	{	Mailbox		*mbox = NULL;	GList		*list;	gchar		path[256];//	gchar		*s;	gint		total, new;	if (sscanf(line, "%255s %d %d", path, &total, &new) < 3)		return;	for (list = mailbox_list; list; list = list->next)		{		mbox = (Mailbox *) list->data;		if (!strcmp(path, mbox->path))			break;		}	if (!list)		{		mbox = g_new0(Mailbox, 1);		mbox->path = g_strdup(path);		mailbox_list = g_list_append(mailbox_list, mbox);		mbox->mbox_ptr =				gkrellm_add_external_mbox(check_mail, FALSE, mbox);		gkrellm_set_external_mbox_tooltip(mbox->mbox_ptr, mbox->path);//		s = g_strdup_printf("%s:%s", _GK.server_hostname, mbox->path);//		gkrellm_set_external_mbox_tooltip(mbox->mbox_ptr, s);//		g_free(s);		}	if (mbox)		{		mbox->total = total;		mbox->new = new;		}	}static voidclient_sys_mail_init(void)	{	}static voidclient_mail_setup(gchar *line)	{	}/* ================================================================= */GList		*battery_list;gboolean 	batteries_available;typedef struct	{	gint		id;    gboolean	present,				on_line,				charging;	gint		percent;	gint		time_left;	}	Battery;static Battery	*composite_battery;static Battery *battery_nth(gint n)	{	Battery		*bat;	static gint	n_batteries;	if (n > 10)		return NULL;	if (n < 0)		{		if (!composite_battery)			{			bat = g_new0(Battery, 1);			battery_list = g_list_prepend(battery_list, bat);			bat->id = GKRELLM_BATTERY_COMPOSITE_ID;			composite_battery = bat;			}		return composite_battery;		}	if (composite_battery)		++n;	while ((bat = (Battery *)g_list_nth_data(battery_list, n)) == NULL)		{		bat = g_new0(Battery, 1);		battery_list = g_list_append(battery_list, bat);		bat->id = n_batteries++;		}	return bat;	}static voidclient_battery_line_from_server(gchar *line)	{	Battery		*bat;	gboolean	present, on_line, charging;	gint		percent, time_left, n = 0;	/* 2.1.9 adds 6th arg battery id number	*/	if (sscanf(line, "%d %d %d %d %d %d",				&present, &on_line, &charging, &percent, &time_left, &n) < 5)		return;	bat = battery_nth(n);	if (!bat)		return;	bat->present = present;	bat->on_line = on_line;	bat->charging = charging;	bat->percent = percent;	bat->time_left = time_left;	}static voidread_battery_data(void)	{	GList	*list;	Battery	*bat;	for (list = battery_list; list; list = list->next)		{		bat = (Battery *) list->data;		gkrellm_battery_assign_data(bat->id, bat->present,				bat->on_line, bat->charging,				bat->percent, bat->time_left);		}	}static voidclient_sys_battery_init(void)	{	if (batteries_available)		gkrellm_battery_client_divert(read_battery_data);	}static voidclient_battery_setup(gchar *line)	{	if (   !strcmp(line, "apm_available")		|| !strcmp(line, "battery_available")	   )		batteries_available = TRUE;	}/* ================================================================= */typedef struct	{	gint		type;	gchar		*basename;	gint		id;	gint		iodev;	gint		inter;	gint		group;	gchar		*vref;	gchar		*default_label;	gfloat		factor;	gfloat		offset;	gfloat		raw_value;	}	Sensor;static GList	*sensors_list;static voidclient_sensors_line_from_server(gchar *line)	{	GList	*list;	Sensor	s, *sensor;	gchar	basename[128];	if (need_locale_fix)		locale_fix(line);	sscanf(line, "%d \"%127[^\"]\" %d %d %d %f",			&s.type, basename, &s.id, &s.iodev, &s.inter, &s.raw_value);	for (list = sensors_list; list; list = list->next)		{		sensor = (Sensor *) list->data;		if (   sensor->type == s.type && !strcmp(sensor->basename, basename)			&& sensor->id == s.id && sensor->iodev == s.iodev			&& sensor->inter == s.inter		   )			{			sensor->raw_value = s.raw_value;			break;			}		}	}static gbooleanget_temperature(gchar *path, gint id, gint iodev, gint inter, gfloat *value)	{	GList	*list;	Sensor	*s;	for (list = sensors_list; list; list = list->next)		{		s = (Sensor *) list->data;		if (   s->type == SENSOR_TEMPERATURE && !strcmp(s->basename, path)			&& s->id == id && s->iodev == iodev && s->inter == inter		   )			{			*value = s->raw_value;			return TRUE;			}		}	return FALSE;	}static gbooleanget_fan(gchar *path, gint id, gint iodev, gint inter, gfloat *value)	{	GList	*list;	Sensor	*s;	for (list = sensors_list; list; list = list->next)		{		s = (Sensor *) list->data;		if (   s->type == SENSOR_FAN && !strcmp(s->basename, path)			&& s->id == id && s->iodev == iodev && s->inter == inter		   )			{			*value = s->raw_value;			return TRUE;			}		}	return FALSE;	}static gbooleanget_voltage(gchar *path, gint id, gint iodev, gint inter, gfloat *value)	{	GList	*list;	Sensor	*s;	for (list = sensors_list; list; list = list->next)		{		s = (Sensor *) list->data;		if (   s->type == SENSOR_VOLTAGE && !strcmp(s->basename, path)			&& s->id == id && s->iodev == iodev && s->inter == inter		   )			{			*value = s->raw_value;			return TRUE;			}		}	return FALSE;	}static voidclient_sys_sensors_init(void)	{	GList			*list;	Sensor			*s;	gpointer		sr;	if (!sensors_list)		return;	gkrellm_sensors_client_divert(get_temperature, get_fan, get_voltage);	for (list = sensors_list; list; list = list->next)		{		s = (Sensor *) list->data;		/* The sysdep code in the server may be using the dir arg to get sensor		|  values, but dir is no longer needed.		*/		sr = gkrellm_sensors_add_sensor(s->type, NULL, s->basename,					s->id, s->iodev, s->inter,					s->factor, s->offset,					s->vref, s->default_label);		gkrellm_sensors_set_group(sr, s->group);		}	}static voidclient_sensors_setup(gchar *line)	{	Sensor	*s;	gchar	basename[128], vref[32], default_label[32];	if (need_locale_fix)		locale_fix(line);	s = g_new0(Sensor, 1);	s->group = SENSOR_GROUP_MAINBOARD;	/* Not in pre 2.2.0 versions */	if (sscanf(line,			"%d \"%127[^\"]\" %d %d %d %f %f \"%31[^\"]\" \"%31[^\"]\" %d",			&s->type, basename, &s->id, &s->iodev, &s->inter,			&s->factor, &s->offset, vref, default_label, &s->group) >= 9)		{		s->basename = g_strdup(basename);		if (strcmp(vref, "NONE"))			s->vref = g_strdup(vref);		if (strcmp(default_label, "NONE"))			s->default_label = g_strdup(default_label);		sensors_list = g_list_append(sensors_list, s);		}	else		g_free(s);	}/* ================================================================= */static time_t		server_uptime;static voidclient_uptime_line_from_server(gchar *s)	{	gulong		up_minutes;	sscanf(s, "%lu", &up_minutes);	server_uptime = ((time_t) up_minutes) * 60;	}static time_tclient_read_uptime(void)	{	return server_uptime;	}static voidclient_sys_uptime_init(void)	{	gkrellm_uptime_client_divert(client_read_uptime);	}/* ================================================================= */static struct tm	server_time;  /* clock monitor doesn't have a sysdep interface, so it needs a hook  |  to get server system time when in client mode.  */struct tm *gkrellm_client_server_time(void)	{	return &server_time;	}static voidclient_time_line_from_server(gchar *s)

⌨️ 快捷键说明

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