diff options
author | TingPing <tingping@tingping.se> | 2015-02-14 13:35:02 -0500 |
---|---|---|
committer | TingPing <tingping@tingping.se> | 2015-02-21 20:09:15 -0500 |
commit | 5e3355a6c348b511c7b7a1f6dc89185726d566c5 (patch) | |
tree | 88183bc947205c24111589a7288b5f9f133a2875 /plugins/sysinfo/format.c | |
parent | 363321dc33c8f390ff1d7109d632aaa53a82214e (diff) |
Unify sysinfo plugins and add osx support
This does remove the net* commands from the Unix version that may return at a later date with OSX and Windows support. This commit also makes numerious other changes such as code cleanup, reformatting, etc. Closes #829
Diffstat (limited to 'plugins/sysinfo/format.c')
-rw-r--r-- | plugins/sysinfo/format.c | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/plugins/sysinfo/format.c b/plugins/sysinfo/format.c new file mode 100644 index 00000000..f0b0effd --- /dev/null +++ b/plugins/sysinfo/format.c @@ -0,0 +1,95 @@ +/* + * SysInfo - sysinfo plugin for HexChat + * Copyright (c) 2015 Patrick Griffis. + * + * This program 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 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. + * + * You should have received a copy of the GNU General Public License + * along with this program if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <glib.h> + +char * +sysinfo_format_uptime (gint64 uptime) +{ + char buffer[128]; + int weeks; + int days; + int hours; + int minutes; + int seconds; + + seconds = uptime%60; + minutes = (uptime/60)%60; + hours = (uptime/3600)%24; + days = (uptime/86400)%7; + weeks = uptime/604800; + + if (minutes != 0 || hours != 0 || days != 0 || weeks != 0) + { + if (hours != 0 || days != 0 || weeks != 0) + { + if (days !=0 || weeks != 0) + { + if (weeks != 0) + g_snprintf (buffer, sizeof(buffer), "%dw %dd %dh %dm %ds", weeks, days, hours, minutes, seconds); + else + g_snprintf (buffer, sizeof(buffer), "%dd %dh %dm %ds", days, hours, minutes, seconds); + } + else + { + g_snprintf (buffer, sizeof(buffer), "%dh %dm %ds", hours, minutes, seconds); + } + } + else + { + g_snprintf (buffer, sizeof(buffer), "%dm %ds", minutes, seconds); + } + } + return g_strdup (buffer); +} + +char * +sysinfo_format_memory (guint64 totalmem, guint64 freemem) +{ + char *total_fmt, *free_fmt, *ret; + + total_fmt = g_format_size_full (totalmem, G_FORMAT_SIZE_IEC_UNITS); + free_fmt = g_format_size_full (freemem, G_FORMAT_SIZE_IEC_UNITS); + ret = g_strdup_printf ("%s Total (%s Free)", total_fmt, free_fmt); + + g_free (total_fmt); + g_free (free_fmt); + return ret; +} + +char * +sysinfo_format_disk (guint64 total, guint64 free) +{ + char *total_fmt, *free_fmt, *used_fmt, *ret; + GFormatSizeFlags format_flags = G_FORMAT_SIZE_DEFAULT; + +#ifdef WIN32 /* Windows uses IEC size (with SI format) */ + format_flags = G_FORMAT_SIZE_IEC_UNITS; +#endif + + total_fmt = g_format_size_full (total, format_flags); + free_fmt = g_format_size_full (free, format_flags); + used_fmt = g_format_size_full (total - free, format_flags); + ret = g_strdup_printf ("%s / %s (%s Free)", used_fmt, total_fmt, free_fmt); + + g_free (total_fmt); + g_free (free_fmt); + g_free (used_fmt); + return ret; +} |