Rev 3268 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3268 | Rev 8827 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | /// =========================================================== |
- | |
2 | - | ||
3 | int parameters_prepare(char *param, char* argv[]) |
1 | int parameters_prepare(char *param, char* argv[]) { |
4 | { |
- | |
5 | - | ||
6 | int i, param_len; |
2 | int i, param_len; |
7 | int argc = 1; |
3 | int argc = 1; |
8 | int quote = 0; |
4 | int quote = 0; |
9 | int argv_len; |
5 | int argv_len; |
Line 14... | Line 10... | ||
14 | 10 | ||
Line 15... | Line 11... | ||
15 | argv[0] = (char*) malloc(4096); |
11 | argv[0] = (char*) malloc(4096); |
Line 16... | Line 12... | ||
16 | 12 | ||
17 | argv_len = 0; |
13 | argv_len = 0; |
18 | for (i = 0; i < param_len; i++) |
- | |
19 | { |
14 | for (i = 0; i < param_len; i++) { |
20 | switch (param[i]) |
- | |
21 | { |
- | |
22 | 15 | switch (param[i]) { |
|
23 | case '\\': |
16 | case '\\': |
24 | if (param[i+1]!='\0') |
- | |
25 | { |
17 | if (param[i+1]!='\0') { |
26 | switch(param[i+1]) |
- | |
Line 27... | Line 18... | ||
27 | { |
18 | switch(param[i+1]) { |
28 | 19 | ||
29 | case 'n': |
20 | case 'n': |
30 | argv[argc-1][argv_len] = '\n'; |
21 | argv[argc-1][argv_len] = '\n'; |
Line 54... | Line 45... | ||
54 | 45 | ||
Line 55... | Line 46... | ||
55 | case '"': |
46 | case '"': |
56 | if (quote == 0) |
47 | if (quote == 0) |
57 | quote = 1; |
48 | quote = 1; |
58 | else |
49 | else { |
59 | { |
- | |
60 | quote = 0; |
50 | quote = 0; |
61 | argv[argc-1][argv_len] = '\0'; |
51 | argv[argc-1][argv_len] = '\0'; |
62 | argc++; |
52 | argc++; |
63 | argv[argc-1] = (char*) malloc(4096); |
53 | argv[argc-1] = (char*) malloc(4096); |
64 | argv[argc-1][argv_len] = '\0'; |
54 | argv[argc-1][argv_len] = '\0'; |
Line 67... | Line 57... | ||
67 | break; |
57 | break; |
68 | 58 | ||
Line 69... | Line 59... | ||
69 | case 9: |
59 | case 9: |
70 | case 32: |
60 | case 32: |
71 | if (quote == 0) |
61 | if (quote == 0) { |
72 | { |
- | |
73 | if ( ( param[i+1] != 32) || ( param[i+1] != 9) ) |
62 | if ( ( param[i+1] != 32) || ( param[i+1] != 9) ) { |
74 | { |
- | |
75 | if (argv_len != 0) |
63 | if (argv_len != 0) { |
76 | { |
- | |
77 | argv[argc-1][argv_len] = '\0'; |
64 | argv[argc-1][argv_len] = '\0'; |
78 | argc++; |
65 | argc++; |
79 | argv[argc-1] = (char*) malloc(4096); |
66 | argv[argc-1] = (char*) malloc(4096); |
80 | argv[argc-1][argv_len] = '\0'; |
67 | argv[argc-1][argv_len] = '\0'; |
81 | argv_len = 0; |
68 | argv_len = 0; |
82 | } |
69 | } |
83 | } |
70 | } |
84 | } |
- | |
85 | else |
71 | } else { |
86 | { |
- | |
87 | argv[argc-1][argv_len] = param[i]; |
72 | argv[argc-1][argv_len] = param[i]; |
88 | argv_len++; |
73 | argv_len++; |
89 | } |
74 | } |
90 | - | ||
91 | break; |
75 | break; |
92 | - | ||
93 | default: |
76 | default: |
94 | argv[argc-1][argv_len] = param[i]; |
77 | argv[argc-1][argv_len] = param[i]; |
95 | argv_len++; |
78 | argv_len++; |
96 | break; |
79 | break; |
Line 97... | Line 80... | ||
97 | 80 | ||
98 | }; |
81 | }; // switch end |
Line 99... | Line 82... | ||
99 | } |
82 | } // for end |
Line 100... | Line 83... | ||
100 | 83 | ||
101 | argv[argc-1][argv_len] = '\0'; |
- | |
102 | 84 | argv[argc-1][argv_len] = '\0'; |
|
103 | if ( strlen(argv[argc-1]) == 0 ) |
85 | |
104 | { |
86 | if ( strlen(argv[argc-1]) == 0 ) { |
Line 105... | Line 87... | ||
105 | free(argv[argc-1]); |
87 | free(argv[argc-1]); |
106 | argc--; |
88 | argc--; |
Line 107... | Line -... | ||
107 | } |
- | |
108 | - | ||
109 | return argc; |
- | |
110 | } |
- | |
Line -... | Line 89... | ||
- | 89 | } |
|
111 | 90 | ||
112 | /// =========================================================== |
- | |
113 | 91 | return argc; |
|
114 | void parameters_free(int argc, char* argv[]) |
- | |
115 | { |
- | |
116 | 92 | } |
|
Line 117... | Line -... | ||
117 | int i; |
- | |
118 | - |