/[cvs]/joko/Uni/BSArch/03/win32/min_shell.c
ViewVC logotype

Diff of /joko/Uni/BSArch/03/win32/min_shell.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by joko, Thu Jun 15 23:16:01 2006 UTC revision 1.10 by joko, Fri Jun 16 00:06:11 2006 UTC
# Line 3  Line 3 
3  #include <stdlib.h>  #include <stdlib.h>
4  #include <stdio.h>  #include <stdio.h>
5  #include <errno.h>  #include <errno.h>
6    #include <string.h>
7    
8  #include "min_shell.h"  #include "min_shell.h"
9    
# Line 39  void run_commands(FILE * fp) { Line 40  void run_commands(FILE * fp) {
40      chomp(command);      chomp(command);
41            
42      // ... and action      // ... and action
43      execute_command(command);      dispatch_command(command);
44    }    }
45        
46  }  }
47    
48    
49  void execute_command(char * command) {  void dispatch_command(char * command) {
50    
51    BOOL background = FALSE;    BOOL background = FALSE;
52    int command_length;    int command_length;
53      char first_char;
54      char * shell_command;
55    
56    printf("process_command: %s\n", command);    // is it a shell command?
57        first_char = command[0];
58    // background or foreground?    if (strcmp(&first_char, ":") == 0) {
59    command_length = strlen(command);      
60    if (command[command_length-1] == '&') {      // "calculate" shell command ...
61      command[command_length-1] = '\0';      shell_command = command + 1;
62      background = TRUE;      printf("shell command: %s\n", shell_command);
63        
64        // ... and dispatch it
65        
66        // wait
67        if (strcmp(shell_command, "wait") == 0) {
68          // TODO
69        
70        // exit
71        } else if (strcmp(shell_command, "exit") == 0) {
72          exit(EXIT_SUCCESS);
73        
74        // unknown command
75        } else {
76          fprintf(stderr, "ERROR: Unknown shell command '%s'\n", shell_command);
77        }
78      
79      // run program: background or foreground?
80      } else {
81        printf("running: %s\n", command);
82        command_length = strlen(command);
83        if (command[command_length-1] == '&') {
84          command[command_length-1] = '\0';
85          background = TRUE;
86        }
87        
88        os_start_process(command, background);
89    }    }
     
   os_start_process(command, background);  
90  }  }
91    

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed