Make cin be static
[oweals/busybox.git] / init.c
diff --git a/init.c b/init.c
index 2c23e60b7500d42e58fe3f4e9bd097b270e5bfee..86906487f1e2030be207d851c81b5683219274bf 100644 (file)
--- a/init.c
+++ b/init.c
@@ -27,7 +27,7 @@
 #define DEBUG_INIT
 */
 
-#include "internal.h"
+#include "busybox.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
@@ -56,7 +56,7 @@ struct vt_stat {
        unsigned short v_signal;        /* signal to send */
        unsigned short v_state;         /* vt bitmask */
 };
-#define VT_GETSTATE     0x5603  /* get global vt state info */
+static const int VT_GETSTATE = 0x5603;  /* get global vt state info */
 
 /* From <linux/serial.h> */
 struct serial_struct {
@@ -79,12 +79,12 @@ struct serial_struct {
 
 
 #ifndef RB_HALT_SYSTEM
-#define RB_HALT_SYSTEM  0xcdef0123
-#define RB_ENABLE_CAD   0x89abcdef
-#define RB_DISABLE_CAD  0
+static const int RB_HALT_SYSTEM = 0xcdef0123;
+static const int RB_ENABLE_CAD = 0x89abcdef;
+static const int RB_DISABLE_CAD = 0;
 #define RB_POWER_OFF    0x4321fedc
-#define RB_AUTOBOOT     0x01234567
-#if defined(__GLIBC__)
+static const int RB_AUTOBOOT = 0x01234567;
+#if defined(__GLIBC__) || defined (__UCLIBC__)
 #include <sys/reboot.h>
   #define init_reboot(magic) reboot(magic)
 #else
@@ -131,8 +131,8 @@ static _syscall2(int, bdflush, int, func, int, data);
 #define INIT_SCRIPT  "/etc/init.d/rcS"   /* Default sysinit script. */
 #endif
 
-#define LOG     0x1
-#define CONSOLE 0x2
+static const int LOG = 0x1;
+static const int CONSOLE = 0x2;
 
 /* Allowed init action types */
 typedef enum {
@@ -288,30 +288,27 @@ void set_term(int fd)
        tcsetattr(fd, TCSANOW, &tty);
 }
 
-/* How much memory does this machine have? */
+/* How much memory does this machine have?
+   Units are kBytes to avoid overflow on 4GB machines */
 static int check_free_memory()
 {
        struct sysinfo info;
+       unsigned int result, u, s=10;
 
-       /* Pre initialize mem_unit in case this kernel is something prior to
-        * the linux 2.4 kernel (which will actually fill in mem_unit... */
-       sysinfo(&info);
        if (sysinfo(&info) != 0) {
-               printf("Error checking free memory: %s\n", strerror(errno));
+               perror_msg("Error checking free memory: ");
                return -1;
        }
-       /* 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;
-       
-       /* Note:  These values can in theory overflow a 32 bit unsigned long (i.e.
-        * mem >=  Gib), but who puts more then 4GiB ram+swap on an embedded
-        * system? */
-       info.totalram/=info.mem_unit; 
-       info.totalswap/=info.mem_unit;
-       return(info.totalram+info.totalswap);
+
+       /* Kernels 2.0.x and 2.2.x return info.mem_unit==0 with values in bytes.
+        * Kernels 2.4.0 return info.mem_unit in bytes. */
+       u = info.mem_unit;
+       if (u==0) u=1;
+       while ( (u&1) == 0 && s > 0 ) { u>>=1; s--; }
+       result = (info.totalram>>s) + (info.totalswap>>s);
+       result = result*u;
+       if (result < 0) result = INT_MAX;
+       return result;
 }
 
 static void console_init()
@@ -403,6 +400,10 @@ static pid_t run(char *command, char *terminal, int get_enter)
        char buf[255];
        static const char press_enter[] =
 
+#ifdef CUSTOMIZED_BANNER
+#include CUSTOMIZED_BANNER
+#endif
+
                "\nPlease press Enter to activate this console. ";
        char *environment[] = {
                "HOME=/",
@@ -660,6 +661,10 @@ static void reboot_signal(int sig)
 
 #if defined BB_FEATURE_INIT_CHROOT
 
+#warning BB_FEATURE_INIT_CHROOT is out of date and should be rewritten to us
+#warning pivot root instead.  Do not even bother till this work is done...
+#warning You have been warned.
+
 #if ! defined BB_FEATURE_USE_PROCFS
 #error Sorry, I depend on the /proc filesystem right now.
 #endif