diff -Naur MPlayer-0.90.orig/libmenu/menu_console.c MPlayer-0.90/libmenu/menu_console.c
--- MPlayer-0.90.orig/libmenu/menu_console.c	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/libmenu/menu_console.c	2003-04-29 22:31:01.000000000 +0200
@@ -273,44 +273,54 @@
 
 #define close_pipe(pipe) close(pipe[0]); close(pipe[1])
 
-static int run_shell_cmd(menu_t* menu, char* cmd) {
+int run_shell_cmd(menu_t* menu, char* cmd) {
   int in[2],out[2],err[2];
+  pid_t child;
 
   printf("Console run %s ...\n",cmd);
-  if(mpriv->child) {
+  if(menu && mpriv->child) {
     printf("A child is alredy running\n");
     return 0;
   }
 
-  pipe(in);
-  pipe(out);
-  pipe(err);
+  if (menu) {
+    pipe(in);
+    pipe(out);
+    pipe(err);
+  }
 
-  mpriv->child = fork();
-  if(mpriv->child < 0) {
+  child = fork();
+  if(child < 0) {
     printf("Fork failed !!!\n");
-    close_pipe(in);
-    close_pipe(out);
-    close_pipe(err);
+    if (menu) {
+      close_pipe(in);
+      close_pipe(out);
+      close_pipe(err);
+    }
     return 0;
   }
-  if(!mpriv->child) { // Chlid process
+  if(!child) { // Chlid process
     int err_fd = dup(2);
     FILE* errf = fdopen(err_fd,"w");
     // Bind the std fd to our pipes
-    dup2(in[0],0);
-    dup2(out[1],1);
-    dup2(err[1],2);
+    if (menu) {
+      dup2(in[0],0);
+      dup2(out[1],1);
+      dup2(err[1],2);
+    }
     execl("/bin/sh","sh","-c",cmd,NULL);
     fprintf(errf,"exec failed : %s\n",strerror(errno));
     exit(1);
   }
   // MPlayer
-  mpriv->child_fd[0] = in[1];
-  mpriv->child_fd[1] = out[0];
-  mpriv->child_fd[2] = err[0];
-  mpriv->prompt = mpriv->child_prompt;
-  //add_line(mpriv,"Child process started");
+  if (menu) {
+    mpriv->child = child;
+    mpriv->child_fd[0] = in[1];
+    mpriv->child_fd[1] = out[0];
+    mpriv->child_fd[2] = err[0];
+    mpriv->prompt = mpriv->child_prompt;
+    //add_line(mpriv,"Child process started");
+  }
   return 1;
 }
 
diff -Naur MPlayer-0.90.orig/mplayer.c MPlayer-0.90/mplayer.c
--- MPlayer-0.90.orig/mplayer.c	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/mplayer.c	2003-04-29 22:29:59.000000000 +0200
@@ -2774,6 +2774,12 @@
 	mp_msg(MSGT_GLOBAL,MSGL_INFO,"ANS_PERCENT_POSITION=%ld\n", demuxer_get_percent_pos(demuxer));
     } break;
 
+#ifdef HAVE_MENU
+    case MP_CMD_CRUN : {
+        run_shell_cmd(NULL,cmd->args[0].v.s);
+    } break;
+#endif
+
 #ifdef USE_DVDNAV
     case MP_CMD_DVDNAV_EVENT: {
       dvdnav_priv_t * dvdnav_priv = (dvdnav_priv_t*)(stream->priv);
