diff options
| author | Agney Lopes Roth Ferraz <agney@debian.org> | 2006-05-22 19:43:53 -0300 | 
|---|---|---|
| committer | Simon Quigley <tsimonq2@ubuntu.com> | 2017-06-19 14:38:34 -0500 | 
| commit | 1db37ee0b1dbfebe11ff6a0eee8000392e4f3f61 (patch) | |
| tree | 02b7da09dbd8cdf8828c01f47154fc76269eb9cc /arch/linux/common/uptime.h | |
| parent | 1a3b201e8e94d8c07b3e0a2ce1af22293a53b506 (diff) | |
| parent | 854292407779593a401a1d5ce71add51880fa84f (diff) | |
Import Debian changes 0.4-1
hardinfo (0.4-1) unstable; urgency=low
  * new upstream release
Diffstat (limited to 'arch/linux/common/uptime.h')
| -rw-r--r-- | arch/linux/common/uptime.h | 75 | 
1 files changed, 75 insertions, 0 deletions
| diff --git a/arch/linux/common/uptime.h b/arch/linux/common/uptime.h new file mode 100644 index 00000000..cf339bf3 --- /dev/null +++ b/arch/linux/common/uptime.h @@ -0,0 +1,75 @@ +/* + *    HardInfo - Displays System Information + *    Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@linuxmag.com.br> + * + *    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, version 2. + * + *    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 + */ + +static UptimeInfo * +computer_get_uptime(void) +{ +    UptimeInfo *ui = g_new0(UptimeInfo, 1); +    FILE *procuptime; +    gulong minutes; + +    if ((procuptime = fopen("/proc/uptime", "r")) != NULL) { +	fscanf(procuptime, "%lu", &minutes); +	ui->minutes = minutes / 60; +	fclose(procuptime); +    } else { +	return NULL; +    } + +    ui->hours = ui->minutes / 60; +    ui->minutes %= 60; +    ui->days = ui->hours / 24; +    ui->hours %= 24; + +    return ui; +} + +static gchar * +computer_get_formatted_uptime() +{ +    UptimeInfo *ui; +    gchar *tmp; + +    ui = computer_get_uptime(); + +    /* FIXME: Use ngettext */ +#define plural(x) ((x > 1) ? "s" : "") + + +    if (ui->days < 1) { +	if (ui->hours < 1) { +	    tmp = +		g_strdup_printf("%d minute%s", ui->minutes, +				plural(ui->minutes)); +	} else { +	    tmp = +		g_strdup_printf("%d hour%s, %d minute%s", ui->hours, +				plural(ui->hours), ui->minutes, +				plural(ui->minutes)); +	} +    } else { +	tmp = +	    g_strdup_printf("%d day%s, %d hour%s and %d minute%s", +			    ui->days, plural(ui->days), ui->hours, +			    plural(ui->hours), ui->minutes, +			    plural(ui->minutes)); +    } + +    g_free(ui); +    return tmp; +} | 
