modified configuration file and parser

xkbcommon
Alessandro Mauri 5 years ago
parent 300b82bc5e
commit 435bbfbab8
  1. 8
      template.conf
  2. 2
      tests/makefile
  3. 18
      tests/parse.c

@ -1,13 +1,11 @@
# This is a comment
# these are valid entries
keymap = it
layout = qwerty
KEY_ALT + KEY_S = "xset s on"
KEY_LEFTMETA = 'rofi -show drun'
KEY_LEFTMETA + KEY_L = '/home/ale/scripts/lock.sh'
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"

@ -1,5 +1,5 @@
CC = gcc
CFLAGS = -Wall -Werror -pedantic -O2
CFLAGS = -Wall -Werror -pedantic
parse: parse.c

@ -3,6 +3,9 @@
#include <string.h>
#include <ctype.h>
#define ANSI_COLOR_RED "\x1b[31m"
#define ANSI_COLOR_RESET "\x1b[0m"
int main(int argc, char const *argv[])
{
if (argc < 2)
@ -19,11 +22,20 @@ int main(int argc, char const *argv[])
if (linelen < 2)
continue;
printf("%s\n", line);
// remove white spaces
printf(ANSI_COLOR_RED "%s\n" ANSI_COLOR_RESET, line);
/* remove white spaces */
int inquotes = 0;
int inapos = 0;
for (size_t i = 0; i < linelen; i++) {
if (isblank(line[i]))
if (line[i] == '"' && !inapos)
inquotes = !inquotes;
if (line[i] == '\'' && !inquotes)
inapos = !inapos;
if (isblank(line[i]) && !(inquotes || inapos)) {
memmove(&line[i], &line[i + 1], linelen - i);
i -= i ? 1 : 0;
}
}
if (line[0] == '#')
continue;

Loading…
Cancel
Save