testing parsing a simple conf file
This commit is contained in:
parent
038e312941
commit
1fb0a4c6fa
3
.gitignore
vendored
3
.gitignore
vendored
@ -2,3 +2,6 @@
|
||||
*.swp
|
||||
*.o
|
||||
hkd*
|
||||
tests/parse
|
||||
tests/ioctl
|
||||
tests/evtest
|
||||
|
13
template.conf
Normal file
13
template.conf
Normal file
@ -0,0 +1,13 @@
|
||||
# This is a comment
|
||||
|
||||
# these are valid entries
|
||||
keymap = it
|
||||
layout = qwerty
|
||||
|
||||
I dont care about whitespaces = true
|
||||
# will be translated to Idontcareaboutwhitespaces=true
|
||||
or tabs = true
|
||||
# is: ortabs=true
|
||||
|
||||
# I can define strings
|
||||
identifier = "keyboard 0"
|
11
tests/makefile
Normal file
11
tests/makefile
Normal file
@ -0,0 +1,11 @@
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -Werror -pedantic -O2
|
||||
|
||||
parse: parse.c
|
||||
|
||||
ioctl: ioctl.c
|
||||
|
||||
evtest: evtest.c
|
||||
|
||||
clean:
|
||||
rm *.o parse ioctl 2> /dev/null
|
42
tests/parse.c
Normal file
42
tests/parse.c
Normal file
@ -0,0 +1,42 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
if (argc < 2)
|
||||
return 1;
|
||||
FILE *fd;
|
||||
fd = fopen(argv[1], "r");
|
||||
if (!fd)
|
||||
return -1;
|
||||
for (;;) {
|
||||
char *line = NULL;
|
||||
size_t linelen = 0;
|
||||
if (getline(&line, &linelen, fd) == -1)
|
||||
break;
|
||||
if (linelen < 2)
|
||||
continue;
|
||||
|
||||
printf("%s\n", line);
|
||||
// remove white spaces
|
||||
for (size_t i = 0; i < linelen; i++) {
|
||||
if (isblank(line[i]))
|
||||
memmove(&line[i], &line[i + 1], linelen - i);
|
||||
}
|
||||
if (line[0] == '#')
|
||||
continue;
|
||||
printf("%s\n", line);
|
||||
|
||||
char *token = NULL;
|
||||
token = strtok(line, "=");
|
||||
if (token)
|
||||
printf("%s\n", token);
|
||||
token = strtok(NULL, "=");
|
||||
if (token)
|
||||
printf("%s\n", token);
|
||||
free(line);
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user