This commit is contained in:
damage 2025-01-16 22:46:20 +01:00
commit eccf0a28bb
6 changed files with 156 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/logs/messages
/bin

17
.vscode/c_cpp_properties.json vendored Normal file
View File

@ -0,0 +1,17 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/lua5.4"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}

34
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,34 @@
{
"configurations": [
{
"name": "messages",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/bin/${fileBasenameNoExtension}",
"args": [
"${fileDirname}/lua/messages.lua",
"${fileDirname}/logs/messages"
],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Automatische Strukturierung und Einrückung für gdb aktivieren",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Disassemblierungsvariante auf Intel festlegen",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc Aktive Datei kompilieren",
"miDebuggerPath": "/usr/bin/gdb"
}
],
"version": "2.0.0"
}

30
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,30 @@
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc Aktive Datei kompilieren",
"command": "/usr/bin/gcc",
"args": [
"-fdiagnostics-color=always",
"-I/usr/include/lua5.4",
"-g",
"${file}",
"-llua5.4",
"-o",
"${fileDirname}/bin/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Vom Debugger generierte Aufgabe."
}
],
"version": "2.0.0"
}

70
logfoo.c Normal file
View File

@ -0,0 +1,70 @@
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#define EXIT_LOGFILE_HANDLING 2
#define EXIT_LUAFILE_HANDLING 3
void trim(char *string) {
if (strlen(string) > 0 && string[strlen(string) - 1] == '\n') {
string[strlen(string) - 1] = '\0';
trim(string);
}
}
int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "Usage: %s <lua file> <log file>\n", argv[0]);
return 1;
}
int status;
char *logfile = argv[2];
char *luafile = argv[1];
char *line = NULL;
size_t len = 0;
ssize_t read;
FILE *fp;
lua_State *L;
L = luaL_newstate();
luaL_openlibs(L);
fp = fopen(logfile, "r");
if (errno) {
fprintf(stderr, "Error opening file %s: %s\n", logfile, strerror(errno));
return EXIT_LOGFILE_HANDLING;
}
status = luaL_dofile(L, luafile);
if (status) {
fprintf(stderr, "Error reading LUA file %s: %s\n", luafile, lua_tostring(L, -1));
return EXIT_LUAFILE_HANDLING;
}
while ((read = getline(&line, &len, fp)) != -1) {
trim(line);
lua_getglobal(L, "format");
lua_pushlstring(L, line, read);
if (lua_pcall(L, 1, 1, 0) != 0) {
fprintf(stderr, "Error running LUA function 'format': %s\n", lua_tostring(L, -1));
return EXIT_LUAFILE_HANDLING;
}
printf("%s\n", lua_tostring(L, -1));
lua_pop(L, 1);
}
if (errno) {
fprintf(stderr, "Error readling file %s: %s\n", logfile, strerror(errno));
return EXIT_LOGFILE_HANDLING;
}
free(line);
lua_close(L);
fclose(fp);
}

3
lua/messages.lua Normal file
View File

@ -0,0 +1,3 @@
function format (line)
return line:gsub(" ", "\n");
end