190 |
190 |
static void log_reset(logstore_t *store)
|
191 |
191 |
{
|
192 |
192 |
logfile_t *olf;
|
|
193 |
long ftell_r;
|
193 |
194 |
|
194 |
195 |
store->skip_advance = 0;
|
195 |
196 |
|
... | ... | |
205 |
206 |
list_remove_first(&store->file_group);
|
206 |
207 |
}
|
207 |
208 |
|
208 |
|
assert(olf);
|
209 |
|
assert(olf->file);
|
|
209 |
if (!olf || !olf->file)
|
|
210 |
return;
|
210 |
211 |
|
211 |
212 |
list_it_init_last(&store->file_group, &store->file_it);
|
212 |
213 |
|
213 |
|
fseek(olf->file, 0, SEEK_END);
|
214 |
|
olf->len = ftell(olf->file);
|
215 |
|
store->file_offset = olf->len;
|
|
214 |
fseek(olf->file, (long)0, SEEK_END);
|
|
215 |
ftell_r = ftell(olf->file);
|
|
216 |
if (ftell_r < 0) {
|
|
217 |
mylog(LOG_ERROR, "log_reset: ftell error %s", strerror(errno));
|
|
218 |
return;
|
|
219 |
}
|
|
220 |
store->file_offset = ftell_r;
|
|
221 |
olf->len = (size_t)ftell_r;
|
216 |
222 |
}
|
217 |
223 |
|
218 |
224 |
void log_reinit(logstore_t *store)
|
... | ... | |
266 |
272 |
char *uniq_fname;
|
267 |
273 |
char *canonical_fname = NULL;
|
268 |
274 |
logfile_t *lf = NULL;
|
|
275 |
long ftell_r;
|
269 |
276 |
|
270 |
277 |
if (logdata->log_to_file) {
|
271 |
278 |
if (log_has_file(logdata, filename)) {
|
... | ... | |
295 |
302 |
|
296 |
303 |
lf = bip_malloc(sizeof(logfile_t));
|
297 |
304 |
lf->file = f;
|
298 |
|
lf->len = ftell(f);
|
|
305 |
ftell_r = ftell(f);
|
|
306 |
lf->len = (size_t)ftell_r;
|
|
307 |
if (ftell_r < 0) {
|
|
308 |
mylog(LOG_ERROR, "log_add_file: ftell error %s",
|
|
309 |
strerror(errno));
|
|
310 |
free(uniq_fname);
|
|
311 |
free(canonical_fname);
|
|
312 |
fclose(f);
|
|
313 |
return 0;
|
|
314 |
}
|
299 |
315 |
lf->filename = uniq_fname;
|
300 |
316 |
lf->canonical_filename = canonical_fname;
|
301 |
317 |
log_updatelast(lf);
|
... | ... | |
307 |
323 |
list_init(&store->file_group, NULL);
|
308 |
324 |
store->name = bip_strdup(destination);
|
309 |
325 |
store->skip_advance = 0;
|
|
326 |
// should be safe to cast as lf->len comes from ftell()
|
310 |
327 |
if (lf)
|
311 |
|
store->file_offset = lf->len;
|
|
328 |
store->file_offset = (long)lf->len;
|
312 |
329 |
hash_insert(&logdata->logfgs, destination, store);
|
313 |
330 |
}
|
314 |
331 |
|
... | ... | |
827 |
844 |
if (lf != list_get_last(&store->file_group))
|
828 |
845 |
return 1;
|
829 |
846 |
|
830 |
|
return store->file_offset != lf->len;
|
|
847 |
// should be safe to cast to unsigned as we check ftell
|
|
848 |
// when setting file_offset and only ++ since then
|
|
849 |
return (size_t)store->file_offset != lf->len;
|
831 |
850 |
}
|
832 |
851 |
|
833 |
852 |
/*
|