On systems with a LOT of RAM, a signed integer sometimes printed negative.
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 24 May 2010 18:19:08 +0000 (18:19 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 24 May 2010 18:19:08 +0000 (18:19 +0000)
(closes issue #16837)
 Reported by: jlpedrosa
 Patches:
       20100504__issue16837.diff.txt uploaded by tilghman (license 14)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@265316 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/asterisk.c

index e81840f..fd29a6f 100644 (file)
@@ -569,13 +569,14 @@ static int swapmode(int *used, int *total)
 /*! \brief Give an overview of system statistics */
 static char *handle_show_sysinfo(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       int64_t physmem, freeram;
-       int totalswap = 0, freeswap = 0, nprocs = 0;
+       uint64_t physmem, freeram;
+       uint64_t totalswap = 0, freeswap = 0;
+       int nprocs = 0;
        long uptime = 0;
 #if defined(HAVE_SYSINFO)
        struct sysinfo sys_info;
        sysinfo(&sys_info);
-       uptime = sys_info.uptime/3600;
+       uptime = sys_info.uptime / 3600;
        physmem = sys_info.totalram * sys_info.mem_unit;
        freeram = (sys_info.freeram * sys_info.mem_unit) / 1024;
        totalswap = (sys_info.totalswap * sys_info.mem_unit) / 1024;
@@ -624,7 +625,7 @@ static char *handle_show_sysinfo(struct ast_cli_entry *e, int cmd, struct ast_cl
        sysctl(mib, 2, &vmtotal, &len, NULL, 0);
        freeram = (vmtotal.t_free << pageshift);
        /* generate swap usage and totals */
-       swapmode(&usedswap, &totalswap); 
+       swapmode(&usedswap, &totalswap);
        freeswap = (totalswap - usedswap);
        /* grab number of processes */
 #if defined(__OpenBSD__)
@@ -648,14 +649,14 @@ static char *handle_show_sysinfo(struct ast_cli_entry *e, int cmd, struct ast_cl
 
        ast_cli(a->fd, "\nSystem Statistics\n");
        ast_cli(a->fd, "-----------------\n");
-       ast_cli(a->fd, "  System Uptime:             %ld hours\n", uptime);
-       ast_cli(a->fd, "  Total RAM:                 %ld KiB\n", (long)physmem/1024);
-       ast_cli(a->fd, "  Free RAM:                  %ld KiB\n", (long)freeram);
+       ast_cli(a->fd, "  System Uptime:             %lu hours\n", uptime);
+       ast_cli(a->fd, "  Total RAM:                 %" PRIu64 " KiB\n", physmem / 1024);
+       ast_cli(a->fd, "  Free RAM:                  %" PRIu64 " KiB\n", freeram);
 #if defined(HAVE_SYSINFO)
-       ast_cli(a->fd, "  Buffer RAM:                %ld KiB\n", (sys_info.bufferram * sys_info.mem_unit)/1024);
+       ast_cli(a->fd, "  Buffer RAM:                %" PRIu64 " KiB\n", ((uint64_t) sys_info.bufferram * sys_info.mem_unit) / 1024);
 #endif
-       ast_cli(a->fd, "  Total Swap Space:          %ld KiB\n", (long)totalswap);
-       ast_cli(a->fd, "  Free Swap Space:           %ld KiB\n\n", (long)freeswap);
+       ast_cli(a->fd, "  Total Swap Space:          %" PRIu64 " KiB\n", totalswap);
+       ast_cli(a->fd, "  Free Swap Space:           %" PRIu64 " KiB\n\n", freeswap);
        ast_cli(a->fd, "  Number of Processes:       %d \n\n", nprocs);
        return CLI_SUCCESS;
 }