Use slightly safer version of strcpy()

This commit is contained in:
speedie 2023-06-12 03:39:29 +02:00
parent 43e2800e9f
commit 91178ad8ce
9 changed files with 193 additions and 167 deletions

View file

@ -327,39 +327,39 @@ void readargs(int argc, char *argv[]) {
else if (!strcmp(argv[i], "-lf") || (!strcmp(argv[i], "--list-file"))) // list file
listfile = argv[++i];
else if (!strcmp(argv[i], "-nmt") || (!strcmp(argv[i], "--normal-mode-text"))) // normal mode text
strcpy(normtext, argv[++i]);
sp_strncpy(normtext, argv[++i], sizeof(normtext));
else if (!strcmp(argv[i], "-imt") || (!strcmp(argv[i], "--insert-mode-text"))) // insert mode text
strcpy(instext, argv[++i]);
sp_strncpy(instext, argv[++i], sizeof(instext));
else if (!strcmp(argv[i], "-clon") || (!strcmp(argv[i], "--caps-lock-on-text"))) // caps lock on text
strcpy(capslockontext, argv[++i]);
sp_strncpy(capslockontext, argv[++i], sizeof(capslockontext));
else if (!strcmp(argv[i], "-clof") || (!strcmp(argv[i], "--caps-lock-off-text"))) { // caps lock off text
strcpy(capslockofftext, argv[++i]);
sp_strncpy(capslockofftext, argv[++i], sizeof(capslockofftext));
// dmenu compatibility options
} else if (!strcmp(argv[i], "-nb")) { // normal background color
int ix = ++i;
strcpy(col_itemnormbg, argv[ix]);
strcpy(col_itemnormbg2, argv[ix]);
strcpy(col_menu, argv[ix]);
strcpy(col_inputbg, argv[ix]);
strcpy(col_promptbg, argv[ix]);
sp_strncpy(col_itemnormbg, argv[ix], sizeof(col_itemnormbg));
sp_strncpy(col_itemnormbg2, argv[ix], sizeof(col_itemnormbg2));
sp_strncpy(col_menu, argv[ix], sizeof(col_menu));
sp_strncpy(col_inputbg, argv[ix], sizeof(col_inputbg));
sp_strncpy(col_promptbg, argv[ix], sizeof(col_promptbg));
} else if (!strcmp(argv[i], "-nf")) { // normal foreground color
int ix = ++i;
strcpy(col_itemnormfg, argv[ix]);
strcpy(col_itemnormfg2, argv[ix]);
strcpy(col_inputfg, argv[ix]);
strcpy(col_promptfg, argv[ix]);
sp_strncpy(col_itemnormfg, argv[ix], sizeof(col_itemnormfg));
sp_strncpy(col_itemnormfg2, argv[ix], sizeof(col_itemnormfg2));
sp_strncpy(col_inputfg, argv[ix], sizeof(col_inputfg));
sp_strncpy(col_promptfg, argv[ix], sizeof(col_promptfg));
} else if (!strcmp(argv[i], "-sb")) { // selected background color
int ix = ++i;
strcpy(col_itemselbg, argv[ix]);
strcpy(col_menu, argv[ix]);
strcpy(col_inputbg, argv[ix]);
strcpy(col_promptbg, argv[ix]);
sp_strncpy(col_itemselbg, argv[ix], sizeof(col_itemselbg));
sp_strncpy(col_menu, argv[ix], sizeof(col_menu));
sp_strncpy(col_inputbg, argv[ix], sizeof(col_inputbg));
sp_strncpy(col_promptbg, argv[ix], sizeof(col_promptbg));
} else if (!strcmp(argv[i], "-sf")) { // selected foreground color
int ix = ++i;
strcpy(col_itemselfg, argv[ix]);
strcpy(col_inputfg, argv[ix]);
strcpy(col_promptfg, argv[ix]);
sp_strncpy(col_itemselfg, argv[ix], sizeof(col_itemselfg));
sp_strncpy(col_inputfg, argv[ix], sizeof(col_inputfg));
sp_strncpy(col_promptfg, argv[ix], sizeof(col_promptfg));
// more
} else if (!strcmp(argv[i], "-is") || (!strcmp(argv[i], "--image-size"))) { // image size
@ -382,65 +382,65 @@ void readargs(int argc, char *argv[]) {
// spmenu colors
} else if (!strcmp(argv[i], "-nif") || (!strcmp(argv[i], "--normal-item-foreground"))) { // normal item foreground color
strcpy(col_itemnormfg, argv[++i]);
sp_strncpy(col_itemnormfg, argv[++i], sizeof(col_itemnormfg));
} else if (!strcmp(argv[i], "-nib") || (!strcmp(argv[i], "--normal-item-background"))) { // normal item background color
strcpy(col_itemnormbg, argv[++i]);
sp_strncpy(col_itemnormbg, argv[++i], sizeof(col_itemnormbg));
} else if (!strcmp(argv[i], "-nnif") || (!strcmp(argv[i], "--normal-next-item-foreground"))) { // normal next item foreground color
strcpy(col_itemnormfg2, argv[++i]);
sp_strncpy(col_itemnormfg2, argv[++i], sizeof(col_itemnormfg2));
} else if (!strcmp(argv[i], "-nnib") || (!strcmp(argv[i], "--normal-next-item-background"))) { // normal next item background color
strcpy(col_itemnormbg2, argv[++i]);
sp_strncpy(col_itemnormbg2, argv[++i], sizeof(col_itemnormbg2));
} else if (!strcmp(argv[i], "-sif") || (!strcmp(argv[i], "--selected-item-foreground"))) { // selected item foreground color
strcpy(col_itemselfg, argv[++i]);
sp_strncpy(col_itemselfg, argv[++i], sizeof(col_itemselfg));
} else if (!strcmp(argv[i], "-sib") || (!strcmp(argv[i], "--selected-item-background"))) { // selected item background color
strcpy(col_itemselbg, argv[++i]);
sp_strncpy(col_itemselbg, argv[++i], sizeof(col_itemselbg));
} else if (!strcmp(argv[i], "-npf") || (!strcmp(argv[i], "--normal-item-priority-foreground"))) { // normal item priority foreground color
strcpy(col_itemnormprifg, argv[++i]);
sp_strncpy(col_itemnormprifg, argv[++i], sizeof(col_itemnormprifg));
} else if (!strcmp(argv[i], "-npb") || (!strcmp(argv[i], "--normal-item-priority-background"))) { // normal item priority background color
strcpy(col_itemnormpribg, argv[++i]);
sp_strncpy(col_itemnormpribg, argv[++i], sizeof(col_itemnormpribg));
} else if (!strcmp(argv[i], "-spf") || (!strcmp(argv[i], "--selected-item-priority-foreground"))) { // selected item priority foreground color
strcpy(col_itemselprifg, argv[++i]);
sp_strncpy(col_itemselprifg, argv[++i], sizeof(col_itemselprifg));
} else if (!strcmp(argv[i], "-spb") || (!strcmp(argv[i], "--selected-item-priority-background"))) { // selected item priority background color
strcpy(col_itemselpribg, argv[++i]);
sp_strncpy(col_itemselpribg, argv[++i], sizeof(col_itemselpribg));
} else if (!strcmp(argv[i], "-mnbg") || (!strcmp(argv[i], "--menu-background"))) { // menu color
strcpy(col_menu, argv[++i]);
sp_strncpy(col_menu, argv[++i], sizeof(col_menu));
} else if (!strcmp(argv[i], "-pfg") || (!strcmp(argv[i], "--prompt-foreground"))) { // prompt fg color
strcpy(col_promptfg, argv[++i]);
sp_strncpy(col_promptfg, argv[++i], sizeof(col_promptfg));
} else if (!strcmp(argv[i], "-pbg") || (!strcmp(argv[i], "--prompt-background"))) { // prompt bg color
strcpy(col_promptbg, argv[++i]);
sp_strncpy(col_promptbg, argv[++i], sizeof(col_promptbg));
} else if (!strcmp(argv[i], "-ifg") || (!strcmp(argv[i], "--input-foreground"))) { // input fg color
strcpy(col_inputfg, argv[++i]);
sp_strncpy(col_inputfg, argv[++i], sizeof(col_inputfg));
} else if (!strcmp(argv[i], "-pfg") || (!strcmp(argv[i], "--input-background"))) { // input bg color
strcpy(col_inputbg, argv[++i]);
sp_strncpy(col_inputbg, argv[++i], sizeof(col_inputbg));
} else if (!strcmp(argv[i], "-nhb") || (!strcmp(argv[i], "--normal-highlight-background"))) { // normal highlight background color
strcpy(col_hlnormbg, argv[++i]);
sp_strncpy(col_hlnormbg, argv[++i], sizeof(col_hlnormbg));
} else if (!strcmp(argv[i], "-nhf") || (!strcmp(argv[i], "--normal-highlight-foreground"))) { // normal highlight foreground color
strcpy(col_hlnormfg, argv[++i]);
sp_strncpy(col_hlnormfg, argv[++i], sizeof(col_hlnormfg));
} else if (!strcmp(argv[i], "-shf") || (!strcmp(argv[i], "--selected-highlight-foreground"))) { // selected highlight foreground color
strcpy(col_hlselfg, argv[++i]);
sp_strncpy(col_hlselfg, argv[++i], sizeof(col_hlselfg));
} else if (!strcmp(argv[i], "-shb") || (!strcmp(argv[i], "--selected-highlight-background"))) { // selected highlight background color
strcpy(col_hlselbg, argv[++i]);
sp_strncpy(col_hlselbg, argv[++i], sizeof(col_hlselbg));
} else if (!strcmp(argv[i], "-nbg") || (!strcmp(argv[i], "--number-background"))) { // numbg
strcpy(col_numbg, argv[++i]);
sp_strncpy(col_numbg, argv[++i], sizeof(col_numbg));
} else if (!strcmp(argv[i], "-nfg") || (!strcmp(argv[i], "--number-foreground"))) { // numfg
strcpy(col_numfg, argv[++i]);
sp_strncpy(col_numfg, argv[++i], sizeof(col_numfg));
} else if (!strcmp(argv[i], "-mbg") || (!strcmp(argv[i], "--mode-background"))) { // mode
strcpy(col_modebg, argv[++i]);
sp_strncpy(col_modebg, argv[++i], sizeof(col_modebg));
} else if (!strcmp(argv[i], "-mfg") || (!strcmp(argv[i], "--mode-foreground"))) { // mode
strcpy(col_modefg, argv[++i]);
sp_strncpy(col_modefg, argv[++i], sizeof(col_modefg));
} else if (!strcmp(argv[i], "-laf") || (!strcmp(argv[i], "--left-arrow-foreground"))) { // left arrow fg
strcpy(col_larrowfg, argv[++i]);
sp_strncpy(col_larrowfg, argv[++i], sizeof(col_larrowfg));
} else if (!strcmp(argv[i], "-raf") || (!strcmp(argv[i], "--right-arrow-foreground"))) { // right arrow fg
strcpy(col_rarrowfg, argv[++i]);
sp_strncpy(col_rarrowfg, argv[++i], sizeof(col_rarrowfg));
} else if (!strcmp(argv[i], "-lab") || (!strcmp(argv[i], "--left-arrow-background"))) { // left arrow bg
strcpy(col_larrowbg, argv[++i]);
sp_strncpy(col_larrowbg, argv[++i], sizeof(col_larrowbg));
} else if (!strcmp(argv[i], "-rab") || (!strcmp(argv[i], "--right-arrow-background"))) { // right arrow bg
strcpy(col_rarrowbg, argv[++i]);
sp_strncpy(col_rarrowbg, argv[++i], sizeof(col_rarrowbg));
} else if (!strcmp(argv[i], "-bc") || (!strcmp(argv[i], "--border-background"))) { // border
strcpy(col_border, argv[++i]);
sp_strncpy(col_border, argv[++i], sizeof(col_border));
} else if (!strcmp(argv[i], "-cc") || (!strcmp(argv[i], "-cfc")) || (!strcmp(argv[i], "--caret-foreground"))) { // caret color
strcpy(col_caretfg, argv[++i]);
sp_strncpy(col_caretfg, argv[++i], sizeof(col_caretfg));
} else if (!strcmp(argv[i], "-cbc") || (!strcmp(argv[i], "--caret-background"))) { // caret color
strcpy(col_caretbg, argv[++i]);
sp_strncpy(col_caretbg, argv[++i], sizeof(col_caretbg));
}
// sgr colors

View file

@ -133,7 +133,7 @@ void conf_init(void) {
// look up
if (config_setting_lookup_string(conf, "font", &dest)) // spmenu.text.font
strcpy(font, strdup(dest));
sp_strncpy(font, strdup(dest), sizeof(font));
config_setting_lookup_int(conf, "padding", &textpadding); // spmenu.text.padding
config_setting_lookup_int(conf, "normitempadding", &normitempadding); // spmenu.text.normitempadding
@ -241,159 +241,159 @@ void conf_init(void) {
// items
if (config_setting_lookup_string(conf, "itemnormfg", &dest))
strcpy(col_itemnormfg, strdup(dest));
sp_strncpy(col_itemnormfg, strdup(dest), sizeof(col_itemnormfg));
if (config_setting_lookup_string(conf, "itemnormbg", &dest))
strcpy(col_itemnormbg, strdup(dest));
sp_strncpy(col_itemnormbg, strdup(dest), sizeof(col_itemnormbg));
if (config_setting_lookup_string(conf, "itemnormfg2", &dest))
strcpy(col_itemnormfg2, strdup(dest));
sp_strncpy(col_itemnormfg2, strdup(dest), sizeof(col_itemnormfg2));
else if (config_setting_lookup_string(conf, "itemnormfg", &dest))
strcpy(col_itemnormfg2, strdup(dest));
sp_strncpy(col_itemnormfg2, strdup(dest), sizeof(col_itemnormfg2));
if (config_setting_lookup_string(conf, "itemnormbg2", &dest))
strcpy(col_itemnormbg2, strdup(dest));
sp_strncpy(col_itemnormbg2, strdup(dest), sizeof(col_itemnormbg2));
else if (config_setting_lookup_string(conf, "itemnormbg", &dest))
strcpy(col_itemnormbg2, strdup(dest));
sp_strncpy(col_itemnormbg2, strdup(dest), sizeof(col_itemnormbg2));
if (config_setting_lookup_string(conf, "itemselfg", &dest))
strcpy(col_itemselfg, strdup(dest));
sp_strncpy(col_itemselfg, strdup(dest), sizeof(col_itemselfg));
if (config_setting_lookup_string(conf, "itemselbg", &dest))
strcpy(col_itemselbg, strdup(dest));
sp_strncpy(col_itemselbg, strdup(dest), sizeof(col_itemselbg));
if (config_setting_lookup_string(conf, "itemmarkedfg", &dest))
strcpy(col_itemmarkedfg, strdup(dest));
sp_strncpy(col_itemmarkedfg, strdup(dest), sizeof(col_itemmarkedfg));
else if (config_setting_lookup_string(conf, "itemselfg", &dest))
strcpy(col_itemmarkedfg, strdup(dest));
sp_strncpy(col_itemmarkedfg, strdup(dest), sizeof(col_itemmarkedfg));
if (config_setting_lookup_string(conf, "itemmarkedbg", &dest))
strcpy(col_itemmarkedbg, strdup(dest));
sp_strncpy(col_itemmarkedbg, strdup(dest), sizeof(col_itemmarkedbg));
else if (config_setting_lookup_string(conf, "itemselbg", &dest))
strcpy(col_itemmarkedbg, strdup(dest));
sp_strncpy(col_itemmarkedbg, strdup(dest), sizeof(col_itemmarkedbg));
// items with priority
if (config_setting_lookup_string(conf, "itemnormprifg", &dest))
strcpy(col_itemnormprifg, strdup(dest));
sp_strncpy(col_itemnormprifg, strdup(dest), sizeof(col_itemnormprifg));
if (config_setting_lookup_string(conf, "itemnormpribg", &dest))
strcpy(col_itemnormpribg, strdup(dest));
sp_strncpy(col_itemnormpribg, strdup(dest), sizeof(col_itemnormpribg));
if (config_setting_lookup_string(conf, "itemselprifg", &dest))
strcpy(col_itemselprifg, strdup(dest));
sp_strncpy(col_itemselprifg, strdup(dest), sizeof(col_itemselprifg));
if (config_setting_lookup_string(conf, "itemselpribg", &dest))
strcpy(col_itemselpribg, strdup(dest));
sp_strncpy(col_itemselpribg, strdup(dest), sizeof(col_itemselpribg));
// input
if (config_setting_lookup_string(conf, "inputfg", &dest))
strcpy(col_inputfg, strdup(dest));
sp_strncpy(col_inputfg, strdup(dest), sizeof(col_inputfg));
if (config_setting_lookup_string(conf, "inputbg", &dest))
strcpy(col_inputbg, strdup(dest));
sp_strncpy(col_inputbg, strdup(dest), sizeof(col_inputbg));
// menu
if (config_setting_lookup_string(conf, "menu", &dest))
strcpy(col_menu, strdup(dest));
sp_strncpy(col_menu, strdup(dest), sizeof(col_menu));
// prompt
if (config_setting_lookup_string(conf, "promptfg", &dest))
strcpy(col_promptfg, strdup(dest));
sp_strncpy(col_promptfg, strdup(dest), sizeof(col_promptfg));
if (config_setting_lookup_string(conf, "promptbg", &dest))
strcpy(col_promptbg, strdup(dest));
sp_strncpy(col_promptbg, strdup(dest), sizeof(col_promptbg));
// arrows
if (config_setting_lookup_string(conf, "larrowfg", &dest))
strcpy(col_larrowfg, strdup(dest));
sp_strncpy(col_larrowfg, strdup(dest), sizeof(col_larrowfg));
if (config_setting_lookup_string(conf, "larrowbg", &dest))
strcpy(col_larrowbg, strdup(dest));
sp_strncpy(col_larrowbg, strdup(dest), sizeof(col_larrowbg));
if (config_setting_lookup_string(conf, "rarrowfg", &dest))
strcpy(col_rarrowfg, strdup(dest));
sp_strncpy(col_rarrowfg, strdup(dest), sizeof(col_rarrowfg));
if (config_setting_lookup_string(conf, "rarrowbg", &dest))
strcpy(col_rarrowbg, strdup(dest));
sp_strncpy(col_rarrowbg, strdup(dest), sizeof(col_rarrowbg));
// highlight
if (config_setting_lookup_string(conf, "hlnormfg", &dest))
strcpy(col_hlnormfg, strdup(dest));
sp_strncpy(col_hlnormfg, strdup(dest), sizeof(col_hlnormfg));
if (config_setting_lookup_string(conf, "hlnormbg", &dest))
strcpy(col_hlnormbg, strdup(dest));
sp_strncpy(col_hlnormbg, strdup(dest), sizeof(col_hlnormbg));
if (config_setting_lookup_string(conf, "hlselfg", &dest))
strcpy(col_hlselfg, strdup(dest));
sp_strncpy(col_hlselfg, strdup(dest), sizeof(col_hlselfg));
if (config_setting_lookup_string(conf, "hlselbg", &dest))
strcpy(col_hlselbg, strdup(dest));
sp_strncpy(col_hlselbg, strdup(dest), sizeof(col_hlselbg));
// number
if (config_setting_lookup_string(conf, "numfg", &dest))
strcpy(col_numfg, strdup(dest));
sp_strncpy(col_numfg, strdup(dest), sizeof(col_numfg));
if (config_setting_lookup_string(conf, "numbg", &dest))
strcpy(col_numbg, strdup(dest));
sp_strncpy(col_numbg, strdup(dest), sizeof(col_numbg));
// mode
if (config_setting_lookup_string(conf, "modefg", &dest))
strcpy(col_modefg, strdup(dest));
sp_strncpy(col_modefg, strdup(dest), sizeof(col_modefg));
if (config_setting_lookup_string(conf, "modebg", &dest))
strcpy(col_modebg, strdup(dest));
sp_strncpy(col_modebg, strdup(dest), sizeof(col_modebg));
// caps
if (config_setting_lookup_string(conf, "capsfg", &dest))
strcpy(col_capsfg, strdup(dest));
sp_strncpy(col_capsfg, strdup(dest), sizeof(col_capsfg));
if (config_setting_lookup_string(conf, "capsbg", &dest))
strcpy(col_capsbg, strdup(dest));
sp_strncpy(col_capsbg, strdup(dest), sizeof(col_capsbg));
// border
if (config_setting_lookup_string(conf, "border", &dest))
strcpy(col_border, strdup(dest));
sp_strncpy(col_border, strdup(dest), sizeof(col_border));
// caret
if (config_setting_lookup_string(conf, "caretfg", &dest))
strcpy(col_caretfg, strdup(dest));
sp_strncpy(col_caretfg, strdup(dest), sizeof(col_caretfg));
if (config_setting_lookup_string(conf, "caretbg", &dest))
strcpy(col_caretbg, strdup(dest));
sp_strncpy(col_caretbg, strdup(dest), sizeof(col_caretbg));
// sgr colors
if (config_setting_lookup_string(conf, "sgr0", &dest))
strcpy(textcolors[0], strdup(dest));
sp_strncpy(textcolors[0], strdup(dest), sizeof(textcolors[0]));
if (config_setting_lookup_string(conf, "sgr1", &dest))
strcpy(textcolors[1], strdup(dest));
sp_strncpy(textcolors[1], strdup(dest), sizeof(textcolors[1]));
if (config_setting_lookup_string(conf, "sgr2", &dest))
strcpy(textcolors[2], strdup(dest));
sp_strncpy(textcolors[2], strdup(dest), sizeof(textcolors[2]));
if (config_setting_lookup_string(conf, "sgr3", &dest))
strcpy(textcolors[3], strdup(dest));
sp_strncpy(textcolors[3], strdup(dest), sizeof(textcolors[3]));
if (config_setting_lookup_string(conf, "sgr4", &dest))
strcpy(textcolors[4], strdup(dest));
sp_strncpy(textcolors[4], strdup(dest), sizeof(textcolors[4]));
if (config_setting_lookup_string(conf, "sgr5", &dest))
strcpy(textcolors[5], strdup(dest));
sp_strncpy(textcolors[5], strdup(dest), sizeof(textcolors[5]));
if (config_setting_lookup_string(conf, "sgr6", &dest))
strcpy(textcolors[6], strdup(dest));
sp_strncpy(textcolors[6], strdup(dest), sizeof(textcolors[6]));
if (config_setting_lookup_string(conf, "sgr7", &dest))
strcpy(textcolors[7], strdup(dest));
sp_strncpy(textcolors[7], strdup(dest), sizeof(textcolors[7]));
if (config_setting_lookup_string(conf, "sgr8", &dest))
strcpy(textcolors[8], strdup(dest));
sp_strncpy(textcolors[8], strdup(dest), sizeof(textcolors[8]));
if (config_setting_lookup_string(conf, "sgr9", &dest))
strcpy(textcolors[9], strdup(dest));
sp_strncpy(textcolors[9], strdup(dest), sizeof(textcolors[9]));
if (config_setting_lookup_string(conf, "sgr10", &dest))
strcpy(textcolors[10], strdup(dest));
sp_strncpy(textcolors[10], strdup(dest), sizeof(textcolors[10]));
if (config_setting_lookup_string(conf, "sgr11", &dest))
strcpy(textcolors[11], strdup(dest));
sp_strncpy(textcolors[11], strdup(dest), sizeof(textcolors[11]));
if (config_setting_lookup_string(conf, "sgr12", &dest))
strcpy(textcolors[12], strdup(dest));
sp_strncpy(textcolors[12], strdup(dest), sizeof(textcolors[12]));
if (config_setting_lookup_string(conf, "sgr13", &dest))
strcpy(textcolors[13], strdup(dest));
sp_strncpy(textcolors[13], strdup(dest), sizeof(textcolors[13]));
if (config_setting_lookup_string(conf, "sgr14", &dest))
strcpy(textcolors[14], strdup(dest));
sp_strncpy(textcolors[14], strdup(dest), sizeof(textcolors[14]));
if (config_setting_lookup_string(conf, "sgr15", &dest))
strcpy(textcolors[15], strdup(dest));
sp_strncpy(textcolors[15], strdup(dest), sizeof(textcolors[15]));
// coloritems int
config_setting_lookup_int(conf, "coloritems", &coloritems);

View file

@ -83,7 +83,7 @@ void navigatehistfile(int dir) {
}
len = MIN(strlen(p), BUFSIZ - 1);
strcpy(text, p);
sp_strncpy(text, p, sizeof(text));
text[len] = '\0';
cursor = len;
match();

View file

@ -98,7 +98,7 @@ void match(void) {
struct item *item, *lhpprefix, *lprefix, *lsubstr, *hpprefixend, *prefixend, *substrend;
strcpy(buf, text);
sp_strncpy(buf, text, sizeof(text));
// separate input text into tokens to be matched individually
for (s = strtok(buf, " "); s; tokv[tokc - 1] = s, s = strtok(NULL, " "))
if (++tokc > tokn && !(tokv = realloc(tokv, ++tokn * sizeof *tokv)))

View file

@ -14,6 +14,31 @@ void * ecalloc(size_t nmemb, size_t size) {
return p;
}
size_t sp_strncpy(char *restrict dst, const char *restrict src, size_t size) {
int offset;
offset = 0;
if (size > 0) {
while (*(src+offset) != '\0' ) {
if (offset == size) {
offset--;
break;
}
*(dst+offset) = *(src+offset);
offset++;
}
}
*(dst+offset) = '\0';
while (*(src+offset) != '\0')
offset++;
return offset;
}
void die(const char *fmt, ...) {
va_list ap;

View file

@ -10,3 +10,4 @@
void die(const char *fmt, ...);
void *ecalloc(size_t nmemb, size_t size);
size_t sp_strncpy(char *dest, const char *src, size_t size);

View file

@ -123,7 +123,7 @@ void theme_load(void) {
// look up
if (config_setting_lookup_string(conf, "font", &dest)) // theme.text.font
strcpy(font, strdup(dest));
sp_strncpy(font, strdup(dest), sizeof(font));
config_setting_lookup_int(conf, "padding", &textpadding); // theme.text.padding
config_setting_lookup_int(conf, "normitempadding", &normitempadding); // theme.text.normitempadding
@ -225,159 +225,159 @@ void theme_load(void) {
// items
if (config_setting_lookup_string(conf, "itemnormfg", &dest))
strcpy(col_itemnormfg, strdup(dest));
sp_strncpy(col_itemnormfg, strdup(dest), sizeof(col_itemnormfg));
if (config_setting_lookup_string(conf, "itemnormbg", &dest))
strcpy(col_itemnormbg, strdup(dest));
sp_strncpy(col_itemnormbg, strdup(dest), sizeof(col_itemnormbg));
if (config_setting_lookup_string(conf, "itemnormfg2", &dest))
strcpy(col_itemnormfg2, strdup(dest));
sp_strncpy(col_itemnormfg2, strdup(dest), sizeof(col_itemnormfg2));
else if (config_setting_lookup_string(conf, "itemnormfg", &dest))
strcpy(col_itemnormfg2, strdup(dest));
sp_strncpy(col_itemnormfg2, strdup(dest), sizeof(col_itemnormfg2));
if (config_setting_lookup_string(conf, "itemnormbg2", &dest))
strcpy(col_itemnormbg2, strdup(dest));
sp_strncpy(col_itemnormbg2, strdup(dest), sizeof(col_itemnormbg2));
else if (config_setting_lookup_string(conf, "itemnormbg", &dest))
strcpy(col_itemnormbg2, strdup(dest));
sp_strncpy(col_itemnormbg2, strdup(dest), sizeof(col_itemnormbg2));
if (config_setting_lookup_string(conf, "itemselfg", &dest))
strcpy(col_itemselfg, strdup(dest));
sp_strncpy(col_itemselfg, strdup(dest), sizeof(col_itemselfg));
if (config_setting_lookup_string(conf, "itemselbg", &dest))
strcpy(col_itemselbg, strdup(dest));
sp_strncpy(col_itemselbg, strdup(dest), sizeof(col_itemselbg));
if (config_setting_lookup_string(conf, "itemmarkedfg", &dest))
strcpy(col_itemmarkedfg, strdup(dest));
sp_strncpy(col_itemmarkedfg, strdup(dest), sizeof(col_itemmarkedfg));
else if (config_setting_lookup_string(conf, "itemselfg", &dest))
strcpy(col_itemmarkedfg, strdup(dest));
sp_strncpy(col_itemmarkedfg, strdup(dest), sizeof(col_itemmarkedfg));
if (config_setting_lookup_string(conf, "itemmarkedbg", &dest))
strcpy(col_itemmarkedbg, strdup(dest));
sp_strncpy(col_itemmarkedbg, strdup(dest), sizeof(col_itemmarkedbg));
else if (config_setting_lookup_string(conf, "itemselbg", &dest))
strcpy(col_itemmarkedbg, strdup(dest));
sp_strncpy(col_itemmarkedbg, strdup(dest), sizeof(col_itemmarkedbg));
// items with priority
if (config_setting_lookup_string(conf, "itemnormprifg", &dest))
strcpy(col_itemnormprifg, strdup(dest));
sp_strncpy(col_itemnormprifg, strdup(dest), sizeof(col_itemnormprifg));
if (config_setting_lookup_string(conf, "itemnormpribg", &dest))
strcpy(col_itemnormpribg, strdup(dest));
sp_strncpy(col_itemnormpribg, strdup(dest), sizeof(col_itemnormpribg));
if (config_setting_lookup_string(conf, "itemselprifg", &dest))
strcpy(col_itemselprifg, strdup(dest));
sp_strncpy(col_itemselprifg, strdup(dest), sizeof(col_itemselprifg));
if (config_setting_lookup_string(conf, "itemselpribg", &dest))
strcpy(col_itemselpribg, strdup(dest));
sp_strncpy(col_itemselpribg, strdup(dest), sizeof(col_itemselpribg));
// input
if (config_setting_lookup_string(conf, "inputfg", &dest))
strcpy(col_inputfg, strdup(dest));
sp_strncpy(col_inputfg, strdup(dest), sizeof(col_inputfg));
if (config_setting_lookup_string(conf, "inputbg", &dest))
strcpy(col_inputbg, strdup(dest));
sp_strncpy(col_inputbg, strdup(dest), sizeof(col_inputbg));
// menu
if (config_setting_lookup_string(conf, "menu", &dest))
strcpy(col_menu, strdup(dest));
sp_strncpy(col_menu, strdup(dest), sizeof(col_menu));
// prompt
if (config_setting_lookup_string(conf, "promptfg", &dest))
strcpy(col_promptfg, strdup(dest));
sp_strncpy(col_promptfg, strdup(dest), sizeof(col_promptfg));
if (config_setting_lookup_string(conf, "promptbg", &dest))
strcpy(col_promptbg, strdup(dest));
sp_strncpy(col_promptbg, strdup(dest), sizeof(col_promptbg));
// arrows
if (config_setting_lookup_string(conf, "larrowfg", &dest))
strcpy(col_larrowfg, strdup(dest));
sp_strncpy(col_larrowfg, strdup(dest), sizeof(col_larrowfg));
if (config_setting_lookup_string(conf, "larrowbg", &dest))
strcpy(col_larrowbg, strdup(dest));
sp_strncpy(col_larrowbg, strdup(dest), sizeof(col_larrowbg));
if (config_setting_lookup_string(conf, "rarrowfg", &dest))
strcpy(col_rarrowfg, strdup(dest));
sp_strncpy(col_rarrowfg, strdup(dest), sizeof(col_rarrowfg));
if (config_setting_lookup_string(conf, "rarrowbg", &dest))
strcpy(col_rarrowbg, strdup(dest));
sp_strncpy(col_rarrowbg, strdup(dest), sizeof(col_rarrowbg));
// highlight
if (config_setting_lookup_string(conf, "hlnormfg", &dest))
strcpy(col_hlnormfg, strdup(dest));
sp_strncpy(col_hlnormfg, strdup(dest), sizeof(col_hlnormfg));
if (config_setting_lookup_string(conf, "hlnormbg", &dest))
strcpy(col_hlnormbg, strdup(dest));
sp_strncpy(col_hlnormbg, strdup(dest), sizeof(col_hlnormbg));
if (config_setting_lookup_string(conf, "hlselfg", &dest))
strcpy(col_hlselfg, strdup(dest));
sp_strncpy(col_hlselfg, strdup(dest), sizeof(col_hlselfg));
if (config_setting_lookup_string(conf, "hlselbg", &dest))
strcpy(col_hlselbg, strdup(dest));
sp_strncpy(col_hlselbg, strdup(dest), sizeof(col_hlselbg));
// number
if (config_setting_lookup_string(conf, "numfg", &dest))
strcpy(col_numfg, strdup(dest));
sp_strncpy(col_numfg, strdup(dest), sizeof(col_numfg));
if (config_setting_lookup_string(conf, "numbg", &dest))
strcpy(col_numbg, strdup(dest));
sp_strncpy(col_numbg, strdup(dest), sizeof(col_numbg));
// mode
if (config_setting_lookup_string(conf, "modefg", &dest))
strcpy(col_modefg, strdup(dest));
sp_strncpy(col_modefg, strdup(dest), sizeof(col_modefg));
if (config_setting_lookup_string(conf, "modebg", &dest))
strcpy(col_modebg, strdup(dest));
sp_strncpy(col_modebg, strdup(dest), sizeof(col_modebg));
// caps
if (config_setting_lookup_string(conf, "capsfg", &dest))
strcpy(col_capsfg, strdup(dest));
sp_strncpy(col_capsfg, strdup(dest), sizeof(col_capsfg));
if (config_setting_lookup_string(conf, "capsbg", &dest))
strcpy(col_capsbg, strdup(dest));
sp_strncpy(col_capsbg, strdup(dest), sizeof(col_capsbg));
// border
if (config_setting_lookup_string(conf, "border", &dest))
strcpy(col_border, strdup(dest));
sp_strncpy(col_border, strdup(dest), sizeof(col_border));
// caret
if (config_setting_lookup_string(conf, "caretfg", &dest))
strcpy(col_caretfg, strdup(dest));
sp_strncpy(col_caretfg, strdup(dest), sizeof(col_caretfg));
if (config_setting_lookup_string(conf, "caretbg", &dest))
strcpy(col_caretbg, strdup(dest));
sp_strncpy(col_caretbg, strdup(dest), sizeof(col_caretbg));
// sgr colors
if (config_setting_lookup_string(conf, "sgr0", &dest))
strcpy(textcolors[0], strdup(dest));
sp_strncpy(textcolors[0], strdup(dest), sizeof(textcolors[0]));
if (config_setting_lookup_string(conf, "sgr1", &dest))
strcpy(textcolors[1], strdup(dest));
sp_strncpy(textcolors[1], strdup(dest), sizeof(textcolors[1]));
if (config_setting_lookup_string(conf, "sgr2", &dest))
strcpy(textcolors[2], strdup(dest));
sp_strncpy(textcolors[2], strdup(dest), sizeof(textcolors[2]));
if (config_setting_lookup_string(conf, "sgr3", &dest))
strcpy(textcolors[3], strdup(dest));
sp_strncpy(textcolors[3], strdup(dest), sizeof(textcolors[3]));
if (config_setting_lookup_string(conf, "sgr4", &dest))
strcpy(textcolors[4], strdup(dest));
sp_strncpy(textcolors[4], strdup(dest), sizeof(textcolors[4]));
if (config_setting_lookup_string(conf, "sgr5", &dest))
strcpy(textcolors[5], strdup(dest));
sp_strncpy(textcolors[5], strdup(dest), sizeof(textcolors[5]));
if (config_setting_lookup_string(conf, "sgr6", &dest))
strcpy(textcolors[6], strdup(dest));
sp_strncpy(textcolors[6], strdup(dest), sizeof(textcolors[6]));
if (config_setting_lookup_string(conf, "sgr7", &dest))
strcpy(textcolors[7], strdup(dest));
sp_strncpy(textcolors[7], strdup(dest), sizeof(textcolors[7]));
if (config_setting_lookup_string(conf, "sgr8", &dest))
strcpy(textcolors[8], strdup(dest));
sp_strncpy(textcolors[8], strdup(dest), sizeof(textcolors[8]));
if (config_setting_lookup_string(conf, "sgr9", &dest))
strcpy(textcolors[9], strdup(dest));
sp_strncpy(textcolors[9], strdup(dest), sizeof(textcolors[9]));
if (config_setting_lookup_string(conf, "sgr10", &dest))
strcpy(textcolors[10], strdup(dest));
sp_strncpy(textcolors[10], strdup(dest), sizeof(textcolors[10]));
if (config_setting_lookup_string(conf, "sgr11", &dest))
strcpy(textcolors[11], strdup(dest));
sp_strncpy(textcolors[11], strdup(dest), sizeof(textcolors[11]));
if (config_setting_lookup_string(conf, "sgr12", &dest))
strcpy(textcolors[12], strdup(dest));
sp_strncpy(textcolors[12], strdup(dest), sizeof(textcolors[12]));
if (config_setting_lookup_string(conf, "sgr13", &dest))
strcpy(textcolors[13], strdup(dest));
sp_strncpy(textcolors[13], strdup(dest), sizeof(textcolors[13]));
if (config_setting_lookup_string(conf, "sgr14", &dest))
strcpy(textcolors[14], strdup(dest));
sp_strncpy(textcolors[14], strdup(dest), sizeof(textcolors[14]));
if (config_setting_lookup_string(conf, "sgr15", &dest))
strcpy(textcolors[15], strdup(dest));
sp_strncpy(textcolors[15], strdup(dest), sizeof(textcolors[15]));
// coloritems int
config_setting_lookup_int(conf, "coloritems", &coloritems);

View file

@ -18,7 +18,7 @@ void resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *d
if (!(ret.addr == NULL || strncmp("String", type, 64))) {
switch (rtype) { // type
case STRING:
strcpy(sdst, ret.addr);
sp_strncpy(sdst, ret.addr, strlen(sdst));
break;
case INTEGER:
*idst = strtoul(ret.addr, NULL, 10);

View file

@ -84,7 +84,6 @@
#include "libs/define.c"
// mode
static char modetext[16]; // default mode text
static int curMode; // 0 is command mode
static int allowkeys; // whether or not to interpret a keypress as an insertion
@ -101,6 +100,7 @@ static int allowkeys; // whether or not to interpret a keypress as an insertion
#include "libs/history.h"
// text
static char modetext[64] = "";
static char text[BUFSIZ] = "";
static char numbers[NUMBERSBUFSIZE] = "";
@ -485,12 +485,12 @@ void set_mode(void) {
curMode = 1;
allowkeys = 1;
strcpy(modetext, instext);
sp_strncpy(modetext, instext, sizeof(modetext));
} else {
curMode = 0;
allowkeys = !curMode;
strcpy(modetext, normtext);
sp_strncpy(modetext, normtext, sizeof(modetext));
}
}