Subversion Repositories Kolibri OS

Rev

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
 
-