sed: fix 'q' command handling ("Nguyen Thai Ngoc Duy" <pclouds@gmail.com>)
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 6 Aug 2007 03:41:08 +0000 (03:41 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 6 Aug 2007 03:41:08 +0000 (03:41 -0000)
     add testsuite entry for it. Fix applet order checker. Fix cmp yelling.
trylink: fix error file and map file generation
applets: fix applet order

editors/sed.c
include/applets.h
scripts/trylink
testsuite/all_sourcecode.tests
testsuite/testing.sh

index d0c2ca742a653d9f914c2f5de5c6c7d08dd70154..4647079aa48bed62798f61b74b8a72667b21956c 100644 (file)
@@ -836,6 +836,14 @@ static void puts_maybe_newline(char *s, FILE *file, char *last_puts_char, char l
 
 #define sed_puts(s, n) (puts_maybe_newline(s, G.nonstdout, &last_puts_char, n))
 
+static int beg_match(sed_cmd_t *sed_cmd, const char *pattern_space)
+{
+       int retval = sed_cmd->beg_match && !regexec(sed_cmd->beg_match, pattern_space, 0, NULL, 0);
+       if (retval)
+               G.previous_regex_ptr = sed_cmd->beg_match;
+       return retval;
+}
+
 /* Process all the lines in all the files */
 
 static void process_files(void)
@@ -880,8 +888,7 @@ restart:
                        /* Or did we match the start of a numerical range? */
                        || (sed_cmd->beg_line > 0 && (sed_cmd->beg_line == linenum))
                        /* Or does this line match our begin address regex? */
-                       || (sed_cmd->beg_match &&
-                           !regexec(sed_cmd->beg_match, pattern_space, 0, NULL, 0))
+                       || (beg_match(sed_cmd, pattern_space))
                        /* Or did we match last line of input? */
                        || (sed_cmd->beg_line == -1 && next_line == NULL);
 
index 7eefa0843ff32730d5ddbfeb19e95fe7d3384e66..b5b9fc88448ca3247f4dd6f4367c1e8dc3331787 100644 (file)
@@ -217,8 +217,8 @@ USE_LS(APPLET_NOEXEC(ls, ls, _BB_DIR_BIN, _BB_SUID_NEVER, ls))
 USE_LSATTR(APPLET(lsattr, _BB_DIR_BIN, _BB_SUID_NEVER))
 USE_LSMOD(APPLET(lsmod, _BB_DIR_SBIN, _BB_SUID_NEVER))
 USE_UNLZMA(APPLET_ODDNAME(lzmacat, unlzma, _BB_DIR_USR_BIN, _BB_SUID_NEVER, lzmacat))
-USE_MATCHPATHCON(APPLET(matchpathcon, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
 USE_MAKEDEVS(APPLET(makedevs, _BB_DIR_SBIN, _BB_SUID_NEVER))
+USE_MATCHPATHCON(APPLET(matchpathcon, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
 USE_MD5SUM(APPLET_ODDNAME(md5sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_NEVER, md5sum))
 USE_MDEV(APPLET(mdev, _BB_DIR_SBIN, _BB_SUID_NEVER))
 USE_MESG(APPLET(mesg, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
index bfc67bf5de1631261bf29c449e7e1a37d8d96082..b8bf8b1c78abad1741289f2baf7cb47515081056 100755 (executable)
@@ -25,8 +25,9 @@ try "-Wl,--start-group $l_list -Wl,--end-group" "$@" \
 # Hack: we are not supposed to know executable name,
 # but this hack cuts down link time
 mv busybox_unstripped busybox_unstripped.tmp
+mv busybox.map        busybox.map.tmp
 
-# Now try to remove each lib and build without.
+# Now try to remove each lib and build without it.
 # Stop when no lib can be removed.
 ever_discarded=false
 while test "$BBOX_LIB_LIST"; do
@@ -47,17 +48,19 @@ while test "$BBOX_LIB_LIST"; do
     done
     # All libs were needed, can't remove any
     $all_needed && break
-    # If there is no space, the list has just one lib.
+    # If there is no space char, the list has just one lib.
     # I'm not sure that in this case lib really is 100% needed.
     # Let's try linking without it anyway... thus commented out.
-    #echo "$BBOX_LIB_LIST" | grep -q ' ' || break
+    #{ echo "$BBOX_LIB_LIST" | grep -q ' '; } || break
 done
 
 mv busybox_unstripped.tmp busybox_unstripped
+mv busybox.map.tmp        busybox.map
 $ever_discarded && {
-    # Ok, make the binary
+    # Make the binary with final, minimal list of libs
     echo "Final link with: $BBOX_LIB_LIST"
     l_list=`echo "$BBOX_LIB_LIST" | sed -e 's/ / -l/g' -e 's/^/-l/'`
-    try "-Wl,--start-group $l_list -Wl,--end-group" "$@"
+    try "-Wl,--start-group $l_list -Wl,--end-group" "$@" && exit 1
 }
+rm busybox_ld.err
 exit 0  # Ensure "success" exit code
index c115878febe3800eab7b0edbdffbefd737aaaffe..a537dcee9a3d7fd5c87901ffd7ec0fce61b005e4 100755 (executable)
@@ -19,7 +19,7 @@
 # verify the applet order is correct in applets.h, otherwise
 # applets won't be called properly.
 #
-sed -n -e '/^USE_[A-Z]*(APPLET(/{s:.*(::;s:,.*::;s:"::g;p}' \
+sed -n -e '/^USE_[A-Z]*(APPLET/{s:,.*::;s:.*(::;s:"::g;p}' \
        $srcdir/../include/applets.h > applet.order.current
 LC_ALL=C sort applet.order.current > applet.order.correct
 testing "Applet order" "diff -u applet.order.current applet.order.correct" "" "" ""
index 01fdfbeca65fd231e14431e8c2c1289f9872c71f..a886a76eb24a36313f9baf6ea3b6d43c7d6fdcc5 100755 (executable)
@@ -76,7 +76,7 @@ testing()
   echo -ne "$5" | eval "$2" > actual
   RETVAL=$?
 
-  cmp expected actual > /dev/null
+  cmp expected actual >/dev/null 2>/dev/null
   if [ $? -ne 0 ]
   then
     FAILCOUNT=$[$FAILCOUNT+1]