find_stray_communal_vars: script which finds communal variables
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 3 Jun 2007 22:30:22 +0000 (22:30 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 3 Jun 2007 22:30:22 +0000 (22:30 -0000)
resize: remove globals var
mdev: remove globals var

console-tools/resize.c
networking/telnet.c
scripts/find_stray_communal_vars [new file with mode: 0755]
util-linux/mdev.c

index 52fdb26f445e53f526f2cf1bb87483ac20429eff..32551b2f2513ed3cd1636a501c6b64dce7d7a29d 100644 (file)
 
 #define ESC "\033"
 
-struct termios old;
+#define old_termios (*(struct termios*)&bb_common_bufsiz1)
 
 static void
 onintr(int sig ATTRIBUTE_UNUSED)
 {
-       tcsetattr(STDERR_FILENO, TCSANOW, &old);
+       tcsetattr(STDERR_FILENO, TCSANOW, &old_termios);
        exit(1);
 }
 
-
 int resize_main(int argc, char **argv);
 int resize_main(int argc, char **argv)
 {
@@ -34,8 +33,8 @@ int resize_main(int argc, char **argv)
         * and operate on it - should we do the same?
         */
 
-       tcgetattr(STDERR_FILENO, &old); /* fiddle echo */
-       new = old;
+       tcgetattr(STDERR_FILENO, &old_termios); /* fiddle echo */
+       new = old_termios;
        new.c_cflag |= (CLOCAL | CREAD);
        new.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
        signal(SIGINT, onintr);
@@ -60,7 +59,7 @@ int resize_main(int argc, char **argv)
         * (gotten via TIOCGWINSZ) and recomputing *pixel values */
        ret = ioctl(STDERR_FILENO, TIOCSWINSZ, &w);
 
-       tcsetattr(STDERR_FILENO, TCSANOW, &old);
+       tcsetattr(STDERR_FILENO, TCSANOW, &old_termios);
 
        if (ENABLE_FEATURE_RESIZE_PRINT)
                printf("COLUMNS=%d;LINES=%d;export COLUMNS LINES;\n",
index a59450505efe56972f87d6a0a93fac3fa2fe32e4..caca89d2d00ce271d7ff33835b4b0b2240d8fdad 100644 (file)
@@ -79,7 +79,7 @@ struct globals {
        struct termios termios_raw;
 };
 
-#define G (*(struct globals*)bb_common_bufsiz1)
+#define G (*(struct globals*)&bb_common_bufsiz1)
 
 
 /* Function prototypes */
diff --git a/scripts/find_stray_communal_vars b/scripts/find_stray_communal_vars
new file mode 100755 (executable)
index 0000000..9f999d7
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Communal variables are elusize, then don't show in size output!
+# This script will show all communals in *.o, sorted by size
+
+find -name '*.o' \
+| while read name; do
+    b=`basename "$name"`
+    nm "$name" | sed "s/^/$b: /"
+done | grep -i ' c ' | sort -k2
index a4716e2da936e085a8a6eed62baab12472f78c7d..cc729e72a943b158b47ad88b27ca4969fd45d8c9 100644 (file)
 #include "libbb.h"
 #include "xregex.h"
 
-#define DEV_PATH       "/dev"
-
-struct mdev_globals
-{
+struct globals {
        int root_major, root_minor;
-} mdev_globals;
-
-#define bbg mdev_globals
+};
+#define G (*(struct globals*)&bb_common_bufsiz1)
+#define root_major (G.root_major)
+#define root_minor (G.root_minor)
 
 /* mknod in /dev based on a path like "/sys/block/hda/hda1" */
 static void make_device(char *path, int delete)
@@ -174,7 +172,7 @@ static void make_device(char *path, int delete)
                if (mknod(device_name, mode | type, makedev(major, minor)) && errno != EEXIST)
                        bb_perror_msg_and_die("mknod %s", device_name);
 
-               if (major == bbg.root_major && minor == bbg.root_minor)
+               if (major == root_major && minor == root_minor)
                        symlink(device_name, "root");
 
                if (ENABLE_FEATURE_MDEV_CONF) chown(device_name, uid, gid);
@@ -237,7 +235,7 @@ int mdev_main(int argc, char **argv)
        char *env_path;
        RESERVE_CONFIG_BUFFER(temp,PATH_MAX);
 
-       xchdir(DEV_PATH);
+       xchdir("/dev");
 
        /* Scan */
 
@@ -245,8 +243,8 @@ int mdev_main(int argc, char **argv)
                struct stat st;
 
                xstat("/", &st);
-               bbg.root_major = major(st.st_dev);
-               bbg.root_minor = minor(st.st_dev);
+               root_major = major(st.st_dev);
+               root_minor = minor(st.st_dev);
                strcpy(temp,"/sys/block");
                find_dev(temp);
                strcpy(temp,"/sys/class");