svn commit: trunk/busybox: miscutils shell
vda at busybox.net
vda at busybox.net
Mon Jun 9 16:02:41 UTC 2008
Author: vda
Date: 2008-06-09 09:02:39 -0700 (Mon, 09 Jun 2008)
New Revision: 22277
Log:
less: fix a case when regexp matches ""
hush: remove wrong comment, expand another one
Modified:
trunk/busybox/miscutils/less.c
trunk/busybox/shell/hush.c
Changeset:
Modified: trunk/busybox/miscutils/less.c
===================================================================
--- trunk/busybox/miscutils/less.c 2008-06-09 09:38:45 UTC (rev 22276)
+++ trunk/busybox/miscutils/less.c 2008-06-09 16:02:39 UTC (rev 22277)
@@ -172,16 +172,6 @@
tcsetattr(kbd_fd, TCSANOW, &term_orig);
}
-/* Exit the program gracefully */
-static void less_exit(int code)
-{
- bb_putchar('\n');
- set_tty_cooked();
- if (code < 0)
- kill_myself_with_sig(- code); /* does not return */
- exit(code);
-}
-
/* Move the cursor to a position (x,y), where (0,0) is the
top-left corner of the console */
static void move_cursor(int line, int row)
@@ -205,6 +195,16 @@
printf(HIGHLIGHT"%.*s"NORMAL, width - 1, str);
}
+/* Exit the program gracefully */
+static void less_exit(int code)
+{
+ set_tty_cooked();
+ clear_line();
+ if (code < 0)
+ kill_myself_with_sig(- code); /* does not return */
+ exit(code);
+}
+
#if ENABLE_FEATURE_LESS_REGEXP
static void fill_match_lines(unsigned pos);
#else
@@ -538,6 +538,9 @@
start:
/* Most of the time doesn't find the regex, optimize for that */
match_status = regexec(&pattern, line, 1, &match_structs, eflags);
+ /* if even "" matches, treat it as "not a match" */
+ if (match_structs.rm_so >= match_structs.rm_eo)
+ match_status = 1;
}
if (!growline) {
Modified: trunk/busybox/shell/hush.c
===================================================================
--- trunk/busybox/shell/hush.c 2008-06-09 09:38:45 UTC (rev 22276)
+++ trunk/busybox/shell/hush.c 2008-06-09 16:02:39 UTC (rev 22277)
@@ -3218,7 +3218,6 @@
}
#if ENABLE_HUSH_TICK
-/* NB: currently disabled on NOMMU */
static FILE *generate_stream_from_list(struct pipe *head)
{
FILE *pf;
@@ -3229,6 +3228,10 @@
/* By using vfork here, we suspend parent till child exits or execs.
* If child will not do it before it fills the pipe, it can block forever
* in write(STDOUT_FILENO), and parent (shell) will be also stuck.
+ * Try this script:
+ * yes "0123456789012345678901234567890" | dd bs=32 count=64k >TESTFILE
+ * huge=`cat TESTFILE` # will block here forever
+ * echo OK
*/
pid = BB_MMU ? fork() : vfork();
if (pid < 0)
More information about the busybox-cvs
mailing list