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:
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 */