comparison src/os/win32/ngx_files.c @ 727:532d15ddbe68

glob support in include
author Igor Sysoev <igor@sysoev.ru>
date Mon, 02 Oct 2006 08:46:45 +0000
parents 7e24168b0853
children 25114f8e2780
comparison
equal deleted inserted replaced
726:7b71936d5299 727:532d15ddbe68
299 ngx_int_t 299 ngx_int_t
300 ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir) 300 ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
301 { 301 {
302 ngx_cpystrn(name->data + name->len, NGX_DIR_MASK, NGX_DIR_MASK_LEN + 1); 302 ngx_cpystrn(name->data + name->len, NGX_DIR_MASK, NGX_DIR_MASK_LEN + 1);
303 303
304 dir->dir = FindFirstFile((const char *) name->data, &dir->fd); 304 dir->dir = FindFirstFile((const char *) name->data, &dir->finddata);
305 305
306 if (dir->dir == INVALID_HANDLE_VALUE) { 306 if (dir->dir == INVALID_HANDLE_VALUE) {
307 return NGX_ERROR; 307 return NGX_ERROR;
308 } 308 }
309 309
320 if (dir->ready) { 320 if (dir->ready) {
321 dir->ready = 0; 321 dir->ready = 0;
322 return NGX_OK; 322 return NGX_OK;
323 } 323 }
324 324
325 if (FindNextFile(dir->dir, &dir->fd) != 0) { 325 if (FindNextFile(dir->dir, &dir->finddata) != 0) {
326 return NGX_OK; 326 return NGX_OK;
327 } 327 }
328 328
329 return NGX_ERROR; 329 return NGX_ERROR;
330 }
331
332
333 ngx_int_t
334 ngx_open_glob(ngx_glob_t *gl)
335 {
336 gl->dir = FindFirstFile((const char *) gl->pattern, &gl->finddata);
337
338 if (gl->dir == INVALID_HANDLE_VALUE) {
339 return NGX_ERROR;
340 }
341
342 gl->ready = 1;
343
344 return NGX_OK;
345 }
346
347
348 ngx_int_t
349 ngx_read_glob(ngx_glob_t *gl, ngx_str_t *name)
350 {
351 ngx_err_t err;
352
353 if (gl->ready) {
354 name->len = ngx_strlen(gl->finddata.cFileName);
355 name->data = (u_char *) gl->finddata.cFileName;
356
357 gl->ready = 0;
358 return NGX_OK;
359 }
360
361 if (FindNextFile(gl->dir, &gl->finddata) != 0) {
362 name->len = ngx_strlen(gl->finddata.cFileName);
363 name->data = (u_char *) gl->finddata.cFileName;
364
365 return NGX_OK;
366 }
367
368 err = ngx_errno;
369
370 if (err == NGX_ENOMOREFILES) {
371 return NGX_DONE;
372 }
373
374 ngx_log_error(NGX_LOG_ALERT, gl->log, err,
375 "FindNextFile(%s) failed", gl->pattern);
376
377 return NGX_ERROR;
378 }
379
380
381 void
382 ngx_close_glob(ngx_glob_t *gl)
383 {
384 if (FindClose(gl->dir) != 0) {
385 ngx_log_error(NGX_LOG_ALERT, gl->log, ngx_errno,
386 "FindClose(%s) failed", gl->pattern);
387 }
330 } 388 }
331 389
332 390
333 ngx_int_t 391 ngx_int_t
334 ngx_de_info(u_char *name, ngx_dir_t *dir) 392 ngx_de_info(u_char *name, ngx_dir_t *dir)