From e414807aaff2281b3cb7602aa635cbcec98e1762 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Sat, 5 Feb 2005 16:49:14 +0000
Subject: [PATCH] Allow uptime to be displayed in seconds (bug #3510, with
 mods)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4968 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 cli.c | 38 ++++++++++++++++++++++++++++----------
 1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/cli.c b/cli.c
index fdd87a3b0f..c011730b5f 100755
--- a/cli.c
+++ b/cli.c
@@ -250,7 +250,12 @@ static char modlist_help[] =
 
 static char version_help[] =
 "Usage: show version\n"
-"       Shows Asterisk version information.\n ";
+"       Shows Asterisk version information.\n";
+
+static char uptime_help[] =
+"Usage: show uptime [seconds]\n"
+"       Shows Asterisk uptime information.\n"
+"       The seconds word returns the uptime in seconds only.\n";
 
 static char *format_uptimestr(time_t timeval)
 {
@@ -333,22 +338,35 @@ static int handle_showuptime(int fd, int argc, char *argv[])
 {
 	time_t curtime, tmptime;
 	char *timestr;
+	int printsec;
+
+	printsec = ((argc == 3) && (!strcasecmp(argv[2],"seconds")));
+	if ((argc != 2) && (!printsec))
+		return RESULT_SHOWUSAGE;
 
 	time(&curtime);
 	if (ast_startuptime) {
 		tmptime = curtime - ast_startuptime;
-		timestr = format_uptimestr(tmptime);
-		if (timestr) {
-			ast_cli(fd, "System uptime: %s\n", timestr);
-			free(timestr);
+		if (printsec) {
+			ast_cli(fd, "System uptime: %lu\n",tmptime);
+		} else {
+			timestr = format_uptimestr(tmptime);
+			if (timestr) {
+				ast_cli(fd, "System uptime: %s\n", timestr);
+				free(timestr);
+			}
 		}
 	}		
 	if (ast_lastreloadtime) {
 		tmptime = curtime - ast_lastreloadtime;
-		timestr = format_uptimestr(tmptime);
-		if (timestr) {
-			ast_cli(fd, "Last reload: %s\n", timestr);
-			free(timestr);
+		if (printsec) {
+			ast_cli(fd, "Last reload: %lu\n", tmptime);
+		} else {
+			timestr = format_uptimestr(tmptime);
+			if ((timestr) && (!printsec)) {
+				ast_cli(fd, "Last reload: %s\n", timestr);
+				free(timestr);
+			} 
 		}
 	}
 	return RESULT_SUCCESS;
@@ -782,7 +800,7 @@ static struct ast_cli_entry builtins[] = {
 	{ { "show", "channels", NULL }, handle_chanlist, "Display information on channels", chanlist_help },
 	{ { "show", "modules", NULL }, handle_modlist, "List modules and info", modlist_help },
 	{ { "show", "modules", "like", NULL }, handle_modlist, "List modules and info", modlist_help, complete_mod_4 },
-	{ { "show", "uptime", NULL }, handle_showuptime, "Show uptime information", modlist_help },
+ 	{ { "show", "uptime", NULL }, handle_showuptime, "Show uptime information", uptime_help },
 	{ { "show", "version", NULL }, handle_version, "Display version info", version_help },
 	{ { "soft", "hangup", NULL }, handle_softhangup, "Request a hangup on a given channel", softhangup_help, complete_ch_3 },
 	{ { "unload", NULL }, handle_unload, "Unload a dynamic module by name", unload_help, complete_fn },
-- 
GitLab