From b8c479a9e92788888e592ef92ae660635390ba0d Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Sat, 31 Jul 2004 14:10:23 +0000 Subject: [PATCH] add DB's fix for a problem where quoted justify wouldn't work if HAVE_REGEX_H wasn't set, and don't treat the return values of the string comparison functions as boolean anymore git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1877 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 5 ++++ src/color.c | 2 +- src/files.c | 25 ++++++++++--------- src/nano.c | 9 ++++--- src/rcfile.c | 70 ++++++++++++++++++++++++++-------------------------- src/winio.c | 6 +++-- 6 files changed, 63 insertions(+), 54 deletions(-) diff --git a/ChangeLog b/ChangeLog index 177d4a7c..e978451c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -65,6 +65,8 @@ CVS code - once for all errors instead of separately for each error. Also make sure that each rcfile error message ends in a newline. (DLR) + - Don't treat the return value of strn?(case)?cmp() as boolean. + (DLR and David Benbennick) - files.c: close_open_file() - Tweak to no longer rely on the return values of @@ -98,6 +100,9 @@ CVS code - terminal_init() to make sure that all the original terminal settings are restored, as a curses-based alternative spell checker (e.g. aspell) can change them. (DLR) + quote_length() + - Fix problem where quoted justify wouldn't work if HAVE_REGEX_H + wasn't set. (David Benbennick) do_justify() - Add allow_respacing flag, used to indicate when we've moved to the next line after justifying the current line, and only run diff --git a/src/color.c b/src/color.c index 8549f0b0..5d2ba8f4 100644 --- a/src/color.c +++ b/src/color.c @@ -120,7 +120,7 @@ void update_color(void) if (colorstrings == NULL && syntaxstr != NULL) { for (tmpsyntax = syntaxes; tmpsyntax != NULL; tmpsyntax = tmpsyntax->next) { - if (!strcasecmp(tmpsyntax->desc, syntaxstr)) + if (strcasecmp(tmpsyntax->desc, syntaxstr) == 0) colorstrings = tmpsyntax->color; } } diff --git a/src/files.c b/src/files.c index 9672370c..22fea15c 100644 --- a/src/files.c +++ b/src/files.c @@ -444,7 +444,7 @@ void do_insertfile(int loading_file) #endif #ifndef DISABLE_OPERATINGDIR - if (operating_dir != NULL && strcmp(operating_dir, ".")) + if (operating_dir != NULL && strcmp(operating_dir, ".") != 0) #ifdef ENABLE_MULTIBUFFER if (ISSET(MULTIBUFFER)) i = statusq(TRUE, insertfile_list, inspath, @@ -1039,7 +1039,7 @@ char *get_full_path(const char *origpath) if (d_here != NULL) { align(&d_here); - if (strcmp(d_here, "/")) { + if (strcmp(d_here, "/") != 0) { d_here = charealloc(d_here, strlen(d_here) + 2); strcat(d_here, "/"); } @@ -1111,7 +1111,7 @@ char *get_full_path(const char *origpath) /* add a slash to d_there, unless it's "/", in which case we don't need it */ - if (strcmp(d_there, "/")) { + if (strcmp(d_there, "/") != 0) { d_there = charealloc(d_there, strlen(d_there) + 2); strcat(d_there, "/"); } @@ -1908,14 +1908,14 @@ int do_writeout(int exiting) #endif #ifdef NANO_EXTRA - if (exiting && !ISSET(TEMP_FILE) && !strcasecmp(answer, "zzy") + if (exiting && !ISSET(TEMP_FILE) && strcasecmp(answer, "zzy") == 0 && !did_cred) { do_credits(); did_cred = TRUE; return -1; } #endif - if (append == 0 && strcmp(answer, filename)) { + if (append == 0 && strcmp(answer, filename) != 0) { struct stat st; if (!stat(answer, &st)) { @@ -1987,7 +1987,7 @@ char *real_dir_from_tilde(const char *buf) do { userdata = getpwent(); } while (userdata != NULL && - strncmp(userdata->pw_name, buf + 1, i - 1)); + strncmp(userdata->pw_name, buf + 1, i - 1) != 0); } endpwent(); @@ -2290,7 +2290,7 @@ char *input_tab(char *buf, int place, int *lastwastab, int *newplace, } else tmp = buf; - if (!strcmp(tmp, matches[0])) + if (strcmp(tmp, matches[0]) == 0) is_dir = append_slash_if_dir(buf, lastwastab, newplace); if (is_dir != 0) @@ -2514,7 +2514,7 @@ char **browser_init(const char *path, int *longest, int *numents) *numents = 0; while ((next = readdir(dir)) != NULL) { - if (!strcmp(next->d_name, ".")) + if (strcmp(next->d_name, ".") == 0) continue; (*numents)++; if (strlen(next->d_name) > *longest) @@ -2525,12 +2525,12 @@ char **browser_init(const char *path, int *longest, int *numents) filelist = (char **)nmalloc(*numents * sizeof (char *)); - if (!strcmp(path, "/")) + if (strcmp(path, "/") == 0) path = ""; path_len = strlen(path); while ((next = readdir(dir)) != NULL) { - if (!strcmp(next->d_name, ".")) + if (strcmp(next->d_name, ".") == 0) continue; filelist[i] = charalloc(strlen(next->d_name) + path_len + 2); @@ -2564,7 +2564,7 @@ char *do_browser(const char *inpath) /* If path isn't the same as inpath, we are being passed a new dir as an arg. We free it here so it will be copied from inpath below */ - if (path != NULL && strcmp(path, inpath)) { + if (path != NULL && strcmp(path, inpath) != 0) { free(path); path = NULL; } @@ -2682,7 +2682,8 @@ char *do_browser(const char *inpath) case 'S': /* Pico compatibility */ case 's': /* You can't cd up from / */ - if (!strcmp(filelist[selected], "/..") && !strcmp(path, "/")) { + if (strcmp(filelist[selected], "/..") == 0 && + strcmp(path, "/") == 0) { statusbar(_("Can't move up a directory")); beep(); break; diff --git a/src/nano.c b/src/nano.c index b675662b..cc6c7ca3 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1494,7 +1494,7 @@ int do_int_spell_fix(const char *word) do_replace_highlight(FALSE, word); - if (i != -1 && strcmp(word, answer)) { + if (i != -1 && strcmp(word, answer) != 0) { search_last_line = FALSE; current_x--; do_replace_loop(word, current_save, ¤t_x_save, TRUE); @@ -1971,7 +1971,7 @@ size_t quote_length(const char *line) size_t qdepth = 0; /* Compute quote depth level. */ - while (!strcmp(line + qdepth, quotestr)) + while (strncmp(line + qdepth, quotestr, quotelen) == 0) qdepth += quotelen; return qdepth; #endif /* !HAVE_REGEX_H */ @@ -1985,7 +1985,7 @@ int quotes_match(const char *a_line, size_t a_quote, const char *b_line) /* Here is the assumption about a_quote: */ assert(a_quote == quote_length(a_line)); return a_quote == quote_length(b_line) && - !strncmp(a_line, b_line, a_quote); + strncmp(a_line, b_line, a_quote) == 0; } /* We assume a_line and b_line have no quote part. Then, we return @@ -1996,7 +1996,8 @@ size_t indents_match(const char *a_line, size_t a_indent, const char assert(a_indent == indent_length(a_line)); assert(b_indent == indent_length(b_line)); - return b_indent <= a_indent && !strncmp(a_line, b_line, b_indent); + return b_indent <= a_indent && + strncmp(a_line, b_line, b_indent) == 0; } /* Is foo the beginning of a paragraph? diff --git a/src/rcfile.c b/src/rcfile.c index cd30efa3..728a9a5a 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -186,26 +186,26 @@ int colortoint(const char *colorname, int *bright) if (colorname == NULL) return -1; - if (!strncasecmp(colorname, "bright", 6)) { + if (strncasecmp(colorname, "bright", 6) == 0) { *bright = 1; colorname += 6; } - if (!strcasecmp(colorname, "green")) + if (strcasecmp(colorname, "green") == 0) mcolor = COLOR_GREEN; - else if (!strcasecmp(colorname, "red")) + else if (strcasecmp(colorname, "red") == 0) mcolor = COLOR_RED; - else if (!strcasecmp(colorname, "blue")) + else if (strcasecmp(colorname, "blue") == 0) mcolor = COLOR_BLUE; - else if (!strcasecmp(colorname, "white")) + else if (strcasecmp(colorname, "white") == 0) mcolor = COLOR_WHITE; - else if (!strcasecmp(colorname, "yellow")) + else if (strcasecmp(colorname, "yellow") == 0) mcolor = COLOR_YELLOW; - else if (!strcasecmp(colorname, "cyan")) + else if (strcasecmp(colorname, "cyan") == 0) mcolor = COLOR_CYAN; - else if (!strcasecmp(colorname, "magenta")) + else if (strcasecmp(colorname, "magenta") == 0) mcolor = COLOR_MAGENTA; - else if (!strcasecmp(colorname, "black")) + else if (strcasecmp(colorname, "black") == 0) mcolor = COLOR_BLACK; else { rcfile_error(N_("Color %s not understood.\n" @@ -353,7 +353,7 @@ void parse_colors(char *ptr) char *bgcolorname; strtok(fgstr, ","); bgcolorname = strtok(NULL, ","); - if (!strncasecmp(bgcolorname, "bright", 6)) { + if (strncasecmp(bgcolorname, "bright", 6) == 0) { rcfile_error(N_("Background color %s cannot be bright\n"), bgcolorname); return; } @@ -391,7 +391,7 @@ void parse_colors(char *ptr) if (*ptr == '\n' || *ptr == '\0') break; - if (!strncasecmp(ptr, "start=", 6)) { + if (strncasecmp(ptr, "start=", 6) == 0) { ptr += 6; expectend = 1; } @@ -433,7 +433,7 @@ void parse_colors(char *ptr) } if (expectend) { - if (ptr == NULL || strncasecmp(ptr, "end=", 4)) { + if (ptr == NULL || strncasecmp(ptr, "end=", 4) != 0) { rcfile_error(N_("\"start=\" requires a corresponding \"end=\"\n")); return; } @@ -494,14 +494,14 @@ void parse_rcfile(FILE *rcstream) continue; /* Else try to parse the keyword */ - if (!strcasecmp(keyword, "set")) + if (strcasecmp(keyword, "set") == 0) set = 1; - else if (!strcasecmp(keyword, "unset")) + else if (strcasecmp(keyword, "unset") == 0) set = -1; #ifdef ENABLE_COLOR - else if (!strcasecmp(keyword, "syntax")) + else if (strcasecmp(keyword, "syntax") == 0) parse_syntax(ptr); - else if (!strcasecmp(keyword, "color")) + else if (strcasecmp(keyword, "color") == 0) parse_colors(ptr); #endif /* ENABLE_COLOR */ else { @@ -515,32 +515,32 @@ void parse_rcfile(FILE *rcstream) if (set != 0) { for (i = 0; rcopts[i].name != NULL; i++) { - if (!strcasecmp(option, rcopts[i].name)) { + if (strcasecmp(option, rcopts[i].name) == 0) { #ifdef DEBUG fprintf(stderr, "%s: Parsing option %s\n", "parse_rcfile()", rcopts[i].name); #endif if (set == 1) { - if (!strcasecmp(rcopts[i].name, "tabsize") + if (strcasecmp(rcopts[i].name, "tabsize") == 0 #ifndef DISABLE_OPERATINGDIR - || !strcasecmp(rcopts[i].name, "operatingdir") + || strcasecmp(rcopts[i].name, "operatingdir") == 0 #endif #ifndef DISABLE_WRAPJUSTIFY - || !strcasecmp(rcopts[i].name, "fill") + || strcasecmp(rcopts[i].name, "fill") == 0 #endif #ifndef NANO_SMALL - || !strcasecmp(rcopts[i].name, "whitespace") + || strcasecmp(rcopts[i].name, "whitespace") == 0 #endif #ifndef DISABLE_JUSTIFY - || !strcasecmp(rcopts[i].name, "punct") - || !strcasecmp(rcopts[i].name, "brackets") - || !strcasecmp(rcopts[i].name, "quotestr") + || strcasecmp(rcopts[i].name, "punct") == 0 + || strcasecmp(rcopts[i].name, "brackets") == 0 + || strcasecmp(rcopts[i].name, "quotestr") == 0 #endif #ifndef NANO_SMALL - || !strcasecmp(rcopts[i].name, "backupdir") + || strcasecmp(rcopts[i].name, "backupdir") == 0 #endif #ifndef DISABLE_SPELLER - || !strcasecmp(rcopts[i].name, "speller") + || strcasecmp(rcopts[i].name, "speller") == 0 #endif ) { if (*ptr == '\n' || *ptr == '\0') { @@ -555,12 +555,12 @@ void parse_rcfile(FILE *rcstream) fprintf(stderr, "option = %s\n", option); #endif #ifndef DISABLE_OPERATINGDIR - if (!strcasecmp(rcopts[i].name, "operatingdir")) + if (strcasecmp(rcopts[i].name, "operatingdir") == 0) operating_dir = mallocstrcpy(NULL, option); else #endif #ifndef DISABLE_WRAPJUSTIFY - if (!strcasecmp(rcopts[i].name, "fill")) { + if (strcasecmp(rcopts[i].name, "fill") == 0) { if (parse_num(option, &wrap_at) == -1) { rcfile_error(N_("Requested fill size %s invalid\n"), option); wrap_at = -CHARS_FROM_EOL; @@ -568,7 +568,7 @@ void parse_rcfile(FILE *rcstream) } else #endif #ifndef NANO_SMALL - if (!strcasecmp(rcopts[i].name, "whitespace")) { + if (strcasecmp(rcopts[i].name, "whitespace") == 0) { size_t ws_len; whitespace = mallocstrcpy(NULL, option); ws_len = strlen(whitespace); @@ -580,35 +580,35 @@ void parse_rcfile(FILE *rcstream) } else #endif #ifndef DISABLE_JUSTIFY - if (!strcasecmp(rcopts[i].name, "punct")) { + if (strcasecmp(rcopts[i].name, "punct") == 0) { punct = mallocstrcpy(NULL, option); if (strchr(punct, '\t') != NULL || strchr(punct, ' ') != NULL) { rcfile_error(N_("Non-tab and non-space characters required\n")); free(punct); punct = NULL; } - } else if (!strcasecmp(rcopts[i].name, "brackets")) { + } else if (strcasecmp(rcopts[i].name, "brackets") == 0) { brackets = mallocstrcpy(NULL, option); if (strchr(brackets, '\t') != NULL || strchr(brackets, ' ') != NULL) { rcfile_error(N_("Non-tab and non-space characters required\n")); free(brackets); brackets = NULL; } - } else if (!strcasecmp(rcopts[i].name, "quotestr")) + } else if (strcasecmp(rcopts[i].name, "quotestr") == 0) quotestr = mallocstrcpy(NULL, option); else #endif #ifndef NANO_SMALL - if (!strcasecmp(rcopts[i].name, "backupdir")) + if (strcasecmp(rcopts[i].name, "backupdir") == 0) backup_dir = mallocstrcpy(NULL, option); else #endif #ifndef DISABLE_SPELLER - if (!strcasecmp(rcopts[i].name, "speller")) + if (strcasecmp(rcopts[i].name, "speller") == 0) alt_speller = mallocstrcpy(NULL, option); else #endif - if (!strcasecmp(rcopts[i].name, "tabsize")) { + if (strcasecmp(rcopts[i].name, "tabsize") == 0) { if (parse_num(option, &tabsize) == -1 || tabsize <= 0) rcfile_error(N_("Requested tab size %s invalid\n"), option); tabsize = -1; diff --git a/src/winio.c b/src/winio.c index ba2feb64..65345b9a 100644 --- a/src/winio.c +++ b/src/winio.c @@ -1736,7 +1736,8 @@ int nanogetstr(int allowtabs, const char *buf, const char *def, search history, and we need to save the current answer in currentbuf; do this and reset use_cb to 0 */ - if (currentbuf == NULL || (use_cb == 1 && strcmp(currentbuf, answer))) { + if (currentbuf == NULL || (use_cb == 1 && + strcmp(currentbuf, answer) != 0)) { currentbuf = mallocstrcpy(currentbuf, answer); use_cb = 0; } @@ -1747,7 +1748,8 @@ int nanogetstr(int allowtabs, const char *buf, const char *def, we need to make the string in currentbuf the current answer; do this, blow away currentbuf since we don't need it anymore, and reset use_cb to 0 */ - if (currentbuf != NULL && use_cb == 2 && strcmp(currentbuf, answer)) { + if (currentbuf != NULL && use_cb == 2 && + strcmp(currentbuf, answer) != 0) { answer = mallocstrcpy(answer, currentbuf); free(currentbuf); currentbuf = NULL;