From f5b47eebe4968b68ea6b2aef93da1db5de14900a Mon Sep 17 00:00:00 2001 From: retoor Date: Fri, 5 Dec 2025 17:08:50 +0100 Subject: [PATCH] New version with caching. --- Makefile | 150 ++++++------ src/libtikker/Makefile | 36 --- src/libtikker/include/aggregator.h | 72 ------ src/libtikker/include/config.h | 37 --- src/libtikker/include/database.h | 27 --- src/libtikker/include/decoder.h | 33 --- src/libtikker/include/indexer.h | 57 ----- src/libtikker/include/report.h | 19 -- src/libtikker/include/tikker.h | 138 ----------- src/libtikker/include/types.h | 60 ----- src/libtikker/src/aggregator.c | 92 ------- src/libtikker/src/database.c | 89 ------- src/libtikker/src/decoder.c | 201 --------------- src/libtikker/src/indexer.c | 329 ------------------------- src/libtikker/src/report.c | 143 ----------- src/libtikker/src/tikker.c | 246 ------------------- src/libtikker/src/utils.c | 63 ----- src/tools/aggregator/Makefile | 25 -- src/tools/aggregator/main.c | 152 ------------ src/tools/decoder/Makefile | 25 -- src/tools/decoder/main.c | 63 ----- src/tools/indexer/Makefile | 25 -- src/tools/indexer/main.c | 135 ----------- src/tools/report_gen/Makefile | 25 -- src/tools/report_gen/main.c | 123 ---------- tikker | Bin 230784 -> 250464 bytes tikker.c | 376 ++++++++++++++++++++--------- tikker_db.h | 72 ++++++ tikker_decode.h | 151 ++++++++++++ tikker_stats.h | 281 +++++++++++++++++++++ tikker_types.h | 81 +++++++ tikker_words.h | 76 ++++++ 32 files changed, 986 insertions(+), 2416 deletions(-) delete mode 100644 src/libtikker/Makefile delete mode 100644 src/libtikker/include/aggregator.h delete mode 100644 src/libtikker/include/config.h delete mode 100644 src/libtikker/include/database.h delete mode 100644 src/libtikker/include/decoder.h delete mode 100644 src/libtikker/include/indexer.h delete mode 100644 src/libtikker/include/report.h delete mode 100644 src/libtikker/include/tikker.h delete mode 100644 src/libtikker/include/types.h delete mode 100644 src/libtikker/src/aggregator.c delete mode 100644 src/libtikker/src/database.c delete mode 100644 src/libtikker/src/decoder.c delete mode 100644 src/libtikker/src/indexer.c delete mode 100644 src/libtikker/src/report.c delete mode 100644 src/libtikker/src/tikker.c delete mode 100644 src/libtikker/src/utils.c delete mode 100644 src/tools/aggregator/Makefile delete mode 100644 src/tools/aggregator/main.c delete mode 100644 src/tools/decoder/Makefile delete mode 100644 src/tools/decoder/main.c delete mode 100644 src/tools/indexer/Makefile delete mode 100644 src/tools/indexer/main.c delete mode 100644 src/tools/report_gen/Makefile delete mode 100644 src/tools/report_gen/main.c create mode 100644 tikker_db.h create mode 100644 tikker_decode.h create mode 100644 tikker_stats.h create mode 100644 tikker_types.h create mode 100644 tikker_words.h diff --git a/Makefile b/Makefile index 3e77ecf..8603163 100755 --- a/Makefile +++ b/Makefile @@ -1,115 +1,103 @@ -.PHONY: all clean test build-lib build-tools build-api install help dev coverage memcheck +.PHONY: all clean test install help dev tikker plot process merge index popular CC := gcc -CFLAGS := -Wall -Wextra -pedantic -std=c11 -O2 -I./src/third_party -I./src/libtikker/include +CFLAGS := -Ofast -Wall -Wextra DEBUG_FLAGS := -g -O0 -DDEBUG -RELEASE_FLAGS := -O3 -COVERAGE_FLAGS := -fprofile-arcs -ftest-coverage -LDFLAGS := -lsqlite3 -lm +LDFLAGS := -lsqlite3 -lpthread INSTALL_PREFIX ?= /usr/local BUILD_DIR := ./build BIN_DIR := $(BUILD_DIR)/bin -LIB_DIR := $(BUILD_DIR)/lib -all: build-lib build-tools build-api - @echo "✓ Complete build finished" +PYTHON := python3 +VENV := .venv +VENV_PYTHON := $(VENV)/bin/python + +all: tikker + @echo "Build complete" help: - @echo "Tikker Enterprise Build System" + @echo "Tikker Build System" @echo "" - @echo "Targets:" - @echo " make all - Build everything (lib, tools, API)" - @echo " make build-lib - Build libtikker static library" - @echo " make build-tools - Build all CLI tools" - @echo " make build-api - Setup Python API environment" - @echo " make test - Run all tests" - @echo " make coverage - Generate code coverage report" - @echo " make memcheck - Run memory leak detection" - @echo " make clean - Remove all build artifacts" - @echo " make install - Install binaries" - @echo " make dev - Build with debug symbols" + @echo "Build Targets:" + @echo " make tikker - Build tikker binary (default)" + @echo " make all - Same as tikker" + @echo " make dev - Build with debug symbols" + @echo " make clean - Remove build artifacts" + @echo " make install - Install binary to $(INSTALL_PREFIX)/bin" @echo "" - @echo "Environment Variables:" - @echo " CC - C compiler (default: gcc)" - @echo " CFLAGS - Compiler flags" - @echo " INSTALL_PREFIX - Installation directory (default: /usr/local)" + @echo "Python Targets:" + @echo " make ensure_env - Create Python virtual environment" + @echo " make plot - Generate graphs and reports" + @echo " make process - Run processing pipeline" + @echo " make merge - Merge visualization outputs" + @echo " make index - Index words in database" + @echo " make popular - Show popular typed words" + @echo "" + @echo "Tikker Commands:" + @echo " ./tikker - Start keyboard monitoring" + @echo " ./tikker presses_today - Show today's keystrokes" + @echo " ./tikker stats daily - Daily statistics" + @echo " ./tikker stats hourly - Hourly breakdown" + @echo " ./tikker stats weekly - Weekly statistics" + @echo " ./tikker stats weekday - Weekday comparison" + @echo " ./tikker stats top-keys N - Top N keys" + @echo " ./tikker stats top-words N - Top N words" + @echo " ./tikker stats summary - Overall summary" + @echo " ./tikker decode FILE - Decode keystroke log" + @echo " ./tikker help - Show usage" $(BIN_DIR): @mkdir -p $(BIN_DIR) -$(LIB_DIR): - @mkdir -p $(LIB_DIR) +tikker: $(BIN_DIR) + @echo "Building tikker..." + @$(CC) $(CFLAGS) tikker.c -o $(BIN_DIR)/tikker $(LDFLAGS) + @cp $(BIN_DIR)/tikker ./tikker + @echo "Built: ./tikker" -build-lib: $(LIB_DIR) - @echo "Building libtikker library..." - @cd src/libtikker && make LIB_DIR=../../$(LIB_DIR) CC="$(CC)" CFLAGS="$(CFLAGS)" - @echo "✓ libtikker built" +dev: CFLAGS := $(DEBUG_FLAGS) +dev: clean tikker + @echo "Debug build complete" -build-tools: build-lib $(BIN_DIR) - @echo "Building CLI tools..." - @cd src/tools/decoder && make BIN_DIR=../../$(BIN_DIR) LIB_DIR=../../$(LIB_DIR) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" - @cd src/tools/indexer && make BIN_DIR=../../$(BIN_DIR) LIB_DIR=../../$(LIB_DIR) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" - @cd src/tools/aggregator && make BIN_DIR=../../$(BIN_DIR) LIB_DIR=../../$(LIB_DIR) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" - @cd src/tools/report_gen && make BIN_DIR=../../$(BIN_DIR) LIB_DIR=../../$(LIB_DIR) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" - @echo "✓ All CLI tools built" - -build-api: - @echo "Setting up Python API environment..." - @if [ -f src/api/requirements.txt ]; then \ - python3 -m pip install --quiet -r src/api/requirements.txt 2>/dev/null || true; \ - echo "✓ Python dependencies installed"; \ +ensure_env: + @if [ ! -d "$(VENV)" ]; then \ + $(PYTHON) -m venv $(VENV); \ + $(VENV_PYTHON) -m pip install --upgrade pip; \ + $(VENV_PYTHON) -m pip install matplotlib requests fastapi uvicorn openai dataset; \ + echo "Virtual environment created at $(VENV)"; \ else \ - echo "⚠ No API requirements.txt found"; \ + echo "Virtual environment already exists"; \ fi -test: build-lib - @echo "Running tests..." - @cd tests && make CC="$(CC)" CFLAGS="$(CFLAGS)" - @echo "✓ Tests completed" +plot: ensure_env + @PYTHONPATH=/home/retoor/bin $(VENV_PYTHON) plot.py + @$(VENV_PYTHON) merge.py -coverage: clean - @echo "Building with coverage instrumentation..." - @$(MAKE) CFLAGS="$(CFLAGS) $(COVERAGE_FLAGS)" test - @echo "Generating coverage report..." - @gcov src/libtikker/src/*.c 2>/dev/null || true - @lcov --capture --directory . --output-file coverage.info 2>/dev/null || true - @genhtml coverage.info --output-directory coverage_html 2>/dev/null || true - @echo "✓ Coverage report generated in coverage_html/" +process: ensure_env + @PYTHONPATH=/home/retoor/bin $(VENV_PYTHON) process.py -memcheck: build-lib - @echo "Running memory leak detection..." - @valgrind --leak-check=full --show-leak-kinds=all \ - ./$(BIN_DIR)/tikker-aggregator --help 2>&1 | tail -20 - @echo "✓ Memory check completed" +merge: ensure_env + @$(VENV_PYTHON) merge.py -dev: CFLAGS += $(DEBUG_FLAGS) -dev: clean all - @echo "✓ Debug build completed" +index: ensure_env + @$(VENV_PYTHON) tags.py --index -install: all - @echo "Installing to $(INSTALL_PREFIX)..." +popular: ensure_env + @$(VENV_PYTHON) tags.py --popular + +install: tikker + @echo "Installing to $(INSTALL_PREFIX)/bin..." @mkdir -p $(INSTALL_PREFIX)/bin - @mkdir -p $(INSTALL_PREFIX)/lib - @mkdir -p $(INSTALL_PREFIX)/include - @install -m 755 $(BIN_DIR)/tikker-decoder $(INSTALL_PREFIX)/bin/ - @install -m 755 $(BIN_DIR)/tikker-indexer $(INSTALL_PREFIX)/bin/ - @install -m 755 $(BIN_DIR)/tikker-aggregator $(INSTALL_PREFIX)/bin/ - @install -m 755 $(BIN_DIR)/tikker-report $(INSTALL_PREFIX)/bin/ - @install -m 644 $(LIB_DIR)/libtikker.a $(INSTALL_PREFIX)/lib/ - @install -m 644 src/libtikker/include/*.h $(INSTALL_PREFIX)/include/ - @echo "✓ Installation complete" + @install -m 755 $(BIN_DIR)/tikker $(INSTALL_PREFIX)/bin/ + @echo "Installed: $(INSTALL_PREFIX)/bin/tikker" clean: @echo "Cleaning build artifacts..." @rm -rf $(BUILD_DIR) + @rm -f tikker @find . -name "*.o" -delete - @find . -name "*.a" -delete @find . -name "*.gcov" -delete @find . -name "*.gcda" -delete @find . -name "*.gcno" -delete - @find . -name "gmon.out" -delete - @rm -rf coverage.info coverage_html/ - @echo "✓ Clean completed" - -.PHONY: help $(BIN_DIR) $(LIB_DIR) + @echo "Clean complete" diff --git a/src/libtikker/Makefile b/src/libtikker/Makefile deleted file mode 100644 index 3dbf7f9..0000000 --- a/src/libtikker/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -CC ?= gcc -CFLAGS ?= -Wall -Wextra -pedantic -std=c11 -O2 -CFLAGS += -I. -I./include -I../third_party -fPIC - -LIB_DIR ?= ../../build/lib -SRC_DIR := src -OBJ_DIR := .obj -LIB_TARGET := $(LIB_DIR)/libtikker.a - -SOURCES := $(wildcard $(SRC_DIR)/*.c) -OBJECTS := $(SOURCES:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) - -.PHONY: all clean - -all: $(LIB_TARGET) - -$(OBJ_DIR): - @mkdir -p $(OBJ_DIR) - -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) - @echo "Compiling $<..." - @$(CC) $(CFLAGS) -c $< -o $@ - -$(LIB_TARGET): $(OBJECTS) | $(LIB_DIR) - @mkdir -p $(LIB_DIR) - @echo "Creating static library $(LIB_TARGET)..." - @ar rcs $@ $(OBJECTS) - @echo "✓ libtikker.a created" - -$(LIB_DIR): - @mkdir -p $(LIB_DIR) - -clean: - @rm -rf $(OBJ_DIR) - @rm -f $(LIB_TARGET) - @echo "✓ libtikker cleaned" diff --git a/src/libtikker/include/aggregator.h b/src/libtikker/include/aggregator.h deleted file mode 100644 index b0a7fba..0000000 --- a/src/libtikker/include/aggregator.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef TIKKER_AGGREGATOR_H -#define TIKKER_AGGREGATOR_H - -#include -#include -#include - -typedef struct { - char date[11]; - uint64_t total; -} tikker_daily_entry_t; - -typedef struct { - char date[11]; - uint32_t hour; - uint64_t presses; -} tikker_hourly_entry_t; - -typedef struct { - char week[8]; - uint64_t total; -} tikker_weekly_entry_t; - -typedef enum { - TIKKER_WEEKDAY_SUNDAY = 0, - TIKKER_WEEKDAY_MONDAY = 1, - TIKKER_WEEKDAY_TUESDAY = 2, - TIKKER_WEEKDAY_WEDNESDAY = 3, - TIKKER_WEEKDAY_THURSDAY = 4, - TIKKER_WEEKDAY_FRIDAY = 5, - TIKKER_WEEKDAY_SATURDAY = 6 -} tikker_weekday_t; - -int tikker_aggregate_daily(sqlite3 *db, - tikker_daily_entry_t **entries, - int *count); - -int tikker_aggregate_hourly(sqlite3 *db, - const char *date, - tikker_hourly_entry_t **entries, - int *count); - -int tikker_aggregate_weekly(sqlite3 *db, - tikker_weekly_entry_t **entries, - int *count); - -int tikker_aggregate_weekday(sqlite3 *db, - tikker_weekday_stat_t **entries, - int *count); - -int tikker_get_peak_hour(sqlite3 *db, - const char *date, - uint32_t *hour, - uint64_t *presses); - -int tikker_get_peak_day(sqlite3 *db, - char *date, - uint64_t *presses); - -int tikker_get_daily_average(sqlite3 *db, - uint64_t *avg_presses, - int *num_days); - -uint64_t tikker_calculate_total_presses(sqlite3 *db); -uint64_t tikker_calculate_total_releases(sqlite3 *db); -uint64_t tikker_calculate_total_repeats(sqlite3 *db); - -void tikker_free_daily_entries(tikker_daily_entry_t *entries, int count); -void tikker_free_hourly_entries(tikker_hourly_entry_t *entries, int count); -void tikker_free_weekly_entries(tikker_weekly_entry_t *entries, int count); - -#endif diff --git a/src/libtikker/include/config.h b/src/libtikker/include/config.h deleted file mode 100644 index 5c19ff8..0000000 --- a/src/libtikker/include/config.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef TIKKER_CONFIG_H -#define TIKKER_CONFIG_H - -#define TIKKER_VERSION "2.0.0-enterprise" -#define TIKKER_VERSION_MAJOR 2 -#define TIKKER_VERSION_MINOR 0 -#define TIKKER_VERSION_PATCH 0 - -#define TIKKER_DEFAULT_DB_PATH "tikker.db" -#define TIKKER_DEFAULT_LOGS_DIR "logs_plain" -#define TIKKER_DEFAULT_CACHE_DIR "tikker_cache" -#define TIKKER_DEFAULT_TAGS_DB "tags.db" -#define TIKKER_DEFAULT_LOGS_DB "logs.db" - -#define TIKKER_TEXT_BUFFER_INITIAL 4096 -#define TIKKER_TEXT_BUFFER_MAX (1024 * 1024 * 100) - -#define TIKKER_MAX_KEYCODE 256 -#define TIKKER_MAX_KEY_NAME 32 -#define TIKKER_MAX_DATE_STR 11 -#define TIKKER_MAX_PATH 4096 - -#define TIKKER_WORD_MIN_LENGTH 2 -#define TIKKER_WORD_MAX_LENGTH 255 - -#define TIKKER_TOP_WORDS_DEFAULT 10 -#define TIKKER_TOP_KEYS_DEFAULT 10 - -#define TIKKER_SHIFT_KEYCODE_LSHIFT 42 -#define TIKKER_SHIFT_KEYCODE_RSHIFT 54 - -#define TIKKER_KEY_SPACE 57 - -#define TIKKER_ENABLE_PROFILING 0 -#define TIKKER_ENABLE_DEBUG 0 - -#endif diff --git a/src/libtikker/include/database.h b/src/libtikker/include/database.h deleted file mode 100644 index 50dd103..0000000 --- a/src/libtikker/include/database.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef TIKKER_DATABASE_H -#define TIKKER_DATABASE_H - -#include -#include - -typedef struct { - const char *db_path; - sqlite3 *conn; - int flags; -} tikker_db_t; - -tikker_db_t* tikker_db_open(const char *path); -void tikker_db_close(tikker_db_t *db); -int tikker_db_init_schema(tikker_db_t *db); -int tikker_db_execute(tikker_db_t *db, const char *sql); -int tikker_db_query(tikker_db_t *db, const char *sql, - int (*callback)(void*, int, char**, char**), - void *arg); -int tikker_db_begin_transaction(tikker_db_t *db); -int tikker_db_commit_transaction(tikker_db_t *db); -int tikker_db_rollback_transaction(tikker_db_t *db); -int tikker_db_vacuum(tikker_db_t *db); -int tikker_db_pragma(tikker_db_t *db, const char *pragma, char *result, size_t result_size); -int tikker_db_integrity_check(tikker_db_t *db); - -#endif diff --git a/src/libtikker/include/decoder.h b/src/libtikker/include/decoder.h deleted file mode 100644 index e89a997..0000000 --- a/src/libtikker/include/decoder.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef TIKKER_DECODER_H -#define TIKKER_DECODER_H - -#include -#include - -#define TIKKER_KEY_SPACE 57 -#define TIKKER_KEY_ENTER 28 -#define TIKKER_KEY_TAB 15 -#define TIKKER_KEY_BACKSPACE 14 -#define TIKKER_KEY_LSHIFT 42 -#define TIKKER_KEY_RSHIFT 54 - -typedef struct { - char *data; - size_t capacity; - size_t length; -} tikker_text_buffer_t; - -tikker_text_buffer_t* tikker_text_buffer_create(size_t initial_capacity); -void tikker_text_buffer_free(tikker_text_buffer_t *buf); -int tikker_text_buffer_append(tikker_text_buffer_t *buf, const char *data, size_t len); -int tikker_text_buffer_append_char(tikker_text_buffer_t *buf, char c); -void tikker_text_buffer_pop(tikker_text_buffer_t *buf); - -int tikker_keycode_to_char(uint32_t keycode, int shift_active, char *out_char); -const char* tikker_keycode_to_name(uint32_t keycode); - -int tikker_decode_file(const char *input_path, const char *output_path); -int tikker_decode_buffer(const char *input, size_t input_len, - tikker_text_buffer_t *output); - -#endif diff --git a/src/libtikker/include/indexer.h b/src/libtikker/include/indexer.h deleted file mode 100644 index 06bee97..0000000 --- a/src/libtikker/include/indexer.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef TIKKER_INDEXER_H -#define TIKKER_INDEXER_H - -#include -#include - -typedef struct { - const char *word; - uint64_t count; - int rank; -} tikker_word_entry_t; - -typedef struct { - sqlite3 *db; - int word_count; - uint64_t total_words; -} tikker_word_index_t; - -tikker_word_index_t* tikker_word_index_open(const char *db_path); -void tikker_word_index_close(tikker_word_index_t *index); -int tikker_word_index_reset(tikker_word_index_t *index); - -int tikker_index_text_file(const char *file_path, - const char *db_path); - -int tikker_index_directory(const char *dir_path, - const char *db_path); - -int tikker_word_index_add(tikker_word_index_t *index, - const char *word, - uint64_t count); - -int tikker_word_index_commit(tikker_word_index_t *index); - -int tikker_word_get_frequency(const char *db_path, - const char *word, - uint64_t *count); - -int tikker_word_get_rank(const char *db_path, - const char *word, - int *rank, - uint64_t *count); - -int tikker_word_get_top(const char *db_path, - int limit, - tikker_word_entry_t **entries, - int *count); - -int tikker_word_get_total_count(const char *db_path, - uint64_t *total); - -int tikker_word_get_unique_count(const char *db_path, - int *count); - -void tikker_word_entries_free(tikker_word_entry_t *entries, int count); - -#endif diff --git a/src/libtikker/include/report.h b/src/libtikker/include/report.h deleted file mode 100644 index 95fc15c..0000000 --- a/src/libtikker/include/report.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef TIKKER_REPORT_H -#define TIKKER_REPORT_H - -#include -#include - -typedef struct { - char *title; - char *data; - size_t data_size; -} tikker_report_t; - -int tikker_merge_text_files(const char *input_dir, - const char *pattern, - const char *output_path); - -void tikker_report_free(tikker_report_t *report); - -#endif diff --git a/src/libtikker/include/tikker.h b/src/libtikker/include/tikker.h deleted file mode 100644 index e87bfa2..0000000 --- a/src/libtikker/include/tikker.h +++ /dev/null @@ -1,138 +0,0 @@ -#ifndef TIKKER_H -#define TIKKER_H - -#include -#include -#include -#include - -#define TIKKER_SUCCESS 0 -#define TIKKER_ERROR_DB -1 -#define TIKKER_ERROR_MEMORY -2 -#define TIKKER_ERROR_IO -3 -#define TIKKER_ERROR_INVALID -4 -#define TIKKER_ERROR_NOT_FOUND -5 - -typedef struct { - sqlite3 *db; - const char *db_path; - uint32_t flags; -} tikker_context_t; - -typedef struct { - const char *word; - uint64_t count; - float percentage; -} tikker_word_stat_t; - -typedef struct { - uint32_t keycode; - const char *key_name; - uint64_t count; -} tikker_key_stat_t; - -typedef struct { - char date[11]; - uint64_t total_presses; - uint64_t total_releases; - uint64_t total_repeats; -} tikker_daily_stat_t; - -typedef struct { - uint32_t hour; - uint64_t presses; -} tikker_hourly_stat_t; - -typedef struct { - char weekday[10]; - uint64_t presses; -} tikker_weekday_stat_t; - -typedef struct { - double decode_time; - double index_time; - double aggregate_time; - uint64_t records_processed; -} tikker_perf_metrics_t; - -tikker_context_t* tikker_open(const char *db_path); -void tikker_close(tikker_context_t *ctx); -int tikker_init_schema(tikker_context_t *ctx); -int tikker_get_version(char *buffer, size_t size); - -int tikker_get_daily_stats(tikker_context_t *ctx, - tikker_daily_stat_t **stats, - int *count); - -int tikker_get_hourly_stats(tikker_context_t *ctx, - const char *date, - tikker_hourly_stat_t **stats, - int *count); - -int tikker_get_weekday_stats(tikker_context_t *ctx, - tikker_weekday_stat_t **stats, - int *count); - -int tikker_get_top_words(tikker_context_t *ctx, - int limit, - tikker_word_stat_t **words, - int *count); - -int tikker_get_top_keys(tikker_context_t *ctx, - int limit, - tikker_key_stat_t **keys, - int *count); - -int tikker_get_date_range(tikker_context_t *ctx, - char *min_date, - char *max_date); - -int tikker_get_event_counts(tikker_context_t *ctx, - uint64_t *pressed, - uint64_t *released, - uint64_t *repeated); - -int tikker_decode_keylog(const char *input_file, - const char *output_file); - -int tikker_decode_keylog_buffer(const char *input, - size_t input_len, - char **output, - size_t *output_len); - -int tikker_index_text_file(const char *file_path, - const char *db_path); - -int tikker_index_directory(const char *dir_path, - const char *db_path); - -int tikker_get_word_frequency(const char *db_path, - const char *word, - uint64_t *count); - -int tikker_get_top_words_from_db(const char *db_path, - int limit, - tikker_word_stat_t **words, - int *count); - -int tikker_generate_html_report(tikker_context_t *ctx, - const char *output_file, - const char *graph_dir); - -int tikker_generate_json_report(tikker_context_t *ctx, - char **json_output); - -int tikker_merge_text_files(const char *input_dir, - const char *pattern, - const char *output_path); - -int tikker_get_metrics(tikker_perf_metrics_t *metrics); - -void tikker_free_words(tikker_word_stat_t *words, int count); -void tikker_free_keys(tikker_key_stat_t *keys, int count); -void tikker_free_daily_stats(tikker_daily_stat_t *stats, int count); -void tikker_free_hourly_stats(tikker_hourly_stat_t *stats, int count); -void tikker_free_weekday_stats(tikker_weekday_stat_t *stats, int count); -void tikker_free_json(char *json); - -#endif diff --git a/src/libtikker/include/types.h b/src/libtikker/include/types.h deleted file mode 100644 index 0e0316b..0000000 --- a/src/libtikker/include/types.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef TIKKER_TYPES_H -#define TIKKER_TYPES_H - -#include -#include -#include - -typedef enum { - TIKKER_LOG_DEBUG = 0, - TIKKER_LOG_INFO = 1, - TIKKER_LOG_WARN = 2, - TIKKER_LOG_ERROR = 3, - TIKKER_LOG_FATAL = 4 -} tikker_log_level_t; - -typedef enum { - TIKKER_EVENT_PRESSED = 0, - TIKKER_EVENT_RELEASED = 1, - TIKKER_EVENT_REPEATED = 2 -} tikker_event_type_t; - -typedef struct { - uint64_t id; - uint32_t keycode; - tikker_event_type_t event; - const char *name; - time_t timestamp; - char character; -} tikker_kevent_t; - -typedef struct { - const char *name; - const char *symbol; - uint32_t code; -} tikker_key_mapping_t; - -typedef struct { - int year; - int month; - int day; - int hour; - int minute; - int second; - int weekday; -} tikker_datetime_t; - -typedef struct { - char *buffer; - size_t capacity; - size_t length; -} tikker_string_t; - -tikker_string_t* tikker_string_create(size_t capacity); -void tikker_string_free(tikker_string_t *str); -int tikker_string_append(tikker_string_t *str, const char *data); -int tikker_string_append_char(tikker_string_t *str, char c); -void tikker_string_clear(tikker_string_t *str); -char* tikker_string_cstr(tikker_string_t *str); - -#endif diff --git a/src/libtikker/src/aggregator.c b/src/libtikker/src/aggregator.c deleted file mode 100644 index 27462c0..0000000 --- a/src/libtikker/src/aggregator.c +++ /dev/null @@ -1,92 +0,0 @@ -#include -#include -#include -#include -#include -#include - -int tikker_aggregate_daily(sqlite3 *db, - tikker_daily_entry_t **entries, - int *count) { - if (!db || !entries || !count) return -1; - *entries = NULL; - *count = 0; - return 0; -} - -int tikker_aggregate_hourly(sqlite3 *db, - const char *date, - tikker_hourly_entry_t **entries, - int *count) { - if (!db || !date || !entries || !count) return -1; - *entries = NULL; - *count = 0; - return 0; -} - -int tikker_aggregate_weekly(sqlite3 *db, - tikker_weekly_entry_t **entries, - int *count) { - if (!db || !entries || !count) return -1; - *entries = NULL; - *count = 0; - return 0; -} - -int tikker_aggregate_weekday(sqlite3 *db, - tikker_weekday_stat_t **entries, - int *count) { - if (!db || !entries || !count) return -1; - *entries = NULL; - *count = 0; - return 0; -} - -int tikker_get_peak_hour(sqlite3 *db, - const char *date, - uint32_t *hour, - uint64_t *presses) { - if (!db || !date || !hour || !presses) return -1; - return 0; -} - -int tikker_get_peak_day(sqlite3 *db, - char *date, - uint64_t *presses) { - if (!db || !date || !presses) return -1; - return 0; -} - -int tikker_get_daily_average(sqlite3 *db, - uint64_t *avg_presses, - int *num_days) { - if (!db || !avg_presses || !num_days) return -1; - return 0; -} - -uint64_t tikker_calculate_total_presses(sqlite3 *db) { - if (!db) return 0; - return 0; -} - -uint64_t tikker_calculate_total_releases(sqlite3 *db) { - if (!db) return 0; - return 0; -} - -uint64_t tikker_calculate_total_repeats(sqlite3 *db) { - if (!db) return 0; - return 0; -} - -void tikker_free_daily_entries(tikker_daily_entry_t *entries, int count) { - if (entries) free(entries); -} - -void tikker_free_hourly_entries(tikker_hourly_entry_t *entries, int count) { - if (entries) free(entries); -} - -void tikker_free_weekly_entries(tikker_weekly_entry_t *entries, int count) { - if (entries) free(entries); -} diff --git a/src/libtikker/src/database.c b/src/libtikker/src/database.c deleted file mode 100644 index f3403f3..0000000 --- a/src/libtikker/src/database.c +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include -#include -#include - -tikker_db_t* tikker_db_open(const char *path) { - if (!path) return NULL; - tikker_db_t *db = malloc(sizeof(tikker_db_t)); - if (!db) return NULL; - db->db_path = path; - db->flags = 0; - int ret = sqlite3_open(path, &db->conn); - if (ret != SQLITE_OK) { free(db); return NULL; } - return db; -} - -void tikker_db_close(tikker_db_t *db) { - if (!db) return; - if (db->conn) sqlite3_close(db->conn); - free(db); -} - -int tikker_db_init_schema(tikker_db_t *db) { - if (!db || !db->conn) return -1; - return 0; -} - -int tikker_db_execute(tikker_db_t *db, const char *sql) { - if (!db || !db->conn || !sql) return -1; - char *errmsg = NULL; - int ret = sqlite3_exec(db->conn, sql, NULL, NULL, &errmsg); - if (errmsg) sqlite3_free(errmsg); - return ret == SQLITE_OK ? 0 : -1; -} - -int tikker_db_query(tikker_db_t *db, const char *sql, - int (*callback)(void*, int, char**, char**), - void *arg) { - if (!db || !db->conn || !sql) return -1; - char *errmsg = NULL; - int ret = sqlite3_exec(db->conn, sql, callback, arg, &errmsg); - if (errmsg) sqlite3_free(errmsg); - return ret == SQLITE_OK ? 0 : -1; -} - -int tikker_db_begin_transaction(tikker_db_t *db) { - if (!db || !db->conn) return -1; - return tikker_db_execute(db, "BEGIN TRANSACTION;"); -} - -int tikker_db_commit_transaction(tikker_db_t *db) { - if (!db || !db->conn) return -1; - return tikker_db_execute(db, "COMMIT;"); -} - -int tikker_db_rollback_transaction(tikker_db_t *db) { - if (!db || !db->conn) return -1; - return tikker_db_execute(db, "ROLLBACK;"); -} - -int tikker_db_vacuum(tikker_db_t *db) { - if (!db || !db->conn) return -1; - return tikker_db_execute(db, "VACUUM;"); -} - -int tikker_db_pragma(tikker_db_t *db, const char *pragma, char *result, size_t result_size) { - if (!db || !db->conn || !pragma || !result) return -1; - - char sql[512]; - snprintf(sql, sizeof(sql), "PRAGMA %s", pragma); - - sqlite3_stmt *stmt; - if (sqlite3_prepare_v2(db->conn, sql, -1, &stmt, NULL) == SQLITE_OK) { - if (sqlite3_step(stmt) == SQLITE_ROW) { - const unsigned char *text = sqlite3_column_text(stmt, 0); - if (text) { - snprintf(result, result_size, "%s", (const char *)text); - } - } - sqlite3_finalize(stmt); - return 0; - } - return -1; -} - -int tikker_db_integrity_check(tikker_db_t *db) { - if (!db || !db->conn) return -1; - return tikker_db_execute(db, "PRAGMA integrity_check;"); -} diff --git a/src/libtikker/src/decoder.c b/src/libtikker/src/decoder.c deleted file mode 100644 index 468f43b..0000000 --- a/src/libtikker/src/decoder.c +++ /dev/null @@ -1,201 +0,0 @@ -#include -#include -#include -#include -#include - -static const char *keycode_names[] = { - "NONE", "ESC", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", - "BACKSPACE", "TAB", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", - "[", "]", "ENTER", "L_CTRL", "A", "S", "D", "F", "G", "H", "J", "K", - "L", ";", "'", "`", "L_SHIFT", "\\", "Z", "X", "C", "V", "B", "N", "M", - ",", ".", "/", "R_SHIFT", "*", "L_ALT", "SPACE", "CAPSLOCK" -}; - -tikker_text_buffer_t* tikker_text_buffer_create(size_t initial_capacity) { - tikker_text_buffer_t *buf = malloc(sizeof(tikker_text_buffer_t)); - if (!buf) return NULL; - buf->capacity = initial_capacity ? initial_capacity : 4096; - buf->data = malloc(buf->capacity); - if (!buf->data) { free(buf); return NULL; } - buf->length = 0; - return buf; -} - -void tikker_text_buffer_free(tikker_text_buffer_t *buf) { - if (!buf) return; - if (buf->data) free(buf->data); - free(buf); -} - -int tikker_text_buffer_append(tikker_text_buffer_t *buf, const char *data, size_t len) { - if (!buf || !data) return -1; - if (buf->length + len >= buf->capacity) { - size_t new_capacity = buf->capacity * 2; - while (new_capacity < buf->length + len + 1) new_capacity *= 2; - char *new_data = realloc(buf->data, new_capacity); - if (!new_data) return -1; - buf->data = new_data; - buf->capacity = new_capacity; - } - memcpy(buf->data + buf->length, data, len); - buf->length += len; - buf->data[buf->length] = '\0'; - return 0; -} - -int tikker_text_buffer_append_char(tikker_text_buffer_t *buf, char c) { - return tikker_text_buffer_append(buf, &c, 1); -} - -void tikker_text_buffer_pop(tikker_text_buffer_t *buf) { - if (!buf || buf->length == 0) return; - buf->length--; - buf->data[buf->length] = '\0'; -} - -int tikker_keycode_to_char(uint32_t keycode, int shift_active, char *out_char) { - if (!out_char) return -1; - if (keycode >= 2 && keycode <= 11) { - char base = '0' + (keycode - 2); - if (shift_active) { - const char *shifted[] = {"!", "@", "#", "$", "%", "^", "&", "*", "(", ")"}; - *out_char = shifted[keycode - 2][0]; - } else { - *out_char = base; - } - return 0; - } - if (keycode >= 16 && keycode <= 25) { - *out_char = 'a' + (keycode - 16); - if (shift_active) *out_char = (*out_char) - 32; - return 0; - } - if (keycode == TIKKER_KEY_SPACE) { *out_char = ' '; return 0; } - *out_char = '?'; - return 1; -} - -const char* tikker_keycode_to_name(uint32_t keycode) { - if (keycode < sizeof(keycode_names) / sizeof(keycode_names[0])) return keycode_names[keycode]; - return "UNKNOWN"; -} - -static const char* shift_number_map[] = { - "!", "@", "#", "$", "%", "^", "&", "*", "(", ")" -}; - -int tikker_decode_buffer(const char *input, size_t input_len, - tikker_text_buffer_t *output) { - if (!input || !output) return -1; - - int shift_active = 0; - size_t i = 0; - - while (i < input_len) { - if (input[i] == '[') { - size_t j = i + 1; - while (j < input_len && input[j] != ']') j++; - - if (j >= input_len) return -1; - - size_t token_len = j - i - 1; - char token[256]; - if (token_len >= sizeof(token)) return -1; - - memcpy(token, input + i + 1, token_len); - token[token_len] = '\0'; - - if (strcmp(token, "LEFT_SHIFT") == 0 || strcmp(token, "R_SHIFT") == 0) { - shift_active = 1; - } else if (strcmp(token, "BACKSPACE") == 0) { - tikker_text_buffer_pop(output); - } else if (strcmp(token, "TAB") == 0) { - tikker_text_buffer_append_char(output, '\t'); - } else if (strcmp(token, "ENTER") == 0) { - tikker_text_buffer_append_char(output, '\n'); - } else if (strcmp(token, "UP") == 0 || strcmp(token, "DOWN") == 0 || - strcmp(token, "LEFT") == 0 || strcmp(token, "RIGHT") == 0) { - } else if (token_len == 1) { - char c = token[0]; - if (shift_active) { - if (c >= 'a' && c <= 'z') { - c = c - 32; - } else if (c >= '0' && c <= '9') { - c = shift_number_map[c - '0'][0]; - } - shift_active = 0; - } else { - if (c >= 'A' && c <= 'Z') { - c = c + 32; - } - } - tikker_text_buffer_append_char(output, c); - } - - i = j + 1; - } else if (input[i] == ' ' || input[i] == '\t' || input[i] == '\n') { - i++; - } else { - i++; - } - } - - return 0; -} - -int tikker_decode_file(const char *input_path, const char *output_path) { - if (!input_path || !output_path) return -1; - - FILE *input_file = fopen(input_path, "r"); - if (!input_file) return -1; - - fseek(input_file, 0, SEEK_END); - long file_size = ftell(input_file); - fseek(input_file, 0, SEEK_SET); - - if (file_size <= 0) { - fclose(input_file); - return -1; - } - - char *buffer = malloc(file_size); - if (!buffer) { - fclose(input_file); - return -1; - } - - size_t read_bytes = fread(buffer, 1, file_size, input_file); - fclose(input_file); - - if (read_bytes != (size_t)file_size) { - free(buffer); - return -1; - } - - tikker_text_buffer_t *output_buf = tikker_text_buffer_create(file_size); - if (!output_buf) { - free(buffer); - return -1; - } - - int ret = tikker_decode_buffer(buffer, file_size, output_buf); - free(buffer); - - if (ret != 0) { - tikker_text_buffer_free(output_buf); - return -1; - } - - FILE *output_file = fopen(output_path, "w"); - if (!output_file) { - tikker_text_buffer_free(output_buf); - return -1; - } - - fwrite(output_buf->data, 1, output_buf->length, output_file); - fclose(output_file); - - tikker_text_buffer_free(output_buf); - return 0; -} diff --git a/src/libtikker/src/indexer.c b/src/libtikker/src/indexer.c deleted file mode 100644 index 7e8acaa..0000000 --- a/src/libtikker/src/indexer.c +++ /dev/null @@ -1,329 +0,0 @@ -#define _DEFAULT_SOURCE -#include -#include -#include -#include -#include -#include -#include - -tikker_word_index_t* tikker_word_index_open(const char *db_path) { - if (!db_path) return NULL; - tikker_word_index_t *index = malloc(sizeof(tikker_word_index_t)); - if (!index) return NULL; - int ret = sqlite3_open(db_path, &index->db); - if (ret != SQLITE_OK) { free(index); return NULL; } - index->word_count = 0; - index->total_words = 0; - return index; -} - -void tikker_word_index_close(tikker_word_index_t *index) { - if (!index) return; - if (index->db) sqlite3_close(index->db); - free(index); -} - -static int is_valid_word_char(char c) { - return isalnum(c) || c == '_'; -} - -int tikker_word_index_reset(tikker_word_index_t *index) { - if (!index || !index->db) return -1; - - sqlite3_exec(index->db, "DROP TABLE IF EXISTS words", NULL, NULL, NULL); - - const char *sql = "CREATE TABLE IF NOT EXISTS words (" - "word TEXT NOT NULL PRIMARY KEY," - "count INTEGER NOT NULL)"; - - char *errmsg = NULL; - int ret = sqlite3_exec(index->db, sql, NULL, NULL, &errmsg); - if (errmsg) sqlite3_free(errmsg); - - if (ret == SQLITE_OK) { - index->word_count = 0; - index->total_words = 0; - return 0; - } - return -1; -} - -int tikker_index_text_file(const char *file_path, const char *db_path) { - if (!file_path || !db_path) return -1; - - FILE *f = fopen(file_path, "r"); - if (!f) return -1; - - tikker_word_index_t *index = tikker_word_index_open(db_path); - if (!index) { - fclose(f); - return -1; - } - - char word[256]; - int word_len = 0; - int c; - - while ((c = fgetc(f)) != EOF) { - if (is_valid_word_char(c)) { - if (word_len < (int)sizeof(word) - 1) { - word[word_len++] = tolower(c); - } - } else { - if (word_len > 0) { - word[word_len] = '\0'; - tikker_word_index_add(index, word, 1); - word_len = 0; - } - } - } - - if (word_len > 0) { - word[word_len] = '\0'; - tikker_word_index_add(index, word, 1); - } - - fclose(f); - tikker_word_index_commit(index); - tikker_word_index_close(index); - return 0; -} - -int tikker_index_directory(const char *dir_path, const char *db_path) { - if (!dir_path || !db_path) return -1; - - DIR *dir = opendir(dir_path); - if (!dir) return -1; - - tikker_word_index_t *index = tikker_word_index_open(db_path); - if (!index) { - closedir(dir); - return -1; - } - - struct dirent *entry; - while ((entry = readdir(dir)) != NULL) { - if (entry->d_type == DT_REG && strstr(entry->d_name, ".txt")) { - char file_path[1024]; - snprintf(file_path, sizeof(file_path), "%s/%s", dir_path, entry->d_name); - - FILE *f = fopen(file_path, "r"); - if (f) { - char word[256]; - int word_len = 0; - int c; - - while ((c = fgetc(f)) != EOF) { - if (is_valid_word_char(c)) { - if (word_len < (int)sizeof(word) - 1) { - word[word_len++] = tolower(c); - } - } else { - if (word_len >= 2) { - word[word_len] = '\0'; - tikker_word_index_add(index, word, 1); - } - word_len = 0; - } - } - - if (word_len >= 2) { - word[word_len] = '\0'; - tikker_word_index_add(index, word, 1); - } - - fclose(f); - } - } - } - - closedir(dir); - tikker_word_index_commit(index); - tikker_word_index_close(index); - return 0; -} - -int tikker_word_index_add(tikker_word_index_t *index, const char *word, uint64_t count) { - if (!index || !index->db || !word) return -1; - - sqlite3_stmt *stmt; - const char *sql = "INSERT OR IGNORE INTO words (word, count) VALUES (?, 0); " - "UPDATE words SET count = count + ? WHERE word = ?"; - - if (sqlite3_prepare_v2(index->db, sql, -1, &stmt, NULL) == SQLITE_OK) { - sqlite3_bind_text(stmt, 1, word, -1, SQLITE_STATIC); - sqlite3_bind_int64(stmt, 2, count); - sqlite3_bind_text(stmt, 3, word, -1, SQLITE_STATIC); - - if (sqlite3_step(stmt) == SQLITE_DONE) { - index->word_count++; - index->total_words += count; - } - sqlite3_finalize(stmt); - return 0; - } - return -1; -} - -int tikker_word_index_commit(tikker_word_index_t *index) { - if (!index || !index->db) return -1; - - char *errmsg = NULL; - int ret = sqlite3_exec(index->db, "COMMIT", NULL, NULL, &errmsg); - if (errmsg) sqlite3_free(errmsg); - - return ret == SQLITE_OK ? 0 : -1; -} - -int tikker_word_get_frequency(const char *db_path, const char *word, uint64_t *count) { - if (!db_path || !word || !count) return -1; - - sqlite3 *db; - if (sqlite3_open(db_path, &db) != SQLITE_OK) return -1; - - sqlite3_stmt *stmt; - const char *sql = "SELECT count FROM words WHERE word = ?"; - - if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) { - sqlite3_bind_text(stmt, 1, word, -1, SQLITE_STATIC); - - if (sqlite3_step(stmt) == SQLITE_ROW) { - *count = sqlite3_column_int64(stmt, 0); - sqlite3_finalize(stmt); - sqlite3_close(db); - return 0; - } - sqlite3_finalize(stmt); - } - - *count = 0; - sqlite3_close(db); - return -1; -} - -int tikker_word_get_rank(const char *db_path, const char *word, int *rank, uint64_t *count) { - if (!db_path || !word || !rank || !count) return -1; - - sqlite3 *db; - if (sqlite3_open(db_path, &db) != SQLITE_OK) return -1; - - sqlite3_stmt *stmt; - const char *sql = "SELECT COUNT(*) + 1 FROM words WHERE count > (SELECT count FROM words WHERE word = ?)"; - - if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) { - sqlite3_bind_text(stmt, 1, word, -1, SQLITE_STATIC); - - if (sqlite3_step(stmt) == SQLITE_ROW) { - *rank = sqlite3_column_int(stmt, 0); - sqlite3_finalize(stmt); - - tikker_word_get_frequency(db_path, word, count); - sqlite3_close(db); - return 0; - } - sqlite3_finalize(stmt); - } - - sqlite3_close(db); - return -1; -} - -int tikker_word_get_top(const char *db_path, int limit, tikker_word_entry_t **entries, int *count) { - if (!db_path || limit <= 0 || !entries || !count) return -1; - - sqlite3 *db; - if (sqlite3_open(db_path, &db) != SQLITE_OK) return -1; - - sqlite3_stmt *stmt; - const char *sql = "SELECT word, count FROM words ORDER BY count DESC LIMIT ?"; - - if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) != SQLITE_OK) { - sqlite3_close(db); - return -1; - } - - sqlite3_bind_int(stmt, 1, limit); - - int result_count = 0; - tikker_word_entry_t *result = malloc(limit * sizeof(tikker_word_entry_t)); - if (!result) { - sqlite3_finalize(stmt); - sqlite3_close(db); - return -1; - } - - while (sqlite3_step(stmt) == SQLITE_ROW && result_count < limit) { - const char *word_str = (const char *)sqlite3_column_text(stmt, 0); - uint64_t word_count = sqlite3_column_int64(stmt, 1); - - result[result_count].word = strdup(word_str); - result[result_count].count = word_count; - result[result_count].rank = result_count + 1; - result_count++; - } - - sqlite3_finalize(stmt); - sqlite3_close(db); - - *entries = result; - *count = result_count; - return 0; -} - -int tikker_word_get_total_count(const char *db_path, uint64_t *total) { - if (!db_path || !total) return -1; - - sqlite3 *db; - if (sqlite3_open(db_path, &db) != SQLITE_OK) return -1; - - sqlite3_stmt *stmt; - const char *sql = "SELECT SUM(count) FROM words"; - - if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) { - if (sqlite3_step(stmt) == SQLITE_ROW) { - *total = sqlite3_column_int64(stmt, 0); - sqlite3_finalize(stmt); - sqlite3_close(db); - return 0; - } - sqlite3_finalize(stmt); - } - - *total = 0; - sqlite3_close(db); - return -1; -} - -int tikker_word_get_unique_count(const char *db_path, int *count) { - if (!db_path || !count) return -1; - - sqlite3 *db; - if (sqlite3_open(db_path, &db) != SQLITE_OK) return -1; - - sqlite3_stmt *stmt; - const char *sql = "SELECT COUNT(*) FROM words"; - - if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) { - if (sqlite3_step(stmt) == SQLITE_ROW) { - *count = sqlite3_column_int(stmt, 0); - sqlite3_finalize(stmt); - sqlite3_close(db); - return 0; - } - sqlite3_finalize(stmt); - } - - *count = 0; - sqlite3_close(db); - return -1; -} - -void tikker_word_entries_free(tikker_word_entry_t *entries, int count) { - if (entries) { - for (int i = 0; i < count; i++) { - if (entries[i].word) free((char *)entries[i].word); - } - free(entries); - } -} diff --git a/src/libtikker/src/report.c b/src/libtikker/src/report.c deleted file mode 100644 index 54cb52c..0000000 --- a/src/libtikker/src/report.c +++ /dev/null @@ -1,143 +0,0 @@ -#define _DEFAULT_SOURCE -#include -#include -#include -#include -#include -#include - -int tikker_merge_text_files(const char *input_dir, const char *pattern, const char *output_path) { - if (!input_dir || !output_path) return -1; - - DIR *dir = opendir(input_dir); - if (!dir) return -1; - - FILE *output_file = fopen(output_path, "w"); - if (!output_file) { - closedir(dir); - return -1; - } - - struct dirent *entry; - int first = 1; - - while ((entry = readdir(dir)) != NULL) { - if (entry->d_type == DT_REG && strstr(entry->d_name, ".txt")) { - if (strcmp(entry->d_name, "merged.txt") == 0) continue; - - char file_path[1024]; - snprintf(file_path, sizeof(file_path), "%s/%s", input_dir, entry->d_name); - - FILE *input_file = fopen(file_path, "r"); - if (input_file) { - if (!first) { - fprintf(output_file, "\n\n"); - } - first = 0; - - char buffer[4096]; - size_t bytes_read; - while ((bytes_read = fread(buffer, 1, sizeof(buffer), input_file)) > 0) { - fwrite(buffer, 1, bytes_read, output_file); - } - - fclose(input_file); - } - } - } - - closedir(dir); - fclose(output_file); - return 0; -} - -static int count_token_in_file(const char *file_path, const char *token) { - FILE *f = fopen(file_path, "r"); - if (!f) return 0; - - int count = 0; - char buffer[4096]; - size_t bytes_read; - - while ((bytes_read = fread(buffer, 1, sizeof(buffer), f)) > 0) { - for (size_t i = 0; i < bytes_read; ) { - if (buffer[i] == '[') { - size_t j = i + 1; - while (j < bytes_read && buffer[j] != ']') j++; - if (j < bytes_read && strcmp(token, "ENTER") == 0) { - if (j - i - 1 == 5 && strncmp(buffer + i + 1, "ENTER", 5) == 0) { - count++; - } - } - i = j + 1; - } else { - i++; - } - } - } - - fclose(f); - return count; -} - -static int internal_generate_html(sqlite3 *db, const char *output_file, const char *title) { - if (!db || !output_file) return -1; - - FILE *f = fopen(output_file, "w"); - if (!f) return -1; - - fprintf(f, "\n"); - fprintf(f, "\n"); - fprintf(f, "\n"); - - if (title) { - fprintf(f, "

%s

\n", title); - } - - fprintf(f, "
\n"); - fprintf(f, "

Report generated by Tikker

\n"); - fprintf(f, "
\n"); - - fprintf(f, "\n"); - fprintf(f, "\n"); - - fclose(f); - return 0; -} - -static int internal_generate_json(sqlite3 *db, char **json_output) { - if (!db || !json_output) return -1; - - size_t buffer_size = 8192; - char *buffer = malloc(buffer_size); - if (!buffer) return -1; - - snprintf(buffer, buffer_size, "{\"status\":\"success\",\"timestamp\":%ld}", (long)time(NULL)); - - *json_output = buffer; - return 0; -} - -static int internal_generate_summary(sqlite3 *db, char *buffer, size_t buffer_size) { - if (!db || !buffer || buffer_size == 0) return -1; - - snprintf(buffer, buffer_size, - "Tikker Statistics Summary\n" - "========================\n" - "Database: %s\n" - "Generated: %s\n", - "tikker.db", __DATE__); - - return 0; -} - -void tikker_report_free(tikker_report_t *report) { - if (!report) return; - if (report->title) free(report->title); - if (report->data) free(report->data); - free(report); -} diff --git a/src/libtikker/src/tikker.c b/src/libtikker/src/tikker.c deleted file mode 100644 index bcacd8e..0000000 --- a/src/libtikker/src/tikker.c +++ /dev/null @@ -1,246 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -tikker_context_t* tikker_open(const char *db_path) { - tikker_context_t *ctx = malloc(sizeof(tikker_context_t)); - if (!ctx) return NULL; - - ctx->db_path = db_path ? strdup(db_path) : strdup(TIKKER_DEFAULT_DB_PATH); - ctx->flags = 0; - - int ret = sqlite3_open(ctx->db_path, &ctx->db); - if (ret != SQLITE_OK) { - free((void*)ctx->db_path); - free(ctx); - return NULL; - } - - return ctx; -} - -void tikker_close(tikker_context_t *ctx) { - if (!ctx) return; - if (ctx->db) sqlite3_close(ctx->db); - if (ctx->db_path) free((void*)ctx->db_path); - free(ctx); -} - -int tikker_init_schema(tikker_context_t *ctx) { - if (!ctx || !ctx->db) return TIKKER_ERROR_DB; - - const char *schema = "CREATE TABLE IF NOT EXISTS kevent (" - "id INTEGER PRIMARY KEY AUTOINCREMENT," - "code INTEGER," - "event TEXT," - "name TEXT," - "timestamp DATETIME DEFAULT CURRENT_TIMESTAMP," - "char TEXT" - ");" - "CREATE INDEX IF NOT EXISTS idx_kevent_event ON kevent(event);" - "CREATE VIEW IF NOT EXISTS presses_per_hour AS " - "SELECT COUNT(0) as press_count, " - "(SELECT COUNT(0) FROM kevent) as total, " - "strftime('%Y-%m-%d.%H', timestamp) as period " - "FROM kevent WHERE event='PRESSED' GROUP BY period;"; - - char *errmsg = NULL; - int ret = sqlite3_exec(ctx->db, schema, NULL, NULL, &errmsg); - if (ret != SQLITE_OK) { - if (errmsg) sqlite3_free(errmsg); - return TIKKER_ERROR_DB; - } - - return TIKKER_SUCCESS; -} - -int tikker_get_version(char *buffer, size_t size) { - if (!buffer || size < strlen(TIKKER_VERSION) + 1) { - return TIKKER_ERROR_INVALID; - } - strncpy(buffer, TIKKER_VERSION, size - 1); - buffer[size - 1] = '\0'; - return TIKKER_SUCCESS; -} - -int tikker_get_daily_stats(tikker_context_t *ctx, - tikker_daily_stat_t **stats, - int *count) { - if (!ctx || !stats || !count) return TIKKER_ERROR_INVALID; - *stats = NULL; - *count = 0; - return TIKKER_SUCCESS; -} - -int tikker_get_hourly_stats(tikker_context_t *ctx, - const char *date, - tikker_hourly_stat_t **stats, - int *count) { - if (!ctx || !date || !stats || !count) return TIKKER_ERROR_INVALID; - *stats = NULL; - *count = 0; - return TIKKER_SUCCESS; -} - -int tikker_get_weekday_stats(tikker_context_t *ctx, - tikker_weekday_stat_t **stats, - int *count) { - if (!ctx || !stats || !count) return TIKKER_ERROR_INVALID; - *stats = NULL; - *count = 0; - return TIKKER_SUCCESS; -} - -int tikker_get_top_words(tikker_context_t *ctx, - int limit, - tikker_word_stat_t **words, - int *count) { - if (!ctx || limit <= 0 || !words || !count) return TIKKER_ERROR_INVALID; - *words = NULL; - *count = 0; - return TIKKER_SUCCESS; -} - -int tikker_get_top_keys(tikker_context_t *ctx, - int limit, - tikker_key_stat_t **keys, - int *count) { - if (!ctx || limit <= 0 || !keys || !count) return TIKKER_ERROR_INVALID; - *keys = NULL; - *count = 0; - return TIKKER_SUCCESS; -} - -int tikker_get_date_range(tikker_context_t *ctx, - char *min_date, - char *max_date) { - if (!ctx || !min_date || !max_date) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -int tikker_get_event_counts(tikker_context_t *ctx, - uint64_t *pressed, - uint64_t *released, - uint64_t *repeated) { - if (!ctx || !pressed || !released || !repeated) return TIKKER_ERROR_INVALID; - *pressed = 0; - *released = 0; - *repeated = 0; - return TIKKER_SUCCESS; -} - -int tikker_decode_keylog(const char *input_file, - const char *output_file) { - if (!input_file || !output_file) return TIKKER_ERROR_INVALID; - if (tikker_decode_file(input_file, output_file) != 0) { - return TIKKER_ERROR_IO; - } - return TIKKER_SUCCESS; -} - -int tikker_decode_keylog_buffer(const char *input, - size_t input_len, - char **output, - size_t *output_len) { - if (!input || !output || !output_len) return TIKKER_ERROR_INVALID; - - tikker_text_buffer_t *buf = tikker_text_buffer_create(input_len); - if (!buf) return TIKKER_ERROR_MEMORY; - - if (tikker_decode_buffer(input, input_len, buf) != 0) { - tikker_text_buffer_free(buf); - return TIKKER_ERROR_IO; - } - - *output = malloc(buf->length + 1); - if (!*output) { - tikker_text_buffer_free(buf); - return TIKKER_ERROR_MEMORY; - } - - memcpy(*output, buf->data, buf->length + 1); - *output_len = buf->length; - - tikker_text_buffer_free(buf); - return TIKKER_SUCCESS; -} - -int tikker_index_text_file(const char *file_path, - const char *db_path) { - if (!file_path || !db_path) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -int tikker_index_directory(const char *dir_path, - const char *db_path) { - if (!dir_path || !db_path) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -int tikker_get_word_frequency(const char *db_path, - const char *word, - uint64_t *count) { - if (!db_path || !word || !count) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -int tikker_get_top_words_from_db(const char *db_path, - int limit, - tikker_word_stat_t **words, - int *count) { - if (!db_path || limit <= 0 || !words || !count) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -int tikker_generate_html_report(tikker_context_t *ctx, - const char *output_file, - const char *graph_dir) { - if (!ctx || !output_file) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -int tikker_generate_json_report(tikker_context_t *ctx, - char **json_output) { - if (!ctx || !json_output) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -int tikker_merge_text_files(const char *input_dir, - const char *pattern, - const char *output_path) { - if (!input_dir || !output_path) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -int tikker_get_metrics(tikker_perf_metrics_t *metrics) { - if (!metrics) return TIKKER_ERROR_INVALID; - return TIKKER_SUCCESS; -} - -void tikker_free_words(tikker_word_stat_t *words, int count) { - if (words) free(words); -} - -void tikker_free_keys(tikker_key_stat_t *keys, int count) { - if (keys) free(keys); -} - -void tikker_free_daily_stats(tikker_daily_stat_t *stats, int count) { - if (stats) free(stats); -} - -void tikker_free_hourly_stats(tikker_hourly_stat_t *stats, int count) { - if (stats) free(stats); -} - -void tikker_free_weekday_stats(tikker_weekday_stat_t *stats, int count) { - if (stats) free(stats); -} - -void tikker_free_json(char *json) { - if (json) free(json); -} diff --git a/src/libtikker/src/utils.c b/src/libtikker/src/utils.c deleted file mode 100644 index bb5cba6..0000000 --- a/src/libtikker/src/utils.c +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#include -#include - -tikker_string_t* tikker_string_create(size_t capacity) { - tikker_string_t *str = malloc(sizeof(tikker_string_t)); - if (!str) return NULL; - str->capacity = capacity ? capacity : 256; - str->buffer = malloc(str->capacity); - if (!str->buffer) { free(str); return NULL; } - str->length = 0; - str->buffer[0] = '\0'; - return str; -} - -void tikker_string_free(tikker_string_t *str) { - if (!str) return; - if (str->buffer) free(str->buffer); - free(str); -} - -int tikker_string_append(tikker_string_t *str, const char *data) { - if (!str || !data) return -1; - size_t data_len = strlen(data); - if (str->length + data_len >= str->capacity) { - size_t new_capacity = str->capacity * 2; - while (new_capacity <= str->length + data_len) new_capacity *= 2; - char *new_buffer = realloc(str->buffer, new_capacity); - if (!new_buffer) return -1; - str->buffer = new_buffer; - str->capacity = new_capacity; - } - strcpy(str->buffer + str->length, data); - str->length += data_len; - return 0; -} - -int tikker_string_append_char(tikker_string_t *str, char c) { - if (!str) return -1; - if (str->length + 1 >= str->capacity) { - size_t new_capacity = str->capacity * 2; - char *new_buffer = realloc(str->buffer, new_capacity); - if (!new_buffer) return -1; - str->buffer = new_buffer; - str->capacity = new_capacity; - } - str->buffer[str->length] = c; - str->length++; - str->buffer[str->length] = '\0'; - return 0; -} - -void tikker_string_clear(tikker_string_t *str) { - if (!str) return; - str->length = 0; - str->buffer[0] = '\0'; -} - -char* tikker_string_cstr(tikker_string_t *str) { - if (!str) return NULL; - return str->buffer; -} diff --git a/src/tools/aggregator/Makefile b/src/tools/aggregator/Makefile deleted file mode 100644 index 7a3031c..0000000 --- a/src/tools/aggregator/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -CC ?= gcc -CFLAGS ?= -Wall -Wextra -pedantic -std=c11 -O2 -CFLAGS += -I../../libtikker/include -I../../third_party - -BIN_DIR ?= ../../../build/bin -LIB_DIR ?= ../../../build/lib -LDFLAGS ?= -L$(LIB_DIR) -ltikker -lsqlite3 -lm - -TARGET := $(BIN_DIR)/tikker-aggregator - -.PHONY: all clean - -all: $(TARGET) - -$(BIN_DIR): - @mkdir -p $(BIN_DIR) - -$(TARGET): main.c | $(BIN_DIR) - @echo "Building tikker-aggregator..." - @$(CC) $(CFLAGS) main.c -o $@ $(LDFLAGS) - @echo "✓ tikker-aggregator built" - -clean: - @rm -f $(TARGET) - @echo "✓ aggregator cleaned" diff --git a/src/tools/aggregator/main.c b/src/tools/aggregator/main.c deleted file mode 100644 index 8639c98..0000000 --- a/src/tools/aggregator/main.c +++ /dev/null @@ -1,152 +0,0 @@ -#include -#include -#include -#include - -void print_usage(const char *prog) { - printf("Usage: %s [options]\n\n", prog); - printf("Options:\n"); - printf(" --daily Generate daily statistics\n"); - printf(" --hourly Generate hourly stats for specific date\n"); - printf(" --weekly Generate weekly statistics\n"); - printf(" --weekday Generate weekday comparison\n"); - printf(" --top-keys [N] Show top N keys (default: 10)\n"); - printf(" --top-words [N] Show top N words (default: 10)\n"); - printf(" --format Output format: json, csv, text (default: text)\n"); - printf(" --output Write to file instead of stdout\n"); - printf(" --database Use custom database (default: tikker.db)\n"); - printf(" --help Show this help message\n"); -} - -int main(int argc, char *argv[]) { - const char *db_path = "tikker.db"; - const char *action = NULL; - const char *date_filter = NULL; - const char *format = "text"; - const char *output_file = NULL; - int top_count = 10; - FILE *out = stdout; - int i; - - if (argc < 2) { - print_usage(argv[0]); - return 1; - } - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "--help") == 0) { - print_usage(argv[0]); - return 0; - } else if (strcmp(argv[i], "--database") == 0) { - if (i + 1 < argc) { - db_path = argv[++i]; - } - } else if (strcmp(argv[i], "--daily") == 0) { - action = "daily"; - } else if (strcmp(argv[i], "--hourly") == 0) { - action = "hourly"; - if (i + 1 < argc) { - date_filter = argv[++i]; - } - } else if (strcmp(argv[i], "--weekly") == 0) { - action = "weekly"; - } else if (strcmp(argv[i], "--weekday") == 0) { - action = "weekday"; - } else if (strcmp(argv[i], "--format") == 0) { - if (i + 1 < argc) { - format = argv[++i]; - } - } else if (strcmp(argv[i], "--output") == 0) { - if (i + 1 < argc) { - output_file = argv[++i]; - } - } else if (strcmp(argv[i], "--top-keys") == 0 || strcmp(argv[i], "--top-words") == 0) { - if (i + 1 < argc && argv[i + 1][0] != '-') { - top_count = atoi(argv[++i]); - if (top_count <= 0) top_count = 10; - } - } - } - - if (!action) { - fprintf(stderr, "Error: Please specify an action (--daily, --hourly, --weekly, or --weekday)\n"); - print_usage(argv[0]); - return 1; - } - - if (output_file) { - out = fopen(output_file, "w"); - if (!out) { - fprintf(stderr, "Error: Cannot open output file '%s'\n", output_file); - return 1; - } - } - - tikker_context_t *ctx = tikker_open(db_path); - if (!ctx) { - fprintf(stderr, "Error: Cannot open database '%s'\n", db_path); - if (out != stdout) fclose(out); - return 1; - } - - if (strcmp(action, "daily") == 0) { - fprintf(out, "Daily Statistics\n"); - fprintf(out, "================\n\n"); - - uint64_t pressed, released, repeated; - tikker_get_event_counts(ctx, &pressed, &released, &repeated); - - fprintf(out, "Total Key Presses: %lu\n", (unsigned long)pressed); - fprintf(out, "Total Releases: %lu\n", (unsigned long)released); - fprintf(out, "Total Repeats: %lu\n", (unsigned long)repeated); - fprintf(out, "Total Events: %lu\n", (unsigned long)(pressed + released + repeated)); - - } else if (strcmp(action, "hourly") == 0) { - if (!date_filter) { - fprintf(stderr, "Error: --hourly requires a date argument (YYYY-MM-DD)\n"); - tikker_close(ctx); - if (out != stdout) fclose(out); - return 1; - } - fprintf(out, "Hourly Statistics for %s\n", date_filter); - fprintf(out, "========================\n\n"); - fprintf(out, "Hour Presses\n"); - fprintf(out, "----- -------\n"); - for (int h = 0; h < 24; h++) { - fprintf(out, "%02d:00 ~1000\n", h); - } - - } else if (strcmp(action, "weekly") == 0) { - fprintf(out, "Weekly Statistics\n"); - fprintf(out, "=================\n\n"); - fprintf(out, "Mon 12500 presses\n"); - fprintf(out, "Tue 13200 presses\n"); - fprintf(out, "Wed 12800 presses\n"); - fprintf(out, "Thu 11900 presses\n"); - fprintf(out, "Fri 13100 presses\n"); - fprintf(out, "Sat 8200 presses\n"); - fprintf(out, "Sun 9100 presses\n"); - - } else if (strcmp(action, "weekday") == 0) { - fprintf(out, "Weekday Comparison\n"); - fprintf(out, "==================\n\n"); - fprintf(out, "Day Total Presses Avg Per Hour\n"); - fprintf(out, "--- -------- ----- --- ---- ----\n"); - fprintf(out, "Monday 12500 521\n"); - fprintf(out, "Tuesday 13200 550\n"); - fprintf(out, "Wednesday 12800 533\n"); - fprintf(out, "Thursday 11900 496\n"); - fprintf(out, "Friday 13100 546\n"); - fprintf(out, "Saturday 8200 342\n"); - fprintf(out, "Sunday 9100 379\n"); - } - - tikker_close(ctx); - if (out != stdout) fclose(out); - - if (output_file) { - printf("✓ Statistics written to %s\n", output_file); - } - - return 0; -} diff --git a/src/tools/decoder/Makefile b/src/tools/decoder/Makefile deleted file mode 100644 index 91fda33..0000000 --- a/src/tools/decoder/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -CC ?= gcc -CFLAGS ?= -Wall -Wextra -pedantic -std=c11 -O2 -CFLAGS += -I../../libtikker/include -I../../third_party - -BIN_DIR ?= ../../../build/bin -LIB_DIR ?= ../../../build/lib -LDFLAGS ?= -L$(LIB_DIR) -ltikker -lsqlite3 -lm - -TARGET := $(BIN_DIR)/tikker-decoder - -.PHONY: all clean - -all: $(TARGET) - -$(BIN_DIR): - @mkdir -p $(BIN_DIR) - -$(TARGET): main.c | $(BIN_DIR) - @echo "Building tikker-decoder..." - @$(CC) $(CFLAGS) main.c -o $@ $(LDFLAGS) - @echo "✓ tikker-decoder built" - -clean: - @rm -f $(TARGET) - @echo "✓ decoder cleaned" diff --git a/src/tools/decoder/main.c b/src/tools/decoder/main.c deleted file mode 100644 index 07ee1f6..0000000 --- a/src/tools/decoder/main.c +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#include -#include - -void print_usage(const char *prog) { - printf("Usage: %s [options] \n", prog); - printf("\nOptions:\n"); - printf(" --verbose Show processing progress\n"); - printf(" --stats Print decoding statistics\n"); - printf(" --help Show this help message\n"); -} - -int main(int argc, char *argv[]) { - if (argc < 2) { - print_usage(argv[0]); - return 1; - } - - int verbose = 0; - int show_stats = 0; - const char *input_file = NULL; - const char *output_file = NULL; - - for (int i = 1; i < argc; i++) { - if (strcmp(argv[i], "--verbose") == 0) { - verbose = 1; - } else if (strcmp(argv[i], "--stats") == 0) { - show_stats = 1; - } else if (strcmp(argv[i], "--help") == 0) { - print_usage(argv[0]); - return 0; - } else if (argv[i][0] != '-') { - if (!input_file) { - input_file = argv[i]; - } else if (!output_file) { - output_file = argv[i]; - } - } - } - - if (!input_file || !output_file) { - fprintf(stderr, "Error: input and output files required\n"); - print_usage(argv[0]); - return 1; - } - - if (verbose) { - printf("Decoding keylog: %s -> %s\n", input_file, output_file); - } - - int ret = tikker_decode_keylog(input_file, output_file); - if (ret != 0) { - fprintf(stderr, "Error: Failed to decode keylog\n"); - return 1; - } - - if (verbose) { - printf("✓ Decoding complete\n"); - } - - return 0; -} diff --git a/src/tools/indexer/Makefile b/src/tools/indexer/Makefile deleted file mode 100644 index 3f0d1c6..0000000 --- a/src/tools/indexer/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -CC ?= gcc -CFLAGS ?= -Wall -Wextra -pedantic -std=c11 -O2 -CFLAGS += -I../../libtikker/include -I../../third_party - -BIN_DIR ?= ../../../build/bin -LIB_DIR ?= ../../../build/lib -LDFLAGS ?= -L$(LIB_DIR) -ltikker -lsqlite3 -lm - -TARGET := $(BIN_DIR)/tikker-indexer - -.PHONY: all clean - -all: $(TARGET) - -$(BIN_DIR): - @mkdir -p $(BIN_DIR) - -$(TARGET): main.c | $(BIN_DIR) - @echo "Building tikker-indexer..." - @$(CC) $(CFLAGS) main.c -o $@ $(LDFLAGS) - @echo "✓ tikker-indexer built" - -clean: - @rm -f $(TARGET) - @echo "✓ indexer cleaned" diff --git a/src/tools/indexer/main.c b/src/tools/indexer/main.c deleted file mode 100644 index d0397ce..0000000 --- a/src/tools/indexer/main.c +++ /dev/null @@ -1,135 +0,0 @@ -#include -#include -#include -#include -#include - -void print_usage(const char *prog) { - printf("Usage: %s [options]\n\n", prog); - printf("Options:\n"); - printf(" --index Build word index from logs_plain directory\n"); - printf(" --popular [N] Show top N most popular words (default: 10)\n"); - printf(" --find Find frequency of a specific word\n"); - printf(" --database Use custom database (default: tags.db)\n"); - printf(" --help Show this help message\n"); -} - -int main(int argc, char *argv[]) { - const char *db_path = "tags.db"; - const char *action = NULL; - const char *word_to_find = NULL; - int popular_count = 10; - int i; - - if (argc < 2) { - print_usage(argv[0]); - return 1; - } - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "--help") == 0) { - print_usage(argv[0]); - return 0; - } else if (strcmp(argv[i], "--database") == 0) { - if (i + 1 < argc) { - db_path = argv[++i]; - } - } else if (strcmp(argv[i], "--index") == 0) { - action = "index"; - } else if (strcmp(argv[i], "--popular") == 0) { - action = "popular"; - if (i + 1 < argc && argv[i + 1][0] != '-') { - popular_count = atoi(argv[++i]); - if (popular_count <= 0) popular_count = 10; - } - } else if (strcmp(argv[i], "--find") == 0) { - action = "find"; - if (i + 1 < argc) { - word_to_find = argv[++i]; - } - } - } - - if (!action) { - fprintf(stderr, "Error: Please specify an action (--index, --popular, or --find)\n"); - print_usage(argv[0]); - return 1; - } - - if (strcmp(action, "index") == 0) { - printf("Building word index from logs_plain directory...\n"); - int ret = tikker_index_directory("logs_plain", db_path); - if (ret != 0) { - fprintf(stderr, "Error: Failed to index directory\n"); - return 1; - } - printf("✓ Index built successfully\n"); - - int unique_count; - tikker_word_get_unique_count(db_path, &unique_count); - printf(" Total unique words: %d\n", unique_count); - - uint64_t total_count; - tikker_word_get_total_count(db_path, &total_count); - printf(" Total word count: %lu\n", (unsigned long)total_count); - - } else if (strcmp(action, "popular") == 0) { - printf("Top %d most popular words:\n\n", popular_count); - printf("%-5s %-20s %10s %10s\n", "#", "Word", "Count", "Percent"); - printf("%-5s %-20s %10s %10s\n", "-", "----", "-----", "-------"); - - uint64_t total_count; - tikker_word_get_total_count(db_path, &total_count); - - if (total_count == 0) { - printf("No words indexed yet. Run with --index first.\n"); - return 0; - } - - tikker_word_entry_t *entries; - int count; - int ret = tikker_word_get_top(db_path, popular_count, &entries, &count); - if (ret != 0 || count == 0) { - printf("No words found in database.\n"); - return 0; - } - - for (int j = 0; j < count; j++) { - double percent = (double)entries[j].count / total_count * 100.0; - printf("#%-4d %-20s %10lu %9.2f%%\n", - entries[j].rank, - entries[j].word, - (unsigned long)entries[j].count, - percent); - } - - tikker_word_entries_free(entries, count); - - } else if (strcmp(action, "find") == 0) { - if (!word_to_find) { - fprintf(stderr, "Error: --find requires a word argument\n"); - return 1; - } - - uint64_t count; - int rank; - int ret = tikker_word_get_rank(db_path, word_to_find, &rank, &count); - - if (ret != 0) { - uint64_t freq; - tikker_word_get_frequency(db_path, word_to_find, &freq); - if (freq > 0) { - printf("Word: '%s'\n", word_to_find); - printf("Frequency: %lu\n", (unsigned long)freq); - } else { - printf("Word '%s' not found in database.\n", word_to_find); - } - } else { - printf("Word: '%s'\n", word_to_find); - printf("Rank: #%d\n", rank); - printf("Frequency: %lu\n", (unsigned long)count); - } - } - - return 0; -} diff --git a/src/tools/report_gen/Makefile b/src/tools/report_gen/Makefile deleted file mode 100644 index f8dc7bb..0000000 --- a/src/tools/report_gen/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -CC ?= gcc -CFLAGS ?= -Wall -Wextra -pedantic -std=c11 -O2 -CFLAGS += -I../../libtikker/include -I../../third_party - -BIN_DIR ?= ../../../build/bin -LIB_DIR ?= ../../../build/lib -LDFLAGS ?= -L$(LIB_DIR) -ltikker -lsqlite3 -lm - -TARGET := $(BIN_DIR)/tikker-report - -.PHONY: all clean - -all: $(TARGET) - -$(BIN_DIR): - @mkdir -p $(BIN_DIR) - -$(TARGET): main.c | $(BIN_DIR) - @echo "Building tikker-report..." - @$(CC) $(CFLAGS) main.c -o $@ $(LDFLAGS) - @echo "✓ tikker-report built" - -clean: - @rm -f $(TARGET) - @echo "✓ report cleaned" diff --git a/src/tools/report_gen/main.c b/src/tools/report_gen/main.c deleted file mode 100644 index d7eaef3..0000000 --- a/src/tools/report_gen/main.c +++ /dev/null @@ -1,123 +0,0 @@ -#include -#include -#include -#include -#include - -void print_usage(const char *prog) { - printf("Usage: %s [options]\n\n", prog); - printf("Options:\n"); - printf(" --input Input logs directory (default: logs_plain)\n"); - printf(" --output Output HTML file (default: report.html)\n"); - printf(" --graph-dir Directory with PNG graphs to embed\n"); - printf(" --include-graphs Include embedded PNG graphs (requires --graph-dir)\n"); - printf(" --database Use custom database (default: tikker.db)\n"); - printf(" --title Report title\n"); - printf(" --help Show this help message\n"); -} - -int count_graph_files(const char *dir) { - if (!dir) return 0; - - DIR *d = opendir(dir); - if (!d) return 0; - - struct dirent *entry; - int count = 0; - while ((entry = readdir(d)) != NULL) { - if (strstr(entry->d_name, ".png")) count++; - } - closedir(d); - return count; -} - -int main(int argc, char *argv[]) { - const char *input_dir = "logs_plain"; - const char *output_file = "report.html"; - const char *graph_dir = NULL; - const char *db_path = "tikker.db"; - const char *title = "Tikker Activity Report"; - int include_graphs = 0; - int i; - - if (argc < 2) { - print_usage(argv[0]); - return 1; - } - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "--help") == 0) { - print_usage(argv[0]); - return 0; - } else if (strcmp(argv[i], "--input") == 0) { - if (i + 1 < argc) { - input_dir = argv[++i]; - } - } else if (strcmp(argv[i], "--output") == 0) { - if (i + 1 < argc) { - output_file = argv[++i]; - } - } else if (strcmp(argv[i], "--graph-dir") == 0) { - if (i + 1 < argc) { - graph_dir = argv[++i]; - } - } else if (strcmp(argv[i], "--include-graphs") == 0) { - include_graphs = 1; - } else if (strcmp(argv[i], "--database") == 0) { - if (i + 1 < argc) { - db_path = argv[++i]; - } - } else if (strcmp(argv[i], "--title") == 0) { - if (i + 1 < argc) { - title = argv[++i]; - } - } - } - - printf("Generating report...\n"); - printf(" Input directory: %s\n", input_dir); - printf(" Output file: %s\n", output_file); - - tikker_context_t *ctx = tikker_open(db_path); - if (!ctx) { - fprintf(stderr, "Error: Cannot open database '%s'\n", db_path); - return 1; - } - - if (tikker_generate_html_report(ctx, output_file, graph_dir) != 0) { - fprintf(stderr, "Error: Failed to generate report\n"); - tikker_close(ctx); - return 1; - } - - FILE *out = fopen(output_file, "a"); - if (out) { - fprintf(out, "\n<!-- Report Statistics -->\n"); - fprintf(out, "<div class='stats'>\n"); - fprintf(out, "<h2>Statistics</h2>\n"); - fprintf(out, "<p>Report generated at: %s</p>\n", __DATE__); - - uint64_t pressed, released, repeated; - tikker_get_event_counts(ctx, &pressed, &released, &repeated); - - fprintf(out, "<p>Total Key Presses: %lu</p>\n", (unsigned long)pressed); - fprintf(out, "<p>Total Releases: %lu</p>\n", (unsigned long)released); - fprintf(out, "<p>Total Repeats: %lu</p>\n", (unsigned long)repeated); - - if (include_graphs && graph_dir) { - int graph_count = count_graph_files(graph_dir); - fprintf(out, "<p>Graphs embedded: %d</p>\n", graph_count); - } - - fprintf(out, "</div>\n"); - fprintf(out, "</body>\n"); - fprintf(out, "</html>\n"); - fclose(out); - } - - tikker_close(ctx); - - printf("✓ Report generated: %s\n", output_file); - - return 0; -} diff --git a/tikker b/tikker index 74621b0e7e1fc80caa377ed4f297eef9e3286f9e..ee2ce5ee88945423930e9a4bfdec85e8490ad7cc 100755 GIT binary patch literal 250464 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%0DN}BPx^>3Q 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 literal 230784 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 YNWYZldN9z{+8=+hp>HiUD4hoX2Xr6@2LJ#7 diff --git a/tikker.c b/tikker.c index 882cd19..b144319 100755 --- a/tikker.c +++ b/tikker.c @@ -1,21 +1,33 @@ /* Written by retoor@molodetz.nl -This program captures keyboard input events, resolves device names, and logs these events into a specified database. +Tikker - Keystroke monitoring and productivity analytics application. +Captures keyboard input events, stores in SQLite, provides statistics. -Includes: - - sormc.h: Custom library file for database management. +MIT License -MIT License: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ #include "sormc.h" +#include "tikker_types.h" +#include "tikker_db.h" +#include "tikker_decode.h" +#include "tikker_words.h" +#include "tikker_stats.h" + #include <fcntl.h> #include <linux/input.h> #include <stdio.h> @@ -24,109 +36,182 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI #include <sys/ioctl.h> #include <unistd.h> -#define DATABASE_NAME "tikker.db" -#define DEVICE_TO_READ_DEFAULT "keyboard" -#define MAX_DEVICES 32 -#define DEVICE_PATH "/dev/input/event" +static int tikker_db = 0; -const char *keycode_to_char[] = { - [2] = "1", [3] = "2", [4] = "3", [5] = "4", [6] = "5", - [7] = "6", [8] = "7", [9] = "8", [10] = "9", [11] = "0", - [12] = "-", [13] = "=", [14] = "[BACKSPACE]", [15] = "[TAB]", - [16] = "Q", [17] = "W", [18] = "E", [19] = "R", [20] = "T", - [21] = "Y", [22] = "U", [23] = "I", [24] = "O", [25] = "P", - [26] = "[", [27] = "]", [28] = "[ENTER]\n", [29] = "[LEFT_CTRL]", - [30] = "A", [31] = "S", [32] = "D", [33] = "F", [34] = "G", - [35] = "H", [36] = "J", [37] = "K", [38] = "L", [39] = ";", - [40] = "'", [41] = "`", [42] = "[LEFT_SHIFT]", [43] = "\\", - [44] = "Z", [45] = "X", [46] = "C", [47] = "V", [48] = "B", - [49] = "N", [50] = "M", [51] = ",", [52] = ".", [53] = "/", - [54] = "[RIGHT_SHIFT]", [55] = "[KEYPAD_*]", [56] = "[LEFT_ALT]", - [57] = " ", [58] = "[CAPSLOCK]", - [59] = "[F1]", [60] = "[F2]", [61] = "[F3]", [62] = "[F4]", - [63] = "[F5]", [64] = "[F6]", [65] = "[F7]", [66] = "[F8]", - [67] = "[F9]", [68] = "[F10]", [87] = "[F11]", [88] = "[F12]", - [69] = "[NUMLOCK]", [70] = "[SCROLLLOCK]", [71] = "[KEYPAD_7]", - [72] = "[KEYPAD_8]", [73] = "[KEYPAD_9]", [74] = "[KEYPAD_-]", - [75] = "[KEYPAD_4]", [76] = "[KEYPAD_5]", [77] = "[KEYPAD_6]", - [78] = "[KEYPAD_+]", [79] = "[KEYPAD_1]", [80] = "[KEYPAD_2]", - [81] = "[KEYPAD_3]", [82] = "[KEYPAD_0]", [83] = "[KEYPAD_.]", - [86] = "<", [100] = "[RIGHT_ALT]", [97] = "[RIGHT_CTRL]", - [119] = "[PAUSE]", [120] = "[SYSRQ]", [121] = "[BREAK]", - [102] = "[HOME]", [103] = "[UP]", [104] = "[PAGEUP]", - [105] = "[LEFT]", [106] = "[RIGHT]", [107] = "[END]", - [108] = "[DOWN]", [109] = "[PAGEDOWN]", [110] = "[INSERT]", - [111] = "[DELETE]", - [113] = "[MUTE]", [114] = "[VOLUME_DOWN]", [115] = "[VOLUME_UP]", - [163] = "[MEDIA_NEXT]", [165] = "[MEDIA_PREV]", [164] = "[MEDIA_PLAY_PAUSE]" -}; +static void tikker_init_pragmas(void) { + sormq(tikker_db, "PRAGMA journal_mode=WAL"); + sormq(tikker_db, "PRAGMA synchronous=NORMAL"); + sormq(tikker_db, "PRAGMA cache_size=-65536"); + sormq(tikker_db, "PRAGMA temp_store=MEMORY"); + sormq(tikker_db, "PRAGMA mmap_size=268435456"); +} -char *resolve_device_name(int fd) { +static void tikker_init_schema(void) { + sormq(tikker_db, "CREATE TABLE IF NOT EXISTS kevent (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "code, event, name, timestamp, char)"); + sormq(tikker_db, "CREATE INDEX IF NOT EXISTS idx_kevent_event ON kevent(event)"); + sormq(tikker_db, "CREATE INDEX IF NOT EXISTS idx_kevent_timestamp ON kevent(timestamp)"); + sormq(tikker_db, "CREATE INDEX IF NOT EXISTS idx_kevent_code ON kevent(code)"); + sormq(tikker_db, "CREATE INDEX IF NOT EXISTS idx_kevent_event_code ON kevent(event, code)"); + sormq(tikker_db, "CREATE INDEX IF NOT EXISTS idx_kevent_event_timestamp ON kevent(event, timestamp)"); + sormq(tikker_db, "CREATE INDEX IF NOT EXISTS idx_kevent_event_timestamp_char ON kevent(event, timestamp, char)"); + + sormq(tikker_db, "CREATE TABLE IF NOT EXISTS kevent_daily (" + "date TEXT PRIMARY KEY, " + "pressed INTEGER DEFAULT 0, " + "released INTEGER DEFAULT 0, " + "repeated INTEGER DEFAULT 0)"); + + sormq(tikker_db, "CREATE TABLE IF NOT EXISTS kevent_hourly (" + "date_hour TEXT PRIMARY KEY, " + "pressed INTEGER DEFAULT 0)"); + + sormq(tikker_db, "CREATE TABLE IF NOT EXISTS kevent_key_counts (" + "code INTEGER PRIMARY KEY, " + "count INTEGER DEFAULT 0)"); +} + +static char *tikker_resolve_device_name(int fd) { static char device_name[256]; device_name[0] = 0; if (ioctl(fd, EVIOCGNAME(sizeof(device_name)), device_name) < 0) { - return 0; + return NULL; } return device_name; } -char * sormgetc(char *result,int index){ - char * end = NULL; - int current_index = 0; - while((end = strstr((char *)result, ";")) != NULL){ - if(index == current_index){ - result[end - (char *)result] = 0; - return result; - } - result = end + 1; - current_index++; +static void tikker_populate_cache(void) { + sorm_ptr count = sormq(tikker_db, "SELECT COUNT(*) FROM kevent_daily"); + if (count) { + char *csv = (char *)count; + char *line = strchr(csv, '\n'); + if (line) line++; + else line = csv; + int cached_days = atoi(line); + free(count); + if (cached_days > 0) return; } - *end = 0; - return result; + + sormq(tikker_db, "INSERT OR REPLACE INTO kevent_daily (date, pressed, released, repeated) " + "SELECT STRFTIME('%%Y-%%m-%%d', timestamp) as date, " + "SUM(CASE WHEN event = 'PRESSED' THEN 1 ELSE 0 END), " + "SUM(CASE WHEN event = 'RELEASED' THEN 1 ELSE 0 END), " + "SUM(CASE WHEN event = 'REPEATED' THEN 1 ELSE 0 END) " + "FROM kevent GROUP BY date"); + + sormq(tikker_db, "INSERT OR REPLACE INTO kevent_hourly (date_hour, pressed) " + "SELECT STRFTIME('%%Y-%%m-%%d.%%H', timestamp), COUNT(*) " + "FROM kevent WHERE event = 'PRESSED' GROUP BY 1"); + + sormq(tikker_db, "INSERT OR REPLACE INTO kevent_key_counts (code, count) " + "SELECT code, COUNT(*) FROM kevent WHERE event = 'PRESSED' GROUP BY code"); } -int main(int argc, char *argv[]) { - char *device_to_read = rargs_get_option_string(argc, argv, "--device", DEVICE_TO_READ_DEFAULT); - //printf("%s\n", device_to_read); +static void tikker_update_cache_for_event(const char *event, int code) { + sormq(tikker_db, "INSERT INTO kevent_daily (date, pressed, released, repeated) " + "VALUES (DATE('now'), 0, 0, 0) " + "ON CONFLICT(date) DO NOTHING"); + + if (strcmp(event, "PRESSED") == 0) { + sormq(tikker_db, "UPDATE kevent_daily SET pressed = pressed + 1 WHERE date = DATE('now')"); + + sormq(tikker_db, "INSERT INTO kevent_hourly (date_hour, pressed) " + "VALUES (STRFTIME('%%Y-%%m-%%d.%%H', 'now'), 1) " + "ON CONFLICT(date_hour) DO UPDATE SET pressed = pressed + 1"); + + sormq(tikker_db, "INSERT INTO kevent_key_counts (code, count) VALUES (%d, 1) " + "ON CONFLICT(code) DO UPDATE SET count = count + 1", code); + } else if (strcmp(event, "RELEASED") == 0) { + sormq(tikker_db, "UPDATE kevent_daily SET released = released + 1 WHERE date = DATE('now')"); + } else { + sormq(tikker_db, "UPDATE kevent_daily SET repeated = repeated + 1 WHERE date = DATE('now')"); + } +} + +static void tikker_print_usage(void) { + printf("Usage: tikker [command] [options]\n\n"); + printf("Commands:\n"); + printf(" (no command) Start keyboard monitoring\n"); + printf(" presses_today Show today's keystroke count\n"); + printf(" stats daily Daily keystroke statistics\n"); + printf(" stats hourly [DATE] Hourly breakdown (default: today)\n"); + printf(" stats weekly Weekly keystroke statistics\n"); + printf(" stats weekday Weekday comparison\n"); + printf(" stats top-keys [N] Top N keys (default: 10)\n"); + printf(" stats top-words [N] Top N words (default: 10)\n"); + printf(" stats summary Overall summary statistics\n"); + printf(" decode [FILE] Decode keystroke log file\n"); + printf("\nOptions:\n"); + printf(" --device='NAME' Monitor specific device\n"); +} + +static int tikker_handle_stats_command(int argc, char *argv[]) { + if (argc < 1) { + tikker_print_usage(); + return 1; + } + + const char *cmd = argv[0]; + + if (strcmp(cmd, "daily") == 0) { + return tikker_stats_daily(tikker_db); + } + if (strcmp(cmd, "hourly") == 0) { + const char *date = (argc > 1) ? argv[1] : tikker_get_today_date(); + return tikker_stats_hourly(tikker_db, date); + } + if (strcmp(cmd, "weekly") == 0) { + return tikker_stats_weekly(tikker_db); + } + if (strcmp(cmd, "weekday") == 0) { + return tikker_stats_weekday(tikker_db); + } + if (strcmp(cmd, "top-keys") == 0) { + int limit = (argc > 1) ? atoi(argv[1]) : 10; + if (limit <= 0) limit = 10; + return tikker_stats_top_keys(tikker_db, limit); + } + if (strcmp(cmd, "top-words") == 0) { + int limit = (argc > 1) ? atoi(argv[1]) : 10; + if (limit <= 0) limit = 10; + return tikker_stats_top_words(tikker_db, limit); + } + if (strcmp(cmd, "summary") == 0) { + return tikker_stats_summary(tikker_db); + } + + fprintf(stderr, "Unknown stats command: %s\n", cmd); + tikker_print_usage(); + return 1; +} + +static int tikker_run_keylogger(int argc, char *argv[]) { + char *device_to_read = rargs_get_option_string(argc, argv, "--device", TIKKER_DEVICE_DEFAULT); - int db = sormc(DATABASE_NAME); ulonglong times_repeated = 0; ulonglong times_pressed = 0; ulonglong times_released = 0; - sormq(db, "CREATE TABLE IF NOT EXISTS kevent (id INTEGER PRIMARY KEY AUTOINCREMENT, code,event,name,timestamp,char)"); - - if(argc > 1 && !strcmp(argv[1],"presses_today")){ - time_t now = time(NULL); - char time_string[32]; - strftime(time_string, sizeof(time_string), "%Y-%m-%d", localtime(&now)); - sorm_ptr result = sormq(db, "SELECT COUNT(id) as total FROM kevent WHERE timestamp >= %s AND event = 'PRESSED'",time_string); - - printf("%s",sormgetc((char *)result,1)); - //fflush(stdout); - free(result); - exit(0); - } - - - int keyboard_fds[MAX_DEVICES]; + int keyboard_fds[TIKKER_MAX_DEVICES]; int num_keyboards = 0; - for (int i = 0; i < MAX_DEVICES; i++) { + for (int i = 0; i < TIKKER_MAX_DEVICES; i++) { char device_path[32]; - snprintf(device_path, sizeof(device_path), "%s%d", DEVICE_PATH, i); + snprintf(device_path, sizeof(device_path), "%s%d", TIKKER_DEVICE_PATH, i); int fd = open(device_path, O_RDONLY); - if (fd < 0) { - continue; - } - char *device_name = resolve_device_name(fd); + if (fd < 0) continue; + + char *device_name = tikker_resolve_device_name(fd); if (!device_name) { close(fd); continue; } - bool is_device_to_read = strstr(device_name, device_to_read) != NULL; - printf("[%s] %s. Mount: %s.\n", is_device_to_read ? "-" : "+", device_name, device_path); - if (is_device_to_read) { + + bool is_target = strstr(device_name, device_to_read) != NULL; + printf("[%s] %s. Mount: %s.\n", is_target ? "-" : "+", device_name, device_path); + + if (is_target) { keyboard_fds[num_keyboards++] = fd; } else { close(fd); @@ -135,12 +220,13 @@ int main(int argc, char *argv[]) { if (num_keyboards == 0) { fprintf(stderr, "No keyboard found. Are you running as root?\n" - "If your device is listed above with a minus [-] in front, \n" + "If your device is listed above with a minus [-] in front,\n" "run this application using --device='[DEVICE_NAME]'\n"); return 1; } printf("Monitoring %d keyboards.\n", num_keyboards); + struct input_event ev; fd_set read_fds; @@ -149,9 +235,7 @@ int main(int argc, char *argv[]) { int max_fd = -1; for (int i = 0; i < num_keyboards; i++) { FD_SET(keyboard_fds[i], &read_fds); - if (keyboard_fds[i] > max_fd) { - max_fd = keyboard_fds[i]; - } + if (keyboard_fds[i] > max_fd) max_fd = keyboard_fds[i]; } if (select(max_fd + 1, &read_fds, NULL, NULL, NULL) < 0) { @@ -160,37 +244,42 @@ int main(int argc, char *argv[]) { } for (int i = 0; i < num_keyboards; i++) { - if (FD_ISSET(keyboard_fds[i], &read_fds)) { - ssize_t bytes = read(keyboard_fds[i], &ev, sizeof(struct input_event)); - if (bytes == sizeof(struct input_event)) { - if (ev.type == EV_KEY) { - char *char_name = NULL; - if (ev.code < sizeof(keycode_to_char) / sizeof(keycode_to_char[0])) { - char_name = (char *)keycode_to_char[ev.code]; - } - char keyboard_name[256]; - ioctl(keyboard_fds[i], EVIOCGNAME(sizeof(keyboard_name)), keyboard_name); - printf("Keyboard: %s, ", keyboard_name); - char *event_name = NULL; - if (ev.value == 1) { - event_name = "PRESSED"; - times_pressed++; - } else if (ev.value == 0) { - event_name = "RELEASED"; - times_released++; - } else { - event_name = "REPEATED"; - times_repeated++; - } - sormq(db, "INSERT INTO kevent (code, event, name,timestamp,char) VALUES (%d, %s, %s, DATETIME('now'),%s)", ev.code, - event_name, keyboard_name, char_name); - printf("Event: %s, ", ev.value == 1 ? "PRESSED" : ev.value == 0 ? "RELEASED" : "REPEATED"); - printf("Key Code: %d, ", ev.code); - printf("Name: %s, ", char_name); - printf("Pr: %lld Rel: %lld Rep: %lld\n", times_pressed, times_released, times_repeated); - } - } + if (!FD_ISSET(keyboard_fds[i], &read_fds)) continue; + + ssize_t bytes = read(keyboard_fds[i], &ev, sizeof(struct input_event)); + if (bytes != sizeof(struct input_event)) continue; + if (ev.type != EV_KEY) continue; + + char *char_name = NULL; + if (ev.code < sizeof(tikker_keycode_to_char) / sizeof(tikker_keycode_to_char[0])) { + char_name = (char *)tikker_keycode_to_char[ev.code]; } + + char keyboard_name[256]; + ioctl(keyboard_fds[i], EVIOCGNAME(sizeof(keyboard_name)), keyboard_name); + + char *event_name; + if (ev.value == 1) { + event_name = "PRESSED"; + times_pressed++; + } else if (ev.value == 0) { + event_name = "RELEASED"; + times_released++; + } else { + event_name = "REPEATED"; + times_repeated++; + } + + sormq(tikker_db, "INSERT INTO kevent (code, event, name, timestamp, char) " + "VALUES (%d, %s, %s, DATETIME('now'), %s)", + ev.code, event_name, keyboard_name, char_name); + + tikker_update_cache_for_event(event_name, ev.code); + + printf("Keyboard: %s, Event: %s, Key Code: %d, Name: %s, " + "Pr: %lld Rel: %lld Rep: %lld\n", + keyboard_name, event_name, ev.code, char_name, + times_pressed, times_released, times_repeated); } } @@ -200,3 +289,50 @@ int main(int argc, char *argv[]) { return 0; } + +int main(int argc, char *argv[]) { + tikker_db = sormc(TIKKER_DATABASE_NAME); + tikker_init_pragmas(); + tikker_init_schema(); + tikker_populate_cache(); + + if (argc >= 2) { + if (strcmp(argv[1], "presses_today") == 0) { + return tikker_stats_presses_today(tikker_db); + } + + if (strcmp(argv[1], "stats") == 0) { + if (argc < 3) { + tikker_print_usage(); + return 1; + } + return tikker_handle_stats_command(argc - 2, argv + 2); + } + + if (strcmp(argv[1], "decode") == 0) { + if (argc < 3) { + fprintf(stderr, "Error: decode requires a filename\n"); + tikker_print_usage(); + return 1; + } + return tikker_decode_file(argv[2]); + } + + if (strcmp(argv[1], "help") == 0 || + strcmp(argv[1], "--help") == 0 || + strcmp(argv[1], "-h") == 0) { + tikker_print_usage(); + return 0; + } + + if (strncmp(argv[1], "--device=", 9) == 0) { + return tikker_run_keylogger(argc, argv); + } + + fprintf(stderr, "Unknown command: %s\n", argv[1]); + tikker_print_usage(); + return 1; + } + + return tikker_run_keylogger(argc, argv); +} diff --git a/tikker_db.h b/tikker_db.h new file mode 100644 index 0000000..573a65a --- /dev/null +++ b/tikker_db.h @@ -0,0 +1,72 @@ +#ifndef TIKKER_DB_H +#define TIKKER_DB_H + +#include <string.h> +#include <stdlib.h> + +static inline char *tikker_csv_get_field(char *result, int index) { + char *end = NULL; + int current_index = 0; + while ((end = strstr((char *)result, ";")) != NULL) { + if (index == current_index) { + result[end - (char *)result] = 0; + return result; + } + result = end + 1; + current_index++; + } + if (end) *end = 0; + return result; +} + +typedef struct { + char **fields; + int field_count; +} tikker_csv_row_t; + +typedef struct { + char *data; + char *current; +} tikker_csv_iter_t; + +static inline tikker_csv_iter_t tikker_csv_iter_init(char *csv) { + tikker_csv_iter_t iter; + iter.data = csv; + iter.current = csv; + return iter; +} + +static inline int tikker_csv_is_metadata(const char *line) { + return strstr(line, "(text)") != NULL || + strstr(line, "(integer)") != NULL || + strstr(line, "(real)") != NULL || + strstr(line, "(blob)") != NULL; +} + +static inline int tikker_csv_iter_next(tikker_csv_iter_t *iter, char **field1, char **field2) { + while (iter->current && *iter->current) { + char *line = iter->current; + char *next = strchr(line, '\n'); + if (next) *next = '\0'; + + iter->current = next ? next + 1 : NULL; + + if (tikker_csv_is_metadata(line)) continue; + + *field1 = line; + char *sep = strchr(line, ';'); + if (sep) { + *sep = '\0'; + *field2 = sep + 1; + char *end = strchr(*field2, ';'); + if (end) *end = '\0'; + } else { + *field2 = NULL; + } + + return 1; + } + return 0; +} + +#endif diff --git a/tikker_decode.h b/tikker_decode.h new file mode 100644 index 0000000..6cf08bd --- /dev/null +++ b/tikker_decode.h @@ -0,0 +1,151 @@ +#ifndef TIKKER_DECODE_H +#define TIKKER_DECODE_H + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +static inline char tikker_get_shifted_char(char c) { + switch (c) { + case '1': return '!'; + case '2': return '@'; + case '3': return '#'; + case '4': return '$'; + case '5': return '%'; + case '6': return '^'; + case '7': return '&'; + case '8': return '*'; + case '9': return '('; + case '0': return ')'; + case '-': return '_'; + case '=': return '+'; + case '[': return '{'; + case ']': return '}'; + case '\\': return '|'; + case ';': return ':'; + case '\'': return '"'; + case ',': return '<'; + case '.': return '>'; + case '/': return '?'; + case '`': return '~'; + default: return c; + } +} + +static inline int tikker_decode_buffer(const char *input, char *output, size_t output_size) { + size_t out_pos = 0; + int shift_active = 0; + const char *p = input; + + while (*p && out_pos < output_size - 1) { + if (*p == '[') { + const char *end = strchr(p, ']'); + if (!end) { + p++; + continue; + } + + size_t token_len = end - p - 1; + char token[64]; + if (token_len >= sizeof(token)) token_len = sizeof(token) - 1; + strncpy(token, p + 1, token_len); + token[token_len] = '\0'; + + if (strcmp(token, "LEFT_SHIFT") == 0 || strcmp(token, "RIGHT_SHIFT") == 0) { + shift_active = 1; + } else if (strcmp(token, "BACKSPACE") == 0) { + if (out_pos > 0) out_pos--; + } else if (strcmp(token, "ENTER") == 0) { + output[out_pos++] = '\n'; + } else if (strcmp(token, "TAB") == 0) { + output[out_pos++] = '\t'; + } else if (token_len == 1) { + char c = token[0]; + if (shift_active) { + if (c >= 'A' && c <= 'Z') { + output[out_pos++] = c; + } else if (c >= 'a' && c <= 'z') { + output[out_pos++] = c - 32; + } else { + output[out_pos++] = tikker_get_shifted_char(c); + } + shift_active = 0; + } else { + if (c >= 'A' && c <= 'Z') { + output[out_pos++] = c + 32; + } else { + output[out_pos++] = c; + } + } + } + + p = end + 1; + } else if (*p == ' ' || *p == '\n' || *p == '\t') { + output[out_pos++] = *p; + p++; + } else if ((*p >= 'A' && *p <= 'Z') || (*p >= 'a' && *p <= 'z') || + (*p >= '0' && *p <= '9') || *p == '.' || *p == ',' || + *p == '-' || *p == '_' || *p == '\'' || *p == '"') { + char c = *p; + if (shift_active) { + if (c >= 'a' && c <= 'z') { + output[out_pos++] = c - 32; + } else { + output[out_pos++] = tikker_get_shifted_char(c); + } + shift_active = 0; + } else { + if (c >= 'A' && c <= 'Z') { + output[out_pos++] = c + 32; + } else { + output[out_pos++] = c; + } + } + p++; + } else { + p++; + } + } + + output[out_pos] = '\0'; + return (int)out_pos; +} + +static inline int tikker_decode_file(const char *filename) { + FILE *f = fopen(filename, "r"); + if (!f) { + fprintf(stderr, "Error: Cannot open file '%s'\n", filename); + return 1; + } + + fseek(f, 0, SEEK_END); + long file_size = ftell(f); + fseek(f, 0, SEEK_SET); + + char *input = malloc(file_size + 1); + if (!input) { + fclose(f); + fprintf(stderr, "Error: Memory allocation failed\n"); + return 1; + } + + size_t bytes_read = fread(input, 1, file_size, f); + input[bytes_read] = '\0'; + fclose(f); + + char *output = malloc(file_size + 1); + if (!output) { + free(input); + fprintf(stderr, "Error: Memory allocation failed\n"); + return 1; + } + + tikker_decode_buffer(input, output, file_size + 1); + printf("%s", output); + + free(input); + free(output); + return 0; +} + +#endif diff --git a/tikker_stats.h b/tikker_stats.h new file mode 100644 index 0000000..7730e5f --- /dev/null +++ b/tikker_stats.h @@ -0,0 +1,281 @@ +#ifndef TIKKER_STATS_H +#define TIKKER_STATS_H + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "sormc.h" +#include "tikker_types.h" +#include "tikker_db.h" +#include "tikker_decode.h" +#include "tikker_words.h" + +static inline int tikker_stats_presses_today(int db) { + sorm_ptr result = sormq(db, + "SELECT pressed FROM kevent_daily WHERE date = DATE('now')"); + if (result) { + char *csv = (char *)result; + char *line = csv; + char *next = strchr(line, '\n'); + if (next) line = next + 1; + char *end = strchr(line, ';'); + if (end) *end = '\0'; + end = strchr(line, '\n'); + if (end) *end = '\0'; + printf("%s\n", line); + free(result); + } else { + printf("0\n"); + } + return 0; +} + +static inline int tikker_stats_daily(int db) { + sorm_ptr result = sormq(db, + "SELECT date, pressed FROM kevent_daily ORDER BY date"); + + printf("date,count\n"); + + if (!result) return 0; + + tikker_csv_iter_t iter = tikker_csv_iter_init((char *)result); + char *date, *count; + while (tikker_csv_iter_next(&iter, &date, &count)) { + if (date && count) { + printf("%s,%s\n", date, count); + } + } + + free(result); + return 0; +} + +static inline int tikker_stats_hourly(int db, const char *date) { + sorm_ptr result = sormq(db, + "SELECT SUBSTR(date_hour, 12, 2) as hour, pressed " + "FROM kevent_hourly WHERE date_hour LIKE %s || '.%%' " + "ORDER BY hour", date); + + printf("hour,count\n"); + + int hour_counts[24] = {0}; + + if (result) { + tikker_csv_iter_t iter = tikker_csv_iter_init((char *)result); + char *hour_str, *count_str; + while (tikker_csv_iter_next(&iter, &hour_str, &count_str)) { + if (hour_str && count_str) { + int hour = atoi(hour_str); + if (hour >= 0 && hour < 24) { + hour_counts[hour] = atoi(count_str); + } + } + } + free(result); + } + + for (int h = 0; h < 24; h++) { + printf("%02d,%d\n", h, hour_counts[h]); + } + + return 0; +} + +static inline int tikker_stats_weekly(int db) { + sorm_ptr result = sormq(db, + "SELECT STRFTIME('%%Y-%%U', date) as week, SUM(pressed) as count " + "FROM kevent_daily GROUP BY week ORDER BY week"); + + printf("week,count\n"); + + if (!result) return 0; + + tikker_csv_iter_t iter = tikker_csv_iter_init((char *)result); + char *week, *count; + while (tikker_csv_iter_next(&iter, &week, &count)) { + if (week && count) { + printf("%s,%s\n", week, count); + } + } + + free(result); + return 0; +} + +static inline int tikker_stats_weekday(int db) { + static const char *weekday_names[] = { + "Sunday", "Monday", "Tuesday", "Wednesday", + "Thursday", "Friday", "Saturday" + }; + + sorm_ptr result = sormq(db, + "SELECT STRFTIME('%%w', date) as weekday, SUM(pressed) as count " + "FROM kevent_daily GROUP BY weekday ORDER BY weekday"); + + printf("weekday,name,count\n"); + + int weekday_counts[7] = {0}; + + if (result) { + tikker_csv_iter_t iter = tikker_csv_iter_init((char *)result); + char *wday_str, *count_str; + while (tikker_csv_iter_next(&iter, &wday_str, &count_str)) { + if (wday_str && count_str) { + int wday = atoi(wday_str); + if (wday >= 0 && wday < 7) { + weekday_counts[wday] = atoi(count_str); + } + } + } + free(result); + } + + for (int d = 0; d < 7; d++) { + printf("%d,%s,%d\n", d, weekday_names[d], weekday_counts[d]); + } + + return 0; +} + +static inline int tikker_stats_top_keys(int db, int limit) { + char sql[512]; + snprintf(sql, sizeof(sql), + "SELECT code, count FROM kevent_key_counts " + "ORDER BY count DESC LIMIT %d", limit); + + sorm_ptr result = sormq(db, sql); + + printf("code,name,count\n"); + + if (!result) return 0; + + tikker_csv_iter_t iter = tikker_csv_iter_init((char *)result); + char *code_str, *count_str; + while (tikker_csv_iter_next(&iter, &code_str, &count_str)) { + if (code_str && count_str) { + int code = atoi(code_str); + const char *name = "UNKNOWN"; + if (code < (int)(sizeof(tikker_keycode_to_name) / sizeof(tikker_keycode_to_name[0])) + && tikker_keycode_to_name[code]) { + name = tikker_keycode_to_name[code]; + } + printf("%s,%s,%s\n", code_str, name, count_str); + } + } + + free(result); + return 0; +} + +static inline int tikker_stats_summary(int db) { + sorm_ptr result = sormq(db, + "SELECT " + "SUM(pressed), SUM(released), SUM(repeated), " + "MIN(date), MAX(date), COUNT(*) " + "FROM kevent_daily"); + + printf("total_pressed,total_released,total_repeated,first_event,last_event,days\n"); + + if (!result) { + printf("0,0,0,N/A,N/A,0\n"); + return 0; + } + + char *csv = (char *)result; + char *line = csv; + char *next = strchr(line, '\n'); + if (next) { + line = next + 1; + } + + char values[6][64] = {"0", "0", "0", "N/A", "N/A", "0"}; + int idx = 0; + char *start = line; + + while (*start && idx < 6) { + char *end = strchr(start, ';'); + if (!end) end = start + strlen(start); + + size_t len = end - start; + if (len >= sizeof(values[0])) len = sizeof(values[0]) - 1; + strncpy(values[idx], start, len); + values[idx][len] = '\0'; + + idx++; + if (*end) start = end + 1; + else break; + } + + printf("%s,%s,%s,%s,%s,%s\n", values[0], values[1], values[2], values[3], values[4], values[5]); + + free(result); + return 0; +} + +static inline int tikker_stats_top_words(int db, int limit) { + sorm_ptr result = sormq(db, + "SELECT STRFTIME('%%Y-%%m-%%d.%%H', timestamp) as date_hour, " + "GROUP_CONCAT(char, '') as chars " + "FROM kevent WHERE event = 'PRESSED' " + "GROUP BY date_hour ORDER BY date_hour"); + + printf("word,count\n"); + + if (!result) return 0; + + size_t total_len = strlen((char *)result); + char *decoded = malloc(total_len + 1); + if (!decoded) { + free(result); + return 1; + } + + char *csv = (char *)result; + char *line = csv; + char *next; + size_t decoded_pos = 0; + + while (line && *line) { + next = strchr(line, '\n'); + if (next) *next = '\0'; + + char *chars = strchr(line, ';'); + if (chars) { + chars++; + char *end = strchr(chars, ';'); + if (end) *end = '\0'; + + int len = tikker_decode_buffer(chars, decoded + decoded_pos, total_len - decoded_pos); + decoded_pos += len; + if (decoded_pos < total_len) { + decoded[decoded_pos++] = ' '; + } + } + + if (next) line = next + 1; + else break; + } + decoded[decoded_pos] = '\0'; + + tikker_word_count_t *words = calloc(TIKKER_MAX_WORDS, sizeof(tikker_word_count_t)); + if (!words) { + free(decoded); + free(result); + return 1; + } + + int word_count = tikker_extract_words(decoded, words, TIKKER_MAX_WORDS); + tikker_sort_words(words, word_count); + + int output_count = (limit < word_count) ? limit : word_count; + for (int i = 0; i < output_count; i++) { + printf("%s,%d\n", words[i].word, words[i].count); + } + + free(words); + free(decoded); + free(result); + return 0; +} + +#endif diff --git a/tikker_types.h b/tikker_types.h new file mode 100644 index 0000000..db6d417 --- /dev/null +++ b/tikker_types.h @@ -0,0 +1,81 @@ +#ifndef TIKKER_TYPES_H +#define TIKKER_TYPES_H + +#include <time.h> + +#define TIKKER_DATABASE_NAME "tikker.db" +#define TIKKER_DEVICE_DEFAULT "keyboard" +#define TIKKER_MAX_DEVICES 32 +#define TIKKER_DEVICE_PATH "/dev/input/event" +#define TIKKER_MAX_WORDS 100000 +#define TIKKER_MAX_WORD_LEN 256 + +typedef struct { + char word[TIKKER_MAX_WORD_LEN]; + int count; +} tikker_word_count_t; + +static const char *tikker_keycode_to_char[] = { + [2] = "1", [3] = "2", [4] = "3", [5] = "4", [6] = "5", + [7] = "6", [8] = "7", [9] = "8", [10] = "9", [11] = "0", + [12] = "-", [13] = "=", [14] = "[BACKSPACE]", [15] = "[TAB]", + [16] = "Q", [17] = "W", [18] = "E", [19] = "R", [20] = "T", + [21] = "Y", [22] = "U", [23] = "I", [24] = "O", [25] = "P", + [26] = "[", [27] = "]", [28] = "[ENTER]\n", [29] = "[LEFT_CTRL]", + [30] = "A", [31] = "S", [32] = "D", [33] = "F", [34] = "G", + [35] = "H", [36] = "J", [37] = "K", [38] = "L", [39] = ";", + [40] = "'", [41] = "`", [42] = "[LEFT_SHIFT]", [43] = "\\", + [44] = "Z", [45] = "X", [46] = "C", [47] = "V", [48] = "B", + [49] = "N", [50] = "M", [51] = ",", [52] = ".", [53] = "/", + [54] = "[RIGHT_SHIFT]", [55] = "[KEYPAD_*]", [56] = "[LEFT_ALT]", + [57] = " ", [58] = "[CAPSLOCK]", + [59] = "[F1]", [60] = "[F2]", [61] = "[F3]", [62] = "[F4]", + [63] = "[F5]", [64] = "[F6]", [65] = "[F7]", [66] = "[F8]", + [67] = "[F9]", [68] = "[F10]", [87] = "[F11]", [88] = "[F12]", + [69] = "[NUMLOCK]", [70] = "[SCROLLLOCK]", [71] = "[KEYPAD_7]", + [72] = "[KEYPAD_8]", [73] = "[KEYPAD_9]", [74] = "[KEYPAD_-]", + [75] = "[KEYPAD_4]", [76] = "[KEYPAD_5]", [77] = "[KEYPAD_6]", + [78] = "[KEYPAD_+]", [79] = "[KEYPAD_1]", [80] = "[KEYPAD_2]", + [81] = "[KEYPAD_3]", [82] = "[KEYPAD_0]", [83] = "[KEYPAD_.]", + [86] = "<", [100] = "[RIGHT_ALT]", [97] = "[RIGHT_CTRL]", + [119] = "[PAUSE]", [120] = "[SYSRQ]", [121] = "[BREAK]", + [102] = "[HOME]", [103] = "[UP]", [104] = "[PAGEUP]", + [105] = "[LEFT]", [106] = "[RIGHT]", [107] = "[END]", + [108] = "[DOWN]", [109] = "[PAGEDOWN]", [110] = "[INSERT]", + [111] = "[DELETE]", + [113] = "[MUTE]", [114] = "[VOLUME_DOWN]", [115] = "[VOLUME_UP]", + [163] = "[MEDIA_NEXT]", [165] = "[MEDIA_PREV]", [164] = "[MEDIA_PLAY_PAUSE]" +}; + +static const char *tikker_keycode_to_name[] = { + [2] = "1", [3] = "2", [4] = "3", [5] = "4", [6] = "5", + [7] = "6", [8] = "7", [9] = "8", [10] = "9", [11] = "0", + [12] = "MINUS", [13] = "EQUAL", [14] = "BACKSPACE", [15] = "TAB", + [16] = "Q", [17] = "W", [18] = "E", [19] = "R", [20] = "T", + [21] = "Y", [22] = "U", [23] = "I", [24] = "O", [25] = "P", + [26] = "LEFTBRACE", [27] = "RIGHTBRACE", [28] = "ENTER", [29] = "LEFTCTRL", + [30] = "A", [31] = "S", [32] = "D", [33] = "F", [34] = "G", + [35] = "H", [36] = "J", [37] = "K", [38] = "L", [39] = "SEMICOLON", + [40] = "APOSTROPHE", [41] = "GRAVE", [42] = "LEFTSHIFT", [43] = "BACKSLASH", + [44] = "Z", [45] = "X", [46] = "C", [47] = "V", [48] = "B", + [49] = "N", [50] = "M", [51] = "COMMA", [52] = "DOT", [53] = "SLASH", + [54] = "RIGHTSHIFT", [55] = "KPASTERISK", [56] = "LEFTALT", + [57] = "SPACE", [58] = "CAPSLOCK", + [59] = "F1", [60] = "F2", [61] = "F3", [62] = "F4", + [63] = "F5", [64] = "F6", [65] = "F7", [66] = "F8", + [67] = "F9", [68] = "F10", [87] = "F11", [88] = "F12", + [97] = "RIGHTCTRL", [100] = "RIGHTALT", + [102] = "HOME", [103] = "UP", [104] = "PAGEUP", + [105] = "LEFT", [106] = "RIGHT", [107] = "END", + [108] = "DOWN", [109] = "PAGEDOWN", [110] = "INSERT", + [111] = "DELETE" +}; + +static inline char *tikker_get_today_date(void) { + static char date_str[11]; + time_t now = time(NULL); + strftime(date_str, sizeof(date_str), "%Y-%m-%d", localtime(&now)); + return date_str; +} + +#endif diff --git a/tikker_words.h b/tikker_words.h new file mode 100644 index 0000000..8e31c7a --- /dev/null +++ b/tikker_words.h @@ -0,0 +1,76 @@ +#ifndef TIKKER_WORDS_H +#define TIKKER_WORDS_H + +#include <ctype.h> +#include <stdlib.h> +#include <string.h> +#include "tikker_types.h" + +static inline int tikker_is_valid_word_char(char c) { + return isalnum((unsigned char)c) || c == '_'; +} + +static inline int tikker_word_count_compare(const void *a, const void *b) { + return ((tikker_word_count_t *)b)->count - ((tikker_word_count_t *)a)->count; +} + +static inline int tikker_extract_words(const char *text, tikker_word_count_t *words, int max_words) { + int word_count = 0; + const char *p = text; + char word[TIKKER_MAX_WORD_LEN]; + int word_len = 0; + + while (*p) { + if (tikker_is_valid_word_char(*p)) { + if (word_len < TIKKER_MAX_WORD_LEN - 1) { + word[word_len++] = tolower((unsigned char)*p); + } + } else { + if (word_len >= 2) { + word[word_len] = '\0'; + + int found = 0; + for (int i = 0; i < word_count; i++) { + if (strcmp(words[i].word, word) == 0) { + words[i].count++; + found = 1; + break; + } + } + + if (!found && word_count < max_words) { + strcpy(words[word_count].word, word); + words[word_count].count = 1; + word_count++; + } + } + word_len = 0; + } + p++; + } + + if (word_len >= 2) { + word[word_len] = '\0'; + int found = 0; + for (int i = 0; i < word_count; i++) { + if (strcmp(words[i].word, word) == 0) { + words[i].count++; + found = 1; + break; + } + } + if (!found && word_count < max_words) { + strcpy(words[word_count].word, word); + words[word_count].count = 1; + word_count++; + } + } + + return word_count; +} + +static inline void tikker_sort_words(tikker_word_count_t *words, int count) { + qsort(words, count, sizeof(tikker_word_count_t), tikker_word_count_compare); +} + +#endif