Changeset 425 for trunk/src/sh_log_check.c
- Timestamp:
- Feb 20, 2013, 7:30:02 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/sh_log_check.c
r415 r425 577 577 * Search rotated logfile 578 578 */ 579 #include <unistd.h> 580 #include <libgen.h> 581 #include <dirent.h> 582 583 char * sh_rotated_log_search(const char * path, struct stat * buf) 584 { 585 586 size_t size; 587 int i; 588 char * searchpath; 589 struct stat sbuf; 590 DIR * dp; 591 char * dname; 592 char * bname; 593 594 dname = sh_util_dirname(path); 595 bname = sh_util_basename(path); 596 597 size = strlen(dname) + strlen(bname) + 4; 598 searchpath = SH_ALLOC(size); 599 600 for (i = 0; i < 2; ++i) 601 { 602 snprintf(searchpath, size, "%s/%s.%1d", dname, bname, i); 603 if (0 == stat(searchpath, &sbuf) && sbuf.st_ino == buf->st_ino) 604 { 605 SH_FREE(dname); 606 SH_FREE(bname); 607 return searchpath; 608 } 609 } 610 611 SH_FREE(searchpath); 612 613 if (NULL != (dp = opendir(dname))) 614 { 615 struct dirent * de; 616 617 while (NULL != (de = readdir(dp))) 618 { 619 if (0 == strcmp(de->d_name, ".") || 0 == strcmp(de->d_name, "..")) 620 continue; 621 622 size = strlen(dname) + strlen(de->d_name) + 2; 623 searchpath = SH_ALLOC(size); 624 snprintf(searchpath, size, "%s/%s", dname, de->d_name); 625 626 if (0 == stat(searchpath, &sbuf) && sbuf.st_ino == buf->st_ino) 627 { 628 SH_FREE(dname); 629 SH_FREE(bname); 630 closedir(dp); 631 return searchpath; 632 } 633 634 SH_FREE(searchpath); 635 } 636 closedir(dp); 637 } 638 639 SH_FREE(dname); 640 SH_FREE(bname); 641 642 return NULL; 643 } 579 extern char * sh_rotated_log_search(const char * path, struct stat * buf); 580 644 581 645 582 /* Open file, position at stored offset
Note:
See TracChangeset
for help on using the changeset viewer.