Rev 3268 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3245 | Albom | 1 | |
8827 | rgimad | 2 | int i, param_len; |
3 | int argc = 1; |
||
4 | int quote = 0; |
||
5 | int argv_len; |
||
6 | |||
3245 | Albom | 7 | |
8827 | rgimad | 8 | if ( param_len == 0 ) |
9 | return 0; |
||
10 | |||
3245 | Albom | 11 | |
8827 | rgimad | 12 | |
3245 | Albom | 13 | |
8827 | rgimad | 14 | for (i = 0; i < param_len; i++) { |
15 | switch (param[i]) { |
||
16 | case '\\': |
||
17 | if (param[i+1]!='\0') { |
||
18 | switch(param[i+1]) { |
||
19 | |||
3245 | Albom | 20 | |
8827 | rgimad | 21 | argv[argc-1][argv_len] = '\n'; |
22 | argv_len++; |
||
23 | i++; |
||
24 | break; |
||
25 | |||
3245 | Albom | 26 | |
8827 | rgimad | 27 | argv[argc-1][argv_len] = '\t'; |
28 | argv_len++; |
||
29 | i++; |
||
30 | |||
3268 | Albom | 31 | |
8827 | rgimad | 32 | case '\'': |
33 | case '"': |
||
34 | case '?': |
||
35 | argv[argc-1][argv_len] = param[i+1]; |
||
36 | argv_len++; |
||
37 | i++; |
||
38 | break; |
||
39 | |||
3268 | Albom | 40 | |
8827 | rgimad | 41 | i++; |
42 | }; |
||
43 | } |
||
44 | break; |
||
45 | |||
3268 | Albom | 46 | |
8827 | rgimad | 47 | if (quote == 0) |
48 | quote = 1; |
||
3245 | Albom | 49 | else { |
8827 | rgimad | 50 | quote = 0; |
3245 | Albom | 51 | argv[argc-1][argv_len] = '\0'; |
52 | argc++; |
||
53 | argv[argc-1] = (char*) malloc(4096); |
||
54 | argv[argc-1][argv_len] = '\0'; |
||
55 | argv_len = 0; |
||
56 | } |
||
57 | break; |
||
8827 | rgimad | 58 | |
3245 | Albom | 59 | |
8827 | rgimad | 60 | case 32: |
61 | if (quote == 0) { |
||
62 | if ( ( param[i+1] != 32) || ( param[i+1] != 9) ) { |
||
63 | if (argv_len != 0) { |
||
64 | argv[argc-1][argv_len] = '\0'; |
||
65 | argc++; |
||
66 | argv[argc-1] = (char*) malloc(4096); |
||
67 | argv[argc-1][argv_len] = '\0'; |
||
68 | argv_len = 0; |
||
69 | } |
||
3245 | Albom | 70 | } |
8827 | rgimad | 71 | } else { |
72 | argv[argc-1][argv_len] = param[i]; |
||
3245 | Albom | 73 | argv_len++; |
74 | } |
||
8827 | rgimad | 75 | break; |
76 | default: |
||
77 | argv[argc-1][argv_len] = param[i]; |
||
78 | argv_len++; |
||
79 | break; |
||
80 | |||
3245 | Albom | 81 | |
8827 | rgimad | 82 | } // for end |
83 | |||
3245 | Albom | 84 | |
8827 | rgimad | 85 | |
3268 | Albom | 86 | |
8827 | rgimad | 87 | free(argv[argc-1]); |
88 | argc--; |
||
89 | } |
||
90 | |||
3245 | Albom | 91 | |
8827 | rgimad | 92 | } |
3245 | Albom | 93 | |
94 | |||
95 | |||
8827 | rgimad | 96 | int i; |
97 | for (i = 0; i < argc; i++) free(argv[i]); |
||
98 | }>> |
||
3245 | Albom | 99 |