[0e9e889] | 1 | Submitted By: Jim Gifford (jim at cross-lfs dot org) |
---|
| 2 | Date: 01-25-2009 |
---|
| 3 | Initial Package Version: 1.13.2 |
---|
| 4 | Origin: Upstream |
---|
| 5 | Upstream Status: Applied |
---|
| 6 | Description: This is a branch update for busybox-1.13.2, and should be |
---|
| 7 | rechecked periodically. |
---|
| 8 | |
---|
| 9 | diff -Naur busybox-1.13.2.orig/archival/tar.c busybox-1.13.2/archival/tar.c |
---|
| 10 | --- busybox-1.13.2.orig/archival/tar.c 2008-11-09 09:28:02.000000000 -0800 |
---|
| 11 | +++ busybox-1.13.2/archival/tar.c 2009-01-25 12:52:44.955898588 -0800 |
---|
| 12 | @@ -591,8 +591,6 @@ |
---|
| 13 | struct TarBallInfo tbInfo; |
---|
| 14 | |
---|
| 15 | tbInfo.hlInfoHead = NULL; |
---|
| 16 | - |
---|
| 17 | - fchmod(tar_fd, 0644); |
---|
| 18 | tbInfo.tarFd = tar_fd; |
---|
| 19 | tbInfo.verboseFlag = verboseFlag; |
---|
| 20 | |
---|
| 21 | diff -Naur busybox-1.13.2.orig/modutils/depmod.c busybox-1.13.2/modutils/depmod.c |
---|
| 22 | --- busybox-1.13.2.orig/modutils/depmod.c 2008-11-09 09:28:03.000000000 -0800 |
---|
| 23 | +++ busybox-1.13.2/modutils/depmod.c 2009-01-25 12:52:44.229924290 -0800 |
---|
| 24 | @@ -33,7 +33,7 @@ |
---|
| 25 | enum { |
---|
| 26 | ARG_a = (1<<0), /* All modules, ignore mods in argv */ |
---|
| 27 | ARG_A = (1<<1), /* Only emit .ko that are newer than modules.dep file */ |
---|
| 28 | - ARG_b = (1<<2), /* not /lib/modules/$(uname -r)/ but this base-dir */ |
---|
| 29 | + ARG_b = (1<<2), /* base directory when modules are in staging area */ |
---|
| 30 | ARG_e = (1<<3), /* with -F, print unresolved symbols */ |
---|
| 31 | ARG_F = (1<<4), /* System.map that contains the symbols */ |
---|
| 32 | ARG_n = (1<<5) /* dry-run, print to stdout only */ |
---|
| 33 | @@ -57,7 +57,7 @@ |
---|
| 34 | *first = info; |
---|
| 35 | |
---|
| 36 | info->dnext = info->dprev = info; |
---|
| 37 | - info->name = xstrdup(fname); |
---|
| 38 | + info->name = xasprintf("/%s", fname); |
---|
| 39 | info->modname = filename2modname(fname, NULL); |
---|
| 40 | for (ptr = image; ptr < image + len - 10; ptr++) { |
---|
| 41 | if (strncmp(ptr, "depends=", 8) == 0) { |
---|
| 42 | @@ -123,44 +123,61 @@ |
---|
| 43 | } |
---|
| 44 | } |
---|
| 45 | |
---|
| 46 | +static void xfreopen_write(const char *file, FILE *f) |
---|
| 47 | +{ |
---|
| 48 | + if (freopen(file, "w", f) == NULL) |
---|
| 49 | + bb_perror_msg_and_die("can't open '%s'", file); |
---|
| 50 | +} |
---|
| 51 | + |
---|
| 52 | int depmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
---|
| 53 | int depmod_main(int argc UNUSED_PARAM, char **argv) |
---|
| 54 | { |
---|
| 55 | module_info *modules = NULL, *m, *dep; |
---|
| 56 | - char *moddir_base = (char *)CONFIG_DEFAULT_MODULES_DIR; |
---|
| 57 | + const char *moddir_base = "/"; |
---|
| 58 | + char *moddir, *version; |
---|
| 59 | + struct utsname uts; |
---|
| 60 | int tmp; |
---|
| 61 | |
---|
| 62 | getopt32(argv, "aAb:eF:n", &moddir_base, NULL); |
---|
| 63 | argv += optind; |
---|
| 64 | |
---|
| 65 | /* goto modules location */ |
---|
| 66 | + xchdir(moddir_base); |
---|
| 67 | |
---|
| 68 | /* If a version is provided, then that kernel version's module directory |
---|
| 69 | * is used, rather than the current kernel version (as returned by |
---|
| 70 | * "uname -r"). */ |
---|
| 71 | - xchdir(moddir_base); |
---|
| 72 | - if (*argv && (sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3)) { |
---|
| 73 | - xchdir(*argv++); |
---|
| 74 | + if (*argv && sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3) { |
---|
| 75 | + version = *argv++; |
---|
| 76 | } else { |
---|
| 77 | - struct utsname uts; |
---|
| 78 | uname(&uts); |
---|
| 79 | - xchdir(uts.release); |
---|
| 80 | + version = uts.release; |
---|
| 81 | } |
---|
| 82 | - /* If no modules are given on the command-line, -a is on per default. */ |
---|
| 83 | - option_mask32 |= *argv == NULL; |
---|
| 84 | + moddir = concat_path_file(&CONFIG_DEFAULT_MODULES_DIR[1], version); |
---|
| 85 | |
---|
| 86 | /* Scan modules */ |
---|
| 87 | - moddir_base = xrealloc_getcwd_or_warn(NULL); |
---|
| 88 | - do { |
---|
| 89 | - recursive_action((option_mask32 & ARG_a) ? moddir_base : *argv, |
---|
| 90 | - ACTION_RECURSE, parse_module, NULL, &modules, 0); |
---|
| 91 | - } while (!(option_mask32 & ARG_a) && *(++argv)); |
---|
| 92 | + if (*argv) { |
---|
| 93 | + char *modfile; |
---|
| 94 | + struct stat sb; |
---|
| 95 | + do { |
---|
| 96 | + modfile = concat_path_file(moddir, *argv); |
---|
| 97 | + xstat(modfile, &sb); |
---|
| 98 | + parse_module(modfile, &sb, &modules, 0); |
---|
| 99 | + free(modfile); |
---|
| 100 | + } while (*(++argv)); |
---|
| 101 | + } else { |
---|
| 102 | + recursive_action(moddir, ACTION_RECURSE, |
---|
| 103 | + parse_module, NULL, &modules, 0); |
---|
| 104 | + } |
---|
| 105 | + |
---|
| 106 | + /* Prepare for writing out the dep files */ |
---|
| 107 | + xchdir(moddir); |
---|
| 108 | if (ENABLE_FEATURE_CLEAN_UP) |
---|
| 109 | - free(moddir_base); |
---|
| 110 | + free(moddir); |
---|
| 111 | |
---|
| 112 | /* Generate dependency and alias files */ |
---|
| 113 | if (!(option_mask32 & ARG_n)) |
---|
| 114 | - freopen(CONFIG_DEFAULT_DEPMOD_FILE, "w", stdout); |
---|
| 115 | + xfreopen_write(CONFIG_DEFAULT_DEPMOD_FILE, stdout); |
---|
| 116 | for (m = modules; m != NULL; m = m->next) { |
---|
| 117 | printf("%s:", m->name); |
---|
| 118 | |
---|
| 119 | @@ -174,12 +191,12 @@ |
---|
| 120 | dep->dprev->dnext = dep->dnext; |
---|
| 121 | dep->dnext = dep->dprev = dep; |
---|
| 122 | } |
---|
| 123 | - puts(""); |
---|
| 124 | + bb_putchar('\n'); |
---|
| 125 | } |
---|
| 126 | |
---|
| 127 | #if ENABLE_FEATURE_MODUTILS_ALIAS |
---|
| 128 | if (!(option_mask32 & ARG_n)) |
---|
| 129 | - freopen("modules.alias", "w", stdout); |
---|
| 130 | + xfreopen_write("modules.alias", stdout); |
---|
| 131 | for (m = modules; m != NULL; m = m->next) { |
---|
| 132 | while (m->aliases) { |
---|
| 133 | printf("alias %s %s\n", |
---|
| 134 | @@ -190,7 +207,7 @@ |
---|
| 135 | #endif |
---|
| 136 | #if ENABLE_FEATURE_MODUTILS_SYMBOLS |
---|
| 137 | if (!(option_mask32 & ARG_n)) |
---|
| 138 | - freopen("modules.symbols", "w", stdout); |
---|
| 139 | + xfreopen_write("modules.symbols", stdout); |
---|
| 140 | for (m = modules; m != NULL; m = m->next) { |
---|
| 141 | while (m->symbols) { |
---|
| 142 | printf("alias symbol:%s %s\n", |
---|
| 143 | diff -Naur busybox-1.13.2.orig/testsuite/mdev.tests busybox-1.13.2/testsuite/mdev.tests |
---|
| 144 | --- busybox-1.13.2.orig/testsuite/mdev.tests 2008-11-09 09:28:19.000000000 -0800 |
---|
| 145 | +++ busybox-1.13.2/testsuite/mdev.tests 2009-01-25 12:52:44.443204916 -0800 |
---|
| 146 | @@ -111,6 +111,22 @@ |
---|
| 147 | |
---|
| 148 | # continuing to use directory structure from prev test |
---|
| 149 | rm -rf mdev.testdir/dev/* |
---|
| 150 | +echo "sda 0:0 644 =block/ @echo @echo TEST" >mdev.testdir/etc/mdev.conf |
---|
| 151 | +testing "mdev move and command" \ |
---|
| 152 | + "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
---|
| 153 | + ls -lnR mdev.testdir/dev | $FILTER_LS2" \ |
---|
| 154 | +"\ |
---|
| 155 | +@echo TEST |
---|
| 156 | +mdev.testdir/dev: |
---|
| 157 | +drwxr-xr-x 2 0 0 block |
---|
| 158 | + |
---|
| 159 | +mdev.testdir/dev/block: |
---|
| 160 | +brw-r--r-- 1 0 0 sda |
---|
| 161 | +" \ |
---|
| 162 | + "" "" |
---|
| 163 | + |
---|
| 164 | +# continuing to use directory structure from prev test |
---|
| 165 | +rm -rf mdev.testdir/dev/* |
---|
| 166 | echo "@8,0 :1 644" >mdev.testdir/etc/mdev.conf |
---|
| 167 | testing "mdev #maj,min and no explicit uid" \ |
---|
| 168 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
---|
| 169 | diff -Naur busybox-1.13.2.orig/util-linux/mdev.c busybox-1.13.2/util-linux/mdev.c |
---|
| 170 | --- busybox-1.13.2.orig/util-linux/mdev.c 2008-11-09 09:28:22.000000000 -0800 |
---|
| 171 | +++ busybox-1.13.2/util-linux/mdev.c 2009-01-25 12:52:44.443204916 -0800 |
---|
| 172 | @@ -179,8 +179,9 @@ |
---|
| 173 | unsigned i, n; |
---|
| 174 | #endif |
---|
| 175 | char *a = val; |
---|
| 176 | - s = strchr(val, ' '); |
---|
| 177 | - val = (s && s[1]) ? s+1 : NULL; |
---|
| 178 | + s = strchrnul(val, ' '); |
---|
| 179 | + val = (s[0] && s[1]) ? s+1 : NULL; |
---|
| 180 | + s[0] = '\0'; |
---|
| 181 | #if ENABLE_FEATURE_MDEV_RENAME_REGEXP |
---|
| 182 | /* substitute %1..9 with off[1..9], if any */ |
---|
| 183 | n = 0; |
---|