[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    hush jobs support for nommu (was: MSH function support)
From:       Mike Frysinger <vapier () gentoo ! org>
Date:       2009-03-23 9:02:29
Message-ID: 200903230502.32376.vapier () gentoo ! org
[Download RAW message or body]

On Sunday 22 March 2009 19:12:58 Mike Frysinger wrote:
> On Saturday 21 March 2009 15:54:51 Denys Vlasenko wrote:
> > On Thursday 19 March 2009 13:07, Mike Frysinger wrote:
> > > yes, but there are sub-features which are no go's atm.  job support
> > > (obviously) and sub shells (not so obvious depending on the code).
> >
> > IIRC job control in hush is the same as on MMU. There is no reason
> > it should be more limited.
>
> jobs is non-existent ... enable job support and force nommu support and
> you'll see it not work.
> hush: can't exec 'jobs': No such file or directory

this is because jobs support implies being able to ctrl+z a foreground script.

something like this:
$ while :;do :;done

since ctrl+z requires fork() in order to background this snippet, we get a 
link failure.

how about this ?  we retain most common job functionality (putting a random 
process into the bg/fg like `ping`).

--- shell/hush.c	(revision 25789)
+++ shell/hush.c	(working copy)
@@ -94,11 +94,6 @@
 #warning For more info see shell/hush.c, generate_stream_from_list().
 #endif
 
-#if !BB_MMU && ENABLE_HUSH_JOB
-#undef ENABLE_HUSH_JOB
-#define ENABLE_HUSH_JOB 0
-#endif
-
 #if !ENABLE_HUSH_INTERACTIVE
 #undef ENABLE_FEATURE_EDITING
 #define ENABLE_FEATURE_EDITING 0
@@ -807,6 +802,7 @@ static void handler_ctrl_c(int sig UNUSE
 
 static void handler_ctrl_z(int sig UNUSED_PARAM)
 {
+#if BB_MMU
 	pid_t pid;
 
 	debug_printf_jobs("got tty sig %d in pid %d\n", sig, getpid());
@@ -835,6 +831,10 @@ static void handler_ctrl_z(int sig UNUSE
 // as usual we can have all kinds of nasty problems with leaked malloc data 
here
 	debug_printf_jobs("siglongjmp in parent\n");
 	siglongjmp(G.toplevel_jb, 1);
+#else
+	fputs("Sorry, CTRL+Z not supported on nommu\n", stderr);
+	debug_printf_jobs("got tty sig %d in pid %d\n", sig, getpid());
+#endif
 }
 
 /* Restores tty foreground process group, and exits.
-mike
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic