logswan

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

commit 4dc8dbd26d26bbdcddd4a6ec45014174abe66484
parent d858b07972812c62d05232668d5c17b8885843bd
Author: Frederic Cambus <fcambus@users.sourceforge.net>
Date:   Sun, 21 Jun 2015 22:48:28 +0200

Moving the 'parseLine' function to its own file

Diffstat:
MCMakeLists.txt | 2+-
Msrc/logswan.c | 35++---------------------------------
Asrc/parse.c | 40++++++++++++++++++++++++++++++++++++++++
Asrc/parse.h | 22++++++++++++++++++++++
4 files changed, 65 insertions(+), 34 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt @@ -16,6 +16,6 @@ include_directories(/usr/local/include) add_definitions(-Wall -Wextra -Werror -std=c99 -pedantic) -add_executable(logswan src/logswan.c) +add_executable(logswan src/logswan.c src/parse.c) target_link_libraries(logswan ${LIB_GEOIP}) diff --git a/src/logswan.c b/src/logswan.c @@ -19,11 +19,12 @@ #include <inttypes.h> #include <stdio.h> #include <stdlib.h> -#include <string.h> #include <time.h> #include <GeoIP.h> +#include "parse.h" + #define VERSION "Logswan" #define LINE_MAX_LENGTH 4096 @@ -43,14 +44,6 @@ uint64_t hitsIPv4 = 0; uint64_t hitsIPv6 = 0; uint64_t countries[255]; -struct logLine { - char *remoteHost; - char *date; - char *resource; - char *statusCode; - char *objectSize; -}; - struct logLine parsedLine; struct sockaddr_in ipv4; @@ -64,30 +57,6 @@ FILE *logFile; char *endptr; int getoptFlag; -void parseLine(struct logLine* parsedLine, char *lineBuffer) { - /* Remote host */ - parsedLine->remoteHost = strtok(lineBuffer, " "); - - /* User-identifier */ - strtok(NULL, " "); - - /* User ID */ - strtok(NULL, "["); - - /* Date */ - parsedLine->date = strtok(NULL, "]"); - - /* Requested resource */ - strtok(NULL, "\""); - parsedLine->resource = strtok(NULL, "\""); - - /* HTTP status codes */ - parsedLine->statusCode = strtok(NULL, " "); - - /* Returned object size */ - parsedLine->objectSize = strtok(NULL, "\""); -} - int main (int argc, char *argv[]) { printf("-------------------------------------------------------------------------------\n" \ " Logswan (c) by Frederic Cambus 2015 \n" \ diff --git a/src/parse.c b/src/parse.c @@ -0,0 +1,40 @@ +/*****************************************************************************/ +/* */ +/* Logswan (c) by Frederic Cambus 2015 */ +/* https://github.com/fcambus/logswan */ +/* */ +/* Created: 2015/05/31 */ +/* Last Updated: 2015/06/21 */ +/* */ +/* Logswan is released under the BSD 3-Clause license. */ +/* See LICENSE file for details. */ +/* */ +/*****************************************************************************/ + +#include <string.h> + +#include "parse.h" + +void parseLine(struct logLine* parsedLine, char *lineBuffer) { + /* Remote host */ + parsedLine->remoteHost = strtok(lineBuffer, " "); + + /* User-identifier */ + strtok(NULL, " "); + + /* User ID */ + strtok(NULL, "["); + + /* Date */ + parsedLine->date = strtok(NULL, "]"); + + /* Requested resource */ + strtok(NULL, "\""); + parsedLine->resource = strtok(NULL, "\""); + + /* HTTP status codes */ + parsedLine->statusCode = strtok(NULL, " "); + + /* Returned object size */ + parsedLine->objectSize = strtok(NULL, "\""); +} diff --git a/src/parse.h b/src/parse.h @@ -0,0 +1,22 @@ +/*****************************************************************************/ +/* */ +/* Logswan (c) by Frederic Cambus 2015 */ +/* https://github.com/fcambus/logswan */ +/* */ +/* Created: 2015/05/31 */ +/* Last Updated: 2015/06/21 */ +/* */ +/* Logswan is released under the BSD 3-Clause license. */ +/* See LICENSE file for details. */ +/* */ +/*****************************************************************************/ + +struct logLine { + char *remoteHost; + char *date; + char *resource; + char *statusCode; + char *objectSize; +}; + +void parseLine(struct logLine* parsedLine, char *lineBuffer);