libpurple/plugins/log_reader.c

branch
release-2.x.y
changeset 36026
ee9d95cb8ee6
parent 36008
b94a61dfd064
child 36029
cd7db320cf5c
equal deleted inserted replaced
36025:2897add11757 36026:ee9d95cb8ee6
1420 g_return_val_if_fail(data->length > 0, g_strdup("")); 1420 g_return_val_if_fail(data->length > 0, g_strdup(""));
1421 g_return_val_if_fail(data->their_nickname != NULL, g_strdup("")); 1421 g_return_val_if_fail(data->their_nickname != NULL, g_strdup(""));
1422 1422
1423 purple_debug_info("Trillian log read", "Reading %s\n", data->path); 1423 purple_debug_info("Trillian log read", "Reading %s\n", data->path);
1424 1424
1425 read = g_malloc(data->length + 2);
1426
1427 file = g_fopen(data->path, "rb"); 1425 file = g_fopen(data->path, "rb");
1428 g_return_val_if_fail(file != NULL, g_strdup("")); 1426 g_return_val_if_fail(file != NULL, g_strdup(""));
1429 if (fseek(file, data->offset, SEEK_SET) != 0) 1427
1428 read = g_malloc(data->length + 2);
1429
1430 if (fseek(file, data->offset, SEEK_SET) != 0) {
1431 fclose(file);
1432 g_free(read);
1430 g_return_val_if_reached(g_strdup("")); 1433 g_return_val_if_reached(g_strdup(""));
1434 }
1431 data->length = fread(read, 1, data->length, file); 1435 data->length = fread(read, 1, data->length, file);
1432 fclose(file); 1436 fclose(file);
1433 1437
1434 if (read[data->length-1] == '\n') { 1438 if (read[data->length-1] == '\n') {
1435 read[data->length] = '\0'; 1439 read[data->length] = '\0';
1847 while (*tmp && *tmp != '(') --tmp; 1851 while (*tmp && *tmp != '(') --tmp;
1848 c = tmp; 1852 c = tmp;
1849 } else { 1853 } else {
1850 while (*c) 1854 while (*c)
1851 c++; 1855 c++;
1852 if (c) 1856 c--;
1853 c--;
1854 c = g_strrstr(c, "("); 1857 c = g_strrstr(c, "(");
1855 } 1858 }
1856 1859
1857 if (c != NULL) { 1860 if (c != NULL) {
1858 const char *timestamp = ++c; 1861 const char *timestamp = ++c;
1951 file = g_fopen(data->path, "rb"); 1954 file = g_fopen(data->path, "rb");
1952 g_return_val_if_fail(file != NULL, g_strdup("")); 1955 g_return_val_if_fail(file != NULL, g_strdup(""));
1953 1956
1954 contents = g_malloc(data->length + 2); 1957 contents = g_malloc(data->length + 2);
1955 1958
1956 if (fseek(file, data->offset, SEEK_SET) != 0) 1959 if (fseek(file, data->offset, SEEK_SET) != 0) {
1960 fclose(file);
1961 g_free(contents);
1957 g_return_val_if_reached(g_strdup("")); 1962 g_return_val_if_reached(g_strdup(""));
1963 }
1958 data->length = fread(contents, 1, data->length, file); 1964 data->length = fread(contents, 1, data->length, file);
1959 fclose(file); 1965 fclose(file);
1960 1966
1961 contents[data->length] = '\n'; 1967 contents[data->length] = '\n';
1962 contents[data->length + 1] = '\0'; 1968 contents[data->length + 1] = '\0';
2333 data = log->logger_data; 2339 data = log->logger_data;
2334 2340
2335 g_return_val_if_fail(data->path != NULL, g_strdup("")); 2341 g_return_val_if_fail(data->path != NULL, g_strdup(""));
2336 g_return_val_if_fail(data->length > 0, g_strdup("")); 2342 g_return_val_if_fail(data->length > 0, g_strdup(""));
2337 2343
2338 contents = g_malloc(data->length + 2);
2339
2340 file = g_fopen(data->path, "rb"); 2344 file = g_fopen(data->path, "rb");
2341 g_return_val_if_fail(file != NULL, g_strdup("")); 2345 g_return_val_if_fail(file != NULL, g_strdup(""));
2342 2346
2343 if (fseek(file, data->offset, SEEK_SET) != 0) 2347 contents = g_malloc(data->length + 2);
2348
2349 if (fseek(file, data->offset, SEEK_SET) != 0) {
2350 fclose(file);
2351 free(contents);
2344 g_return_val_if_reached(g_strdup("")); 2352 g_return_val_if_reached(g_strdup(""));
2353 }
2345 data->length = fread(contents, 1, data->length, file); 2354 data->length = fread(contents, 1, data->length, file);
2346 fclose(file); 2355 fclose(file);
2347 2356
2348 contents[data->length] = '\n'; 2357 contents[data->length] = '\n';
2349 contents[data->length + 1] = '\0'; 2358 contents[data->length + 1] = '\0';

mercurial