logswan

Fast Web log analyzer using probabilistic data structures
Log | Files | Refs | README | LICENSE

commit 7d813359247f5aaa8b2deb2b2fa84276bacc15c7
parent c72964b58909845b18ff9974629097af09c60927
Author: Frederic Cambus <fred@statdns.com>
Date:   Sat, 17 Dec 2016 23:19:45 +0100

Pass results by reference, not by value

Diffstat:
Msrc/logswan.c | 4++--
Msrc/output.c | 52++++++++++++++++++++++++++--------------------------
Msrc/output.h | 4+---
3 files changed, 29 insertions(+), 31 deletions(-)

diff --git a/src/logswan.c b/src/logswan.c @@ -52,7 +52,7 @@ clock_t begin, end; char lineBuffer[LINE_MAX_LENGTH]; -Results results; +struct results results; struct date parsedDate; struct logLine parsedLine; struct request parsedRequest; @@ -282,7 +282,7 @@ int main (int argc, char *argv[]) { /* Printing results */ fprintf(stderr, "Processed %" PRIu64 " lines in %f seconds\n", results.processedLines, results.runtime); - fputs(output(results), stdout); + fputs(output(&results), stdout); /* Clean up */ fclose(logFile); diff --git a/src/output.c b/src/output.c @@ -18,7 +18,7 @@ #include "config.h" #include "output.h" -char *output(Results results) { +char *output(struct results* results) { json_t *jsonObject = json_object(); json_t *hitsObject = json_object(); json_t *visitsObject = json_object(); @@ -30,57 +30,57 @@ char *output(Results results) { json_t *protocolsArray = json_array(); for (size_t loop=0; loop<CONTINENTS; loop++) { - if (results.continents[loop]) { - json_array_append_new(continentsArray, json_pack("{s:s, s:s, s:i}", "data", continentsId[loop], "name", continentsNames[loop], "hits", results.continents[loop])); + if (results->continents[loop]) { + json_array_append_new(continentsArray, json_pack("{s:s, s:s, s:i}", "data", continentsId[loop], "name", continentsNames[loop], "hits", results->continents[loop])); } } for (size_t loop=0; loop<COUNTRIES; loop++) { - if (results.countries[loop]) { - json_array_append_new(countriesArray, json_pack("{s:s, s:s, s:i}", "data", GeoIP_code_by_id(loop), "name", GeoIP_name_by_id(loop), "hits", results.countries[loop])); + if (results->countries[loop]) { + json_array_append_new(countriesArray, json_pack("{s:s, s:s, s:i}", "data", GeoIP_code_by_id(loop), "name", GeoIP_name_by_id(loop), "hits", results->countries[loop])); } } for (size_t loop=0; loop<24; loop++) { - if (results.hours[loop]) { - json_array_append_new(hoursArray, json_pack("{s:i, s:i}", "data", loop, "hits", results.hours[loop])); + if (results->hours[loop]) { + json_array_append_new(hoursArray, json_pack("{s:i, s:i}", "data", loop, "hits", results->hours[loop])); } } for (size_t loop=0; loop<STATUS_CODE_MAX; loop++) { - if (results.status[loop]) { - json_array_append_new(httpStatusArray, json_pack("{s:i, s:i}", "data", loop, "hits", results.status[loop])); + if (results->status[loop]) { + json_array_append_new(httpStatusArray, json_pack("{s:i, s:i}", "data", loop, "hits", results->status[loop])); } } for (size_t loop=0; loop<METHODS; loop++) { - if (results.methods[loop]) { - json_array_append_new(methodsArray, json_pack("{s:s, s:i}", "data", methods[loop], "hits", results.methods[loop])); + if (results->methods[loop]) { + json_array_append_new(methodsArray, json_pack("{s:s, s:i}", "data", methods[loop], "hits", results->methods[loop])); } } for (size_t loop=0; loop<PROTOCOLS; loop++) { - if (results.protocols[loop]) { - json_array_append_new(protocolsArray, json_pack("{s:s, s:i}", "data", protocols[loop], "hits", results.protocols[loop])); + if (results->protocols[loop]) { + json_array_append_new(protocolsArray, json_pack("{s:s, s:i}", "data", protocols[loop], "hits", results->protocols[loop])); } } - json_object_set_new(hitsObject, "ipv4", json_integer(results.hitsIPv4)); - json_object_set_new(hitsObject, "ipv6", json_integer(results.hitsIPv6)); - json_object_set_new(hitsObject, "total", json_integer(results.hits)); + json_object_set_new(hitsObject, "ipv4", json_integer(results->hitsIPv4)); + json_object_set_new(hitsObject, "ipv6", json_integer(results->hitsIPv6)); + json_object_set_new(hitsObject, "total", json_integer(results->hits)); - json_object_set_new(visitsObject, "ipv4", json_integer(results.visitsIPv4)); - json_object_set_new(visitsObject, "ipv6", json_integer(results.visitsIPv6)); - json_object_set_new(visitsObject, "total", json_integer(results.visits)); + json_object_set_new(visitsObject, "ipv4", json_integer(results->visitsIPv4)); + json_object_set_new(visitsObject, "ipv6", json_integer(results->visitsIPv6)); + json_object_set_new(visitsObject, "total", json_integer(results->visits)); - json_object_set_new(jsonObject, "date", json_string(results.timeStamp)); + json_object_set_new(jsonObject, "date", json_string(results->timeStamp)); json_object_set_new(jsonObject, "generator", json_string(VERSION)); - json_object_set_new(jsonObject, "file_name", json_string(results.fileName)); - json_object_set_new(jsonObject, "file_size", json_integer(results.fileSize)); - json_object_set_new(jsonObject, "processed_lines", json_integer(results.processedLines)); - json_object_set_new(jsonObject, "invalid_lines", json_integer(results.invalidLines)); - json_object_set_new(jsonObject, "bandwidth", json_integer(results.bandwidth)); - json_object_set_new(jsonObject, "runtime", json_real(results.runtime)); + json_object_set_new(jsonObject, "file_name", json_string(results->fileName)); + json_object_set_new(jsonObject, "file_size", json_integer(results->fileSize)); + json_object_set_new(jsonObject, "processed_lines", json_integer(results->processedLines)); + json_object_set_new(jsonObject, "invalid_lines", json_integer(results->invalidLines)); + json_object_set_new(jsonObject, "bandwidth", json_integer(results->bandwidth)); + json_object_set_new(jsonObject, "runtime", json_real(results->runtime)); json_object_set_new(jsonObject, "hits", hitsObject); json_object_set_new(jsonObject, "visits", visitsObject); json_object_set_new(jsonObject, "continents", continentsArray); diff --git a/src/output.h b/src/output.h @@ -40,8 +40,6 @@ struct results { uint64_t methods[METHODS]; }; -typedef struct results Results; - -char *output(Results); +char *output(struct results*); #endif /* OUTPUT_H */