commit 619b321bdcafab044714ea172d92eb706935c0a6
parent 2c29c6af1750e4f94ad50eca171d201e1ce868c7
Author: Frederic Cambus <fcambus@users.sourceforge.net>
Date: Sun, 28 Jun 2015 15:12:00 +0200
Save JSON output in a file instead of displaying it on stdout
Diffstat:
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/logswan.c b/src/logswan.c
@@ -53,7 +53,7 @@ int statusCode;
int hour;
struct stat logFileSize;
-FILE *logFile;
+FILE *logFile, *jsonFile;
const char *errstr;
@@ -90,16 +90,22 @@ int main (int argc, char *argv[]) {
printf("Processing file : %s\n\n", argv[1]);
logFile = fopen(argv[1], "r");
- if(!logFile) {
+ if (!logFile) {
perror("Can't open log file");
- return 1;
+ return EXIT_FAILURE;
}
- /* Create output file name */
+ /* Create output file */
int outputLen = strlen(argv[1]) + 6;
char *outputFile = malloc(outputLen);
snprintf(outputFile, outputLen, "%s%s", argv[1], ".json");
+ jsonFile = fopen(outputFile, "w");
+ if (!jsonFile) {
+ perror("Can't create output file");
+ return EXIT_FAILURE;
+ }
+
while (fgets(lineBuffer, LINE_MAX_LENGTH, logFile) != NULL) {
/* Parse and tokenize line */
parseLine(&parsedLine, lineBuffer);
@@ -171,7 +177,8 @@ int main (int argc, char *argv[]) {
printf("Processed %" PRIu64 " lines in %f seconds\n", results.processedLines, results.runtime);
fclose(logFile);
- output(results);
+ fputs(output(results), jsonFile);
+ fclose(jsonFile);
return EXIT_SUCCESS;
}