Mercurial > hg > nginx
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) |