257
258 static void
259 FileList_ensureCapacity(FileList fl, int capacity)
260 {
261 if (fl->capacity < capacity) {
262 while (fl->capacity < capacity)
263 fl->capacity *= 2;
264 fl->files = JLI_MemRealloc(fl->files,
265 fl->capacity * sizeof(fl->files[0]));
266 }
267 }
268
269 static void
270 FileList_add(FileList fl, char *file)
271 {
272 FileList_ensureCapacity(fl, fl->size+1);
273 fl->files[fl->size++] = file;
274 }
275
276 static void
277 FileList_addSubstring(FileList fl, const char *beg, int len)
278 {
279 char *filename = (char *) JLI_MemAlloc(len+1);
280 memcpy(filename, beg, len);
281 filename[len] = '\0';
282 FileList_ensureCapacity(fl, fl->size+1);
283 fl->files[fl->size++] = filename;
284 }
285
286 static char *
287 FileList_join(FileList fl, char sep)
288 {
289 int i;
290 int size;
291 char *path;
292 char *p;
293 for (i = 0, size = 1; i < fl->size; i++)
294 size += (int)JLI_StrLen(fl->files[i]) + 1;
295
296 path = JLI_MemAlloc(size);
297
298 for (i = 0, p = path; i < fl->size; i++) {
299 int len = (int)JLI_StrLen(fl->files[i]);
300 if (i > 0) *p++ = sep;
301 memcpy(p, fl->files[i], len);
302 p += len;
303 }
304 *p = '\0';
305
306 return path;
307 }
308
309 static FileList
310 FileList_split(const char *path, char sep)
311 {
312 const char *p, *q;
313 int len = (int)JLI_StrLen(path);
314 int count;
315 FileList fl;
316 for (count = 1, p = path; p < path + len; p++)
317 count += (*p == sep);
318 fl = FileList_new(count);
319 for (p = path;;) {
320 for (q = p; q <= path + len; q++) {
321 if (*q == sep || *q == '\0') {
322 FileList_addSubstring(fl, p, q - p);
323 if (*q == '\0')
324 return fl;
325 p = q + 1;
326 }
327 }
328 }
329 }
330
331 static int
332 isJarFileName(const char *filename)
333 {
|
257
258 static void
259 FileList_ensureCapacity(FileList fl, int capacity)
260 {
261 if (fl->capacity < capacity) {
262 while (fl->capacity < capacity)
263 fl->capacity *= 2;
264 fl->files = JLI_MemRealloc(fl->files,
265 fl->capacity * sizeof(fl->files[0]));
266 }
267 }
268
269 static void
270 FileList_add(FileList fl, char *file)
271 {
272 FileList_ensureCapacity(fl, fl->size+1);
273 fl->files[fl->size++] = file;
274 }
275
276 static void
277 FileList_addSubstring(FileList fl, const char *beg, size_t len)
278 {
279 char *filename = (char *) JLI_MemAlloc(len+1);
280 memcpy(filename, beg, len);
281 filename[len] = '\0';
282 FileList_ensureCapacity(fl, fl->size+1);
283 fl->files[fl->size++] = filename;
284 }
285
286 static char *
287 FileList_join(FileList fl, char sep)
288 {
289 int i;
290 int size;
291 char *path;
292 char *p;
293 for (i = 0, size = 1; i < fl->size; i++)
294 size += (int)JLI_StrLen(fl->files[i]) + 1;
295
296 path = JLI_MemAlloc(size);
297
298 for (i = 0, p = path; i < fl->size; i++) {
299 int len = (int)JLI_StrLen(fl->files[i]);
300 if (i > 0) *p++ = sep;
301 memcpy(p, fl->files[i], len);
302 p += len;
303 }
304 *p = '\0';
305
306 return path;
307 }
308
309 static FileList
310 FileList_split(const char *path, char sep)
311 {
312 const char *p, *q;
313 size_t len = JLI_StrLen(path);
314 int count;
315 FileList fl;
316 for (count = 1, p = path; p < path + len; p++)
317 count += (*p == sep);
318 fl = FileList_new(count);
319 for (p = path;;) {
320 for (q = p; q <= path + len; q++) {
321 if (*q == sep || *q == '\0') {
322 FileList_addSubstring(fl, p, q - p);
323 if (*q == '\0')
324 return fl;
325 p = q + 1;
326 }
327 }
328 }
329 }
330
331 static int
332 isJarFileName(const char *filename)
333 {
|