Subversion Repositories HelenOS

Rev

Rev 3166 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3166 Rev 3174
Line 39... Line 39...
39
#include <task.h>
39
#include <task.h>
40
 
40
 
41
#define LINE_BUFFER_SIZE 128
41
#define LINE_BUFFER_SIZE 128
42
static char line_buffer[LINE_BUFFER_SIZE];
42
static char line_buffer[LINE_BUFFER_SIZE];
43
 
43
 
-
 
44
#define MAX_ARGS 16
-
 
45
static char *argv_buf[MAX_ARGS + 1];
-
 
46
 
44
void read_line(char *buffer, int n)
47
static void read_line(char *buffer, int n)
45
{
48
{
46
    char c;
49
    char c;
47
    int chars;
50
    int chars;
48
 
51
 
49
    printf("> ");
52
    printf("> ");
Line 67... Line 70...
67
 
70
 
68
    putchar('\n');
71
    putchar('\n');
69
    buffer[chars] = '\0';
72
    buffer[chars] = '\0';
70
}
73
}
71
 
74
 
-
 
75
static void program_run(void)
-
 
76
{
-
 
77
    char *p;
-
 
78
    int n;
-
 
79
 
-
 
80
    p = line_buffer;
-
 
81
    n = 0;
-
 
82
 
-
 
83
    while (n < MAX_ARGS) {
-
 
84
        argv_buf[n++] = p;
-
 
85
        p = strchr(p, ' ');
-
 
86
        if (p == NULL) break;
-
 
87
 
-
 
88
        *p++ = '\0';
-
 
89
    }
-
 
90
    argv_buf[n] = NULL;
-
 
91
 
-
 
92
    printf("spawn task '%s' with %d args\n", argv_buf[0], n);
-
 
93
    printf("args:");
-
 
94
    int i;
-
 
95
    for (i = 0; i < n; ++i) {
-
 
96
        printf(" '%s'", argv_buf[i]);
-
 
97
    }
-
 
98
    printf("\n");
-
 
99
 
-
 
100
    task_spawn_ex(argv_buf[0], argv_buf);
-
 
101
}
-
 
102
 
72
 
103
 
73
int main(int argc, char *argv[])
104
int main(int argc, char *argv[])
74
{
105
{
75
    printf("This is CLI\n");
106
    printf("This is CLI\n");
76
 
107
 
77
    while (1) {
108
    while (1) {
78
        read_line(line_buffer, LINE_BUFFER_SIZE);
109
        read_line(line_buffer, LINE_BUFFER_SIZE);
79
        printf("'%s'\n", line_buffer);
110
        printf("'%s'\n", line_buffer);
80
        if (strcmp(line_buffer, "exit") == 0)
111
        if (strcmp(line_buffer, "exit") == 0)
81
            break;
112
            break;
82
        printf("spawn task\n");
113
       
83
        if (line_buffer[0] != '\0')
114
        if (line_buffer[0] != '\0')
84
            task_spawn_ex(line_buffer, NULL);
115
        program_run();
85
    }
116
    }
86
 
117
 
87
    printf("Bye\n");
118
    printf("Bye\n");
88
   
119
   
89
    return 0;
120
    return 0;