Subversion Repositories Kolibri OS

Rev

Rev 3247 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3245 Albom 1
 
2
3
 
4
{
5
6
 
7
int argc = 1;
8
int quote = 0;
9
int argv_len;
10
11
 
12
if ( param_len == 0 )
13
   return 0;
14
15
 
16
17
 
18
for (i = 0; i < param_len; i++)
19
    {
20
    switch (param[i])
21
           {
22
3268 Albom 23
 
24
                if (param[i+1]!='\0')
25
                   {
26
                    switch(param[i+1])
27
                        {
28
29
 
30
                             argv[argc-1][argv_len] = '\n';
31
                             argv_len++;
32
                             i++;
33
                             break;
34
35
 
36
                             argv[argc-1][argv_len] = '\t';
37
                             argv_len++;
38
                             i++;
39
40
 
41
                        case '\'':
42
                        case '"':
43
                        case '?':
44
                             argv[argc-1][argv_len] = param[i+1];
45
                             argv_len++;
46
                             i++;
47
                             break;
48
49
 
50
                             i++;
51
                        };
52
                   }
53
                break;
54
55
 
3245 Albom 56
                if (quote == 0)
57
                    quote = 1;
58
                else
59
                    {
60
                    quote = 0;
61
                    argv[argc-1][argv_len] = '\0';
62
                    argc++;
63
                    argv[argc-1] = (char*) malloc(4096);
64
                    argv[argc-1][argv_len] = '\0';
65
                    argv_len = 0;
66
                    }
67
                break;
68
69
 
70
           case 32:
71
                if (quote == 0)
72
                   {
73
                   if ( ( param[i+1] != 32) || ( param[i+1] != 9) )
74
                      {
75
                      if (argv_len != 0)
76
                         {
77
                         argv[argc-1][argv_len] = '\0';
78
                         argc++;
79
                         argv[argc-1] = (char*) malloc(4096);
80
                         argv[argc-1][argv_len] = '\0';
81
                         argv_len = 0;
82
                         }
83
                      }
84
                   }
85
                   else
86
                    {
87
                    argv[argc-1][argv_len] = param[i];
88
                    argv_len++;
89
                    }
90
91
 
92
93
 
94
                   argv[argc-1][argv_len] = param[i];
95
                   argv_len++;
96
                   break;
97
3268 Albom 98
 
3245 Albom 99
    }
100
101
 
102
103
 
104
   {
105
   free(argv[argc-1]);
106
   argc--;
107
   }
108
109
 
110
}
111
112
 
113
114
 
115
{
116
117
 
118
119
 
120
    free(argv[i]);
121
122
 
123
124
 
125