X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=free.c;h=f2e746e396e21f57457a6920b16862cbd4a51d63;hb=39b727f498aad830780169228995e6e8f34953de;hp=a81189be9066b9dead885304b7dc33f616a4c546;hpb=b610615be9aedfac07d1e01f12575707fa3a227c;p=oweals%2Fbusybox.git diff --git a/free.c b/free.c index a81189be9..f2e746e39 100644 --- a/free.c +++ b/free.c @@ -21,30 +21,31 @@ * */ -#include "internal.h" +#include "busybox.h" #include -#include +#include -#define DIVISOR 1024 extern int free_main(int argc, char **argv) { struct sysinfo info; sysinfo(&info); - info.totalram/=DIVISOR; - info.freeram/=DIVISOR; - info.totalswap/=DIVISOR; - info.freeswap/=DIVISOR; - info.sharedram/=DIVISOR; - info.bufferram/=DIVISOR; - - if (argc > 1 && **(argv + 1) == '-') { - usage("free\n" -#ifndef BB_FEATURE_TRIVIAL_HELP - "\nDisplays the amount of free and used system memory\n" -#endif - ); + + /* Kernels prior to 2.4.x will return info.mem_unit==0, so cope... */ + if (info.mem_unit==0) { + info.mem_unit=1; } + info.mem_unit*=1024; + + /* TODO: Make all this stuff not overflow when mem >= 4 Gib */ + info.totalram/=info.mem_unit; + info.freeram/=info.mem_unit; + info.totalswap/=info.mem_unit; + info.freeswap/=info.mem_unit; + info.sharedram/=info.mem_unit; + info.bufferram/=info.mem_unit; + if (argc > 1 && **(argv + 1) == '-') + usage(free_usage); printf("%6s%13s%13s%13s%13s%13s\n", "", "total", "used", "free", "shared", "buffers"); @@ -59,5 +60,7 @@ extern int free_main(int argc, char **argv) printf("%6s%13ld%13ld%13ld\n", "Total:", info.totalram+info.totalswap, (info.totalram-info.freeram)+(info.totalswap-info.freeswap), info.freeram+info.freeswap); - return(TRUE); + return EXIT_SUCCESS; } + +