source: MondoRescue/branches/stable/mindi-busybox/procps/free.c @ 821

Last change on this file since 821 was 821, checked in by Bruno Cornec, 14 years ago

Addition of busybox 1.2.1 as a mindi-busybox new package
This should avoid delivering binary files in mindi not built there (Fedora and Debian are quite serious about that)

File size: 1.8 KB
Line 
1/* vi: set sw=4 ts=4: */
2/*
3 * Mini free implementation for busybox
4 *
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
6 *
7 * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
8 */
9
10/* getopt not needed */
11
12#include "busybox.h"
13#include <stdio.h>
14#include <errno.h>
15#include <stdlib.h>
16
17int free_main(int argc, char **argv)
18{
19    struct sysinfo info;
20    sysinfo(&info);
21
22    /* Kernels prior to 2.4.x will return info.mem_unit==0, so cope... */
23    if (info.mem_unit==0) {
24        info.mem_unit=1;
25    }
26    if ( info.mem_unit == 1 ) {
27        info.mem_unit=1024;
28
29        /* TODO:  Make all this stuff not overflow when mem >= 4 Gib */
30        info.totalram/=info.mem_unit;
31        info.freeram/=info.mem_unit;
32#ifndef __uClinux__
33        info.totalswap/=info.mem_unit;
34        info.freeswap/=info.mem_unit;
35#endif
36        info.sharedram/=info.mem_unit;
37        info.bufferram/=info.mem_unit;
38    } else {
39        info.mem_unit/=1024;
40        /* TODO:  Make all this stuff not overflow when mem >= 4 Gib */
41        info.totalram*=info.mem_unit;
42        info.freeram*=info.mem_unit;
43#ifndef __uClinux__
44        info.totalswap*=info.mem_unit;
45        info.freeswap*=info.mem_unit;
46#endif
47        info.sharedram*=info.mem_unit;
48        info.bufferram*=info.mem_unit;
49    }
50
51    if (argc > 1 && **(argv + 1) == '-')
52        bb_show_usage();
53
54    printf("%6s%13s%13s%13s%13s%13s\n", "", "total", "used", "free",
55            "shared", "buffers");
56
57    printf("%6s%13ld%13ld%13ld%13ld%13ld\n", "Mem:", info.totalram,
58            info.totalram-info.freeram, info.freeram,
59            info.sharedram, info.bufferram);
60
61#ifndef __uClinux__
62    printf("%6s%13ld%13ld%13ld\n", "Swap:", info.totalswap,
63            info.totalswap-info.freeswap, info.freeswap);
64
65    printf("%6s%13ld%13ld%13ld\n", "Total:", info.totalram+info.totalswap,
66            (info.totalram-info.freeram)+(info.totalswap-info.freeswap),
67            info.freeram+info.freeswap);
68#endif
69    return EXIT_SUCCESS;
70}
71
Note: See TracBrowser for help on using the repository browser.