|
40 | 40 | #define FLB_HASH_TABLE_SIZE 50 |
41 | 41 | #endif |
42 | 42 |
|
43 | | -static inline int flb_tail_file_name_cmp(char *name, |
44 | | - struct flb_tail_file *file) |
45 | | -{ |
46 | | - int ret; |
47 | | - char *a; |
48 | | - char *b; |
49 | | - char *a_base; |
50 | | - char *b_base; |
51 | | - |
52 | | - a = flb_strdup(name); |
53 | | - b = flb_strdup(file->name); |
54 | | - |
55 | | - a_base = flb_strdup(basename(a)); |
56 | | - b_base = basename(b); |
57 | | - struct flb_tail_config *ctx = file->config; |
58 | | - |
59 | | - flb_plg_info(ctx->ins, "a_base=%s b_base=%s", a_base, b_base); |
60 | | - |
61 | | -#if defined(__linux__) |
62 | | - ret = strcmp(name, file->name); |
63 | | -#elif defined(FLB_SYSTEM_WINDOWS) |
64 | | - ret = _stricmp(name, file->name); |
65 | | -#else |
66 | | - ret = strcmp(name, file->name); |
67 | | -#endif |
68 | | - |
69 | | - flb_free(a); |
70 | | - flb_free(b); |
71 | | - flb_free(a_base); |
72 | | - return ret; |
73 | | -} |
74 | | - |
75 | 43 | static inline int flb_tail_target_file_name_cmp(char *name, |
76 | 44 | struct flb_tail_file *file) |
77 | 45 | { |
78 | 46 | int ret; |
79 | 47 | char *name_a = NULL; |
80 | 48 | char *name_b = NULL; |
81 | | - char *base_a; |
82 | | - char *base_b; |
| 49 | + char *base_a = NULL; |
| 50 | + char *base_b = NULL; |
83 | 51 |
|
84 | 52 | name_a = flb_strdup(name); |
| 53 | + if (!name_a) { |
| 54 | + flb_errno(); |
| 55 | + ret = -1; |
| 56 | + goto out; |
| 57 | + } |
| 58 | + |
85 | 59 | base_a = flb_strdup(basename(name_a)); |
| 60 | + if (!base_a) { |
| 61 | + flb_errno(); |
| 62 | + ret = -1; |
| 63 | + goto out; |
| 64 | + } |
86 | 65 |
|
87 | 66 | #if defined(FLB_SYSTEM_WINDOWS) |
88 | 67 | name_b = flb_strdup(file->real_name); |
| 68 | + if (!name_b) { |
| 69 | + flb_errno(); |
| 70 | + ret = -1; |
| 71 | + goto out; |
| 72 | + } |
| 73 | + |
89 | 74 | base_b = basename(name_b); |
90 | 75 | ret = _stricmp(base_a, base_b); |
91 | 76 | #else |
92 | 77 | name_b = flb_strdup(file->real_name); |
| 78 | + if (!name_b) { |
| 79 | + flb_errno(); |
| 80 | + ret = -1; |
| 81 | + goto out; |
| 82 | + } |
93 | 83 | base_b = basename(name_b); |
94 | 84 | ret = strcmp(base_a, base_b); |
95 | 85 | #endif |
96 | 86 |
|
| 87 | + out: |
97 | 88 | flb_free(name_a); |
98 | 89 | flb_free(name_b); |
99 | 90 | flb_free(base_a); |
100 | 91 |
|
| 92 | + /* FYI: 'base_b' never points to a new allocation, no flb_free is needed */ |
| 93 | + |
101 | 94 | return ret; |
102 | 95 | } |
103 | 96 |
|
|
0 commit comments