{
res = fscanf(file, "%1023s", buf);
if (res < 0) break;
- if (strstr(buf, "rules") > 0)
+ if (!names->rules && strstr(buf, "rules") > 0)
{
tmp = strtok_r(buf, "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
if (tmp) names->rules= strdup(tmp);
}
- else if (strstr(buf, "model") > 0)
+ else if (!names->model && strstr(buf, "model") > 0)
{
tmp = strtok_r(buf, "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
if (tmp) names->model= strdup(tmp);
}
- else if (strstr(buf, "layout") > 0)
+ else if (!names->layout && strstr(buf, "layout") > 0)
{
tmp = strtok_r(buf, "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
if (tmp) names->layout= strdup(tmp);
}
- else if (strstr(buf, "variant") > 0)
+ else if (!names->variant && strstr(buf, "variant") > 0)
{
tmp = strtok_r(buf, "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
if (tmp) names->variant= strdup(tmp);
}
- else if (strstr(buf, "options") > 0)
+ else if (!names->options && strstr(buf, "options") > 0)
{
tmp = strtok_r(buf, "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
{
printf("Cache file rule from argument\n");
- if (strstr(argv[i], "-rules") > 0)
+ if (!names->rules && strstr(argv[i], "-rules") > 0)
{
tmp = strtok_r(argv[i], "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
- names->rules= strdup(tmp);
+ if (tmp) names->rules= strdup(tmp);
}
- else if (strstr(argv[i], "-model") > 0)
+ else if (!names->model && strstr(argv[i], "-model") > 0)
{
tmp = strtok_r(argv[i], "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
- names->model = strdup(tmp);
+ if (tmp) names->model = strdup(tmp);
}
- else if (strstr(argv[i], "-layout") > 0)
+ else if (!names->layout && strstr(argv[i], "-layout") > 0)
{
tmp = strtok_r(argv[i], "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
- names->layout = strdup(tmp);
+ if (tmp) names->layout = strdup(tmp);
}
- else if (strstr(argv[i], "-variant") > 0)
+ else if (!names->variant && strstr(argv[i], "-variant") > 0)
{
tmp = strtok_r(argv[i], "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
- names->variant = strdup(tmp);
+ if (tmp) names->variant = strdup(tmp);
}
- else if (strstr(argv[i], "-options") > 0)
+ else if (!names->options && strstr(argv[i], "-options") > 0)
{
tmp = strtok_r(argv[i], "=", &buf_ptr);
tmp = strtok_r(NULL, "=", &buf_ptr);
- names->options = strdup(tmp);
+ if (tmp) names->options = strdup(tmp);
}
}
}
{
struct xkb_context *ctx;
struct xkb_keymap *map;
- struct xkb_rule_names names;
+ struct xkb_rule_names names = {0, };
char *keymap_path = NULL;
char *keymap_string = NULL;
char *cache_path = NULL;