iuse strncpy and a null terminator, use strncacestr - iomenu - interactive terminal-based selection menu Err bitreich.org 70
hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu bitreich.org 70
1Log /scm/iomenu/log.gph bitreich.org 70
1Files /scm/iomenu/files.gph bitreich.org 70
1Refs /scm/iomenu/refs.gph bitreich.org 70
1Tags /scm/iomenu/tag bitreich.org 70
1README /scm/iomenu/file/README.gph bitreich.org 70
1LICENSE /scm/iomenu/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 9adba189e74c6b6752d04f8e6954177b35a99bbd /scm/iomenu/commit/9adba189e74c6b6752d04f8e6954177b35a99bbd.gph bitreich.org 70
1parent c1f1cc577680699b8fe524d33d7de2e6d2bfe173 /scm/iomenu/commit/c1f1cc577680699b8fe524d33d7de2e6d2bfe173.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Sun, 31 Dec 2017 18:30:56 +0100 Err bitreich.org 70
i Err bitreich.org 70
iuse strncpy and a null terminator, use strncacestr Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M iomenu.c | 32 +++++++++++++++++++++++++++---- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 28 insertions(+), 4 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/iomenu.c b/iomenu.c /scm/iomenu/file/iomenu.c.gph bitreich.org 70
i@@ -33,6 +33,27 @@ char input[LINE_MAX], formatted[LINE_MAX * 8]; Err bitreich.org 70
i char *flag_p = ""; Err bitreich.org 70
i int flag_hs = 0; Err bitreich.org 70
i Err bitreich.org 70
i+static char * Err bitreich.org 70
i+strcasestr(const char *str1, const char *str2) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ const char *s1; Err bitreich.org 70
i+ const char *s2; Err bitreich.org 70
i+ Err bitreich.org 70
i+ while (1) { Err bitreich.org 70
i+ s1 = str1; Err bitreich.org 70
i+ s2 = str2; Err bitreich.org 70
i+ while (*s1 != '\0' && tolower(*s1) == tolower(*s2)) Err bitreich.org 70
i+ s1++, s2++; Err bitreich.org 70
i+ if (*s2 == '\0') Err bitreich.org 70
i+ return (char *) str1; Err bitreich.org 70
i+ if (*s1 == '\0') Err bitreich.org 70
i+ return NULL; Err bitreich.org 70
i+ str1++; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i+ return NULL; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i /* Err bitreich.org 70
i * Keep the line if it match every token (in no particular order, and allowed to Err bitreich.org 70
i * be overlapping). Err bitreich.org 70
i@@ -43,7 +64,7 @@ match_line(char *line, char **tokv, int tokc) Err bitreich.org 70
i if (flag_hs && line[0] == '#') Err bitreich.org 70
i return 2; Err bitreich.org 70
i while (tokc-- > 0) Err bitreich.org 70
i- if (strstr(line, tokv[tokc]) == NULL) Err bitreich.org 70
i+ if (strcasestr(line, tokv[tokc]) == NULL) Err bitreich.org 70
i return 0; Err bitreich.org 70
i return 1; Err bitreich.org 70
i } Err bitreich.org 70
i@@ -143,7 +164,8 @@ filter(void) Err bitreich.org 70
i Err bitreich.org 70
i tokv = NULL; Err bitreich.org 70
i cur = 0; Err bitreich.org 70
i- strcpy(buf, input); Err bitreich.org 70
i+ strncpy(buf, input, sizeof(input)); Err bitreich.org 70
i+ buf[sizeof(input) - 1] = '\0'; Err bitreich.org 70
i tokc = 0; Err bitreich.org 70
i n = 0; Err bitreich.org 70
i s = strtok(buf, " "); Err bitreich.org 70
i@@ -286,8 +308,10 @@ top: Err bitreich.org 70
i move_page(+1); Err bitreich.org 70
i break; Err bitreich.org 70
i case CTL('I'): /* tab */ Err bitreich.org 70
i- if (linec > 0) Err bitreich.org 70
i- strcpy(input, matchv[cur]); Err bitreich.org 70
i+ if (linec > 0) { Err bitreich.org 70
i+ strncpy(input, matchv[cur], sizeof(input)); Err bitreich.org 70
i+ input[sizeof(input) - 1] = '\0'; Err bitreich.org 70
i+ } Err bitreich.org 70
i filter(); Err bitreich.org 70
i break; Err bitreich.org 70
i case CTL('J'): /* enter */ Err bitreich.org 70
.
Response:
text/plain