78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
-
+
+
+
+
+
+
+
+
|
return strcmp(pA->zName, pB->zName);
}
int main(int argc, char **argv){
int i, sz;
int j, n;
Resource *aRes;
int nRes = argc-1;
int nRes;
unsigned char *pData;
int nErr = 0;
int nSkip;
int nPrefix = 0;
if( argc>3 && strcmp(argv[1],"--prefix")==0 ){
nPrefix = (int)strlen(argv[2]);
argc -= 2;
argv += 2;
}
nRes = argc - 1;
aRes = malloc( nRes*sizeof(aRes[0]) );
if( aRes==0 ){
fprintf(stderr, "malloc failed\n");
return 1;
}
for(i=0; i<argc-1; i++){
aRes[i].zName = argv[i+1];
|
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
-
+
-
-
-
-
+
-
-
-
-
-
-
+
|
printf(" const char *zName;\n");
printf(" const unsigned char *pData;\n");
printf(" int nByte;\n");
printf("};\n");
printf("static const BuiltinFileTable aBuiltinFiles[] = {\n");
for(i=0; i<nRes; i++){
const char *z = aRes[i].zName;
const char *zTail;
if( strlen(z)>=nPrefix ) z += nPrefix;
int nSlash = 0;
zTail = z;
while( z && z[0] ){
if( z[0]=='/' || z[0]=='\\' ){
while( z[0]=='.' || z[0]=='/' ){ z++; }
nSlash++;
if( nSlash<=2 || z[-1]=='.' ) zTail = &z[1];
}
z++;
}
aRes[i].zName = zTail;
aRes[i].zName = z;
}
qsort(aRes, nRes, sizeof(aRes[0]), compareResource);
for(i=0; i<nRes; i++){
printf(" { \"%s\", bidata%d, %d },\n",
aRes[i].zName, aRes[i].idx, aRes[i].nByte);
}
printf("};\n");
return nErr;
}
|