From d96a9900ae339fa44c3d337e4282769688345c06 Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Tue, 26 Nov 2024 15:47:21 +0300 Subject: [PATCH] import cscope-15.9-24.el10 --- .cscope.metadata | 1 + .gitignore | 1 + ...tch-81-Fix-reading-include-files-in-.patch | 45 ++ ...cscope-2-Cull-extraneous-declaration.patch | 26 ++ ...rectories-found-during-header-search.patch | 32 ++ ...ee-via-double-fclose-in-changestring.patch | 38 ++ ...ontrib-ocs-Fix-bashims-Closes-480591.patch | 77 ++++ .../cscope-6-doc-cscope.1-Fix-hyphens.patch | 130 ++++++ ...anner-swallow-function-as-parameters.patch | 43 ++ ...up-GNU-Emacs-27.1-removes-function-p.patch | 81 ++++ ...pe-9-fix-access-beyond-end-of-string.patch | 75 ++++ ...-typo-fixes-in-man-page-and-comments.patch | 229 +++++++++++ SOURCES/dist-1-coverity-fixes.patch | 26 ++ SOURCES/dist-2-cscope-indexer-help.patch | 52 +++ SOURCES/dist-3-add-selftests.patch | 385 ++++++++++++++++++ SOURCES/dist-4-fix-printf.patch | 16 + SPECS/cscope.spec | 126 ++++++ 17 files changed, 1383 insertions(+) create mode 100644 .cscope.metadata create mode 100644 .gitignore create mode 100644 SOURCES/cscope-1-modified-from-patch-81-Fix-reading-include-files-in-.patch create mode 100644 SOURCES/cscope-2-Cull-extraneous-declaration.patch create mode 100644 SOURCES/cscope-3-Avoid-putting-directories-found-during-header-search.patch create mode 100644 SOURCES/cscope-4-Avoid-double-free-via-double-fclose-in-changestring.patch create mode 100644 SOURCES/cscope-5-contrib-ocs-Fix-bashims-Closes-480591.patch create mode 100644 SOURCES/cscope-6-doc-cscope.1-Fix-hyphens.patch create mode 100644 SOURCES/cscope-7-fscanner-swallow-function-as-parameters.patch create mode 100644 SOURCES/cscope-8-emacs-plugin-fixup-GNU-Emacs-27.1-removes-function-p.patch create mode 100644 SOURCES/cscope-9-fix-access-beyond-end-of-string.patch create mode 100644 SOURCES/cscope-a-docs-typo-fixes-in-man-page-and-comments.patch create mode 100644 SOURCES/dist-1-coverity-fixes.patch create mode 100644 SOURCES/dist-2-cscope-indexer-help.patch create mode 100644 SOURCES/dist-3-add-selftests.patch create mode 100644 SOURCES/dist-4-fix-printf.patch create mode 100644 SPECS/cscope.spec diff --git a/.cscope.metadata b/.cscope.metadata new file mode 100644 index 0000000..91cffc5 --- /dev/null +++ b/.cscope.metadata @@ -0,0 +1 @@ +e89c6a3458164552d9301ccc213181f463e5210e SOURCES/cscope-15.9.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae6c5fa --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/cscope-15.9.tar.gz diff --git a/SOURCES/cscope-1-modified-from-patch-81-Fix-reading-include-files-in-.patch b/SOURCES/cscope-1-modified-from-patch-81-Fix-reading-include-files-in-.patch new file mode 100644 index 0000000..8acf8fa --- /dev/null +++ b/SOURCES/cscope-1-modified-from-patch-81-Fix-reading-include-files-in-.patch @@ -0,0 +1,45 @@ +From 39fb385d69dc06343e8f8a7e28d516d5aef97ec8 Mon Sep 17 00:00:00 2001 +From: Hans-Bernhard Broeker +Date: Sat, 28 Jul 2018 17:50:03 +0200 +Subject: [PATCH 1/9] [modified from patch #81] Fix reading include files in -c + mode + +Signed-off-by: Vladis Dronov +--- + src/build.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/build.c b/src/build.c +index a32b5cb..557e660 100644 +--- a/src/build.c ++++ b/src/build.c +@@ -124,7 +124,7 @@ samelist(FILE *oldrefs, char **names, int count) + } + /* see if the name list is the same */ + for (i = 0; i < count; ++i) { +- if ((1 != fscanf(oldrefs," %[^\n]",oldname)) || ++ if ((1 != fscanf(oldrefs," %" PATHLEN_STR "[^\n]",oldname)) || + strnotequal(oldname, names[i])) { + return(NO); + } +@@ -305,7 +305,7 @@ cscope: -q option mismatch between command line and old symbol database\n"); + /* see if the list of source files is the same and + none have been changed up to the included files */ + for (i = 0; i < nsrcfiles; ++i) { +- if ((1 != fscanf(oldrefs," %[^\n]",oldname)) ++ if ((1 != fscanf(oldrefs, " %" PATHLEN_STR "[^\n]", oldname)) + || strnotequal(oldname, srcfiles[i]) + || (lstat(srcfiles[i], &statstruct) != 0) + || (statstruct.st_mtime > reftime) +@@ -315,7 +315,7 @@ cscope: -q option mismatch between command line and old symbol database\n"); + } + /* the old cross-reference is up-to-date */ + /* so get the list of included files */ +- while (i++ < oldnum && fgets(oldname, sizeof(oldname), oldrefs)) { ++ while (i++ < oldnum && fscanf(oldrefs, "%" PATHLEN_STR "s", oldname)) { + addsrcfile(oldname); + } + fclose(oldrefs); +-- +2.26.2 + diff --git a/SOURCES/cscope-2-Cull-extraneous-declaration.patch b/SOURCES/cscope-2-Cull-extraneous-declaration.patch new file mode 100644 index 0000000..ccbeba2 --- /dev/null +++ b/SOURCES/cscope-2-Cull-extraneous-declaration.patch @@ -0,0 +1,26 @@ +From 6a6998ecd0392ea643c4c4b317af9af8270761aa Mon Sep 17 00:00:00 2001 +From: Hans-Bernhard Broeker +Date: Thu, 9 Aug 2018 16:25:31 +0200 +Subject: [PATCH 3/9] Cull extraneous declaration + +Signed-off-by: Vladis Dronov +--- + src/global.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/global.h b/src/global.h +index dbc8a43..a6f1486 100644 +--- a/src/global.h ++++ b/src/global.h +@@ -224,7 +224,7 @@ extern char dicode2[]; /* digraph second character code */ + + dicode2[(unsigned char)(inchar2)]) + + /* main.c global data */ +-extern char *editor, *home, *shell, *lineflag; /* environment variables */ ++extern char *editor, *shell, *lineflag; /* environment variables */ + extern char *home; /* Home directory */ + extern BOOL lineflagafterfile; + extern char *argv0; /* command name */ +-- +2.26.2 + diff --git a/SOURCES/cscope-3-Avoid-putting-directories-found-during-header-search.patch b/SOURCES/cscope-3-Avoid-putting-directories-found-during-header-search.patch new file mode 100644 index 0000000..500ce15 --- /dev/null +++ b/SOURCES/cscope-3-Avoid-putting-directories-found-during-header-search.patch @@ -0,0 +1,32 @@ +From f693474b85f8dc1d31570833c62d9210ed1ffcf2 Mon Sep 17 00:00:00 2001 +From: mikhail nefedov +Date: Thu, 23 Aug 2018 00:36:52 +0200 +Subject: [PATCH 4/9] Avoid putting directories found during header search into + srcfiles. + +Signed-off-by: Vladis Dronov +--- + src/dir.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/dir.c b/src/dir.c +index 01c599e..7f7287e 100644 +--- a/src/dir.c ++++ b/src/dir.c +@@ -616,8 +616,11 @@ incfile(char *file, char *type) + snprintf(path, sizeof(path), "%.*s/%s", + (int)(PATHLEN - 2 - file_len), incdirs[i], + file); +- if (access(compath(path), READ) == 0) { +- addsrcfile(path); ++ if (access(compath(path), READ) == 0) { ++ struct stat st; ++ if( 0 == stat(path,&st) && S_ISREG(st.st_mode) ) { ++ addsrcfile(path); ++ } + break; + } + } +-- +2.26.2 + diff --git a/SOURCES/cscope-4-Avoid-double-free-via-double-fclose-in-changestring.patch b/SOURCES/cscope-4-Avoid-double-free-via-double-fclose-in-changestring.patch new file mode 100644 index 0000000..8e862bf --- /dev/null +++ b/SOURCES/cscope-4-Avoid-double-free-via-double-fclose-in-changestring.patch @@ -0,0 +1,38 @@ +From f632c3fd86fce2c495a290dd70f5f09e3e7e7a28 Mon Sep 17 00:00:00 2001 +From: Hans-Bernhard Broeker +Date: Sat, 13 Apr 2019 14:52:35 +0200 +Subject: [PATCH 5/9] Avoid double-free via double fclose in changestring. + +Mark closed FILE* by setting it to NULL, and check for that. + +Signed-off-by: Vladis Dronov +--- + src/command.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/command.c b/src/command.c +index 8740b11..dcb5278 100644 +--- a/src/command.c ++++ b/src/command.c +@@ -786,6 +786,7 @@ changestring(void) + } + fprintf(script, "w\nq\n!\n"); /* write and quit */ + fclose(script); ++ script = NULL; + + /* if any line was marked */ + if (anymarked == YES) { +@@ -803,7 +804,9 @@ changestring(void) + } + changing = NO; + mousemenu(); +- fclose(script); ++ if (script != NULL) { ++ fclose(script); ++ } + free(change); + return(anymarked); + } +-- +2.26.2 + diff --git a/SOURCES/cscope-5-contrib-ocs-Fix-bashims-Closes-480591.patch b/SOURCES/cscope-5-contrib-ocs-Fix-bashims-Closes-480591.patch new file mode 100644 index 0000000..1807974 --- /dev/null +++ b/SOURCES/cscope-5-contrib-ocs-Fix-bashims-Closes-480591.patch @@ -0,0 +1,77 @@ +From bb7f25fad3cade493486a6287f5212cdfb6cce24 Mon Sep 17 00:00:00 2001 +From: Jari Aalto +Date: Sat, 8 May 2010 20:15:35 +0300 +Subject: [PATCH 6/9] contrib/ocs: Fix bashims (Closes: #480591) + +Signed-off-by: Jari Aalto +Signed-off-by: Vladis Dronov +--- + contrib/ocs | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/contrib/ocs b/contrib/ocs +index e924f4f..bd556b4 100755 +--- a/contrib/ocs ++++ b/contrib/ocs +@@ -86,7 +86,7 @@ if [ ! -d ${SYSDIR} ]; then + fi + + # Check that cscope is in PATH +-type cscope 1>/dev/null 2>&1 ++which cscope 1>/dev/null 2>&1 + + if [ $? -ne 0 ] + then +@@ -167,8 +167,8 @@ create_list() + + if [ "${FORCE}" != "Y" ] + then +- echo "\n${LIST}" +- echo "Update the library? <(Y)es, (N)o, (Q)uit> [n] \c" ++ printf "\n${LIST}\n" ++ printf "Update the library? <(Y)es, (N)o, (Q)uit> [n] " + read x y + case $x in + [Yy]* ) ;; +@@ -176,9 +176,9 @@ create_list() + *) return ;; + esac + fi +- echo "Updating library:\n ${LIST} \c" ++ printf "Updating library:\n ${LIST} " + else +- echo "Creating library:\n ${LIST} \c" ++ printf "Creating library:\n ${LIST} " + fi + + ( +@@ -196,7 +196,7 @@ create_list() + -print + ) | grep -v SCCS | sort -u > ${LIST} + +- echo "\n`cat ${LIST} | wc -l` files listed" ++ printf "\n`cat ${LIST} | wc -l` files listed\n" + } + + # +@@ -210,7 +210,7 @@ exp_inc() + then + for i in `cat ${theInc}` + do +- echo "-I $i \c" ++ printf "-I $i " + done + fi + } +@@ -285,7 +285,7 @@ std_libs ${SYSDIR}$PWD + + DIR=$PWD + if [ ! -n "${NOUPDATE}" -o -n "${SPECDEST}" ] ; then +-echo "Create new library? <(L)ocal, (H)ome, (S)ystem, (Q)uit> [q] \c" ++ printf "Create new library? <(L)ocal, (H)ome, (S)ystem, (Q)uit> [q] " + + # shellcheck disable=SC2034 + read x y +-- +2.26.2 + diff --git a/SOURCES/cscope-6-doc-cscope.1-Fix-hyphens.patch b/SOURCES/cscope-6-doc-cscope.1-Fix-hyphens.patch new file mode 100644 index 0000000..290534d --- /dev/null +++ b/SOURCES/cscope-6-doc-cscope.1-Fix-hyphens.patch @@ -0,0 +1,130 @@ +From 3f9e3da40a77274705c9cb9103a6046daa950f5d Mon Sep 17 00:00:00 2001 +From: Jari Aalto +Date: Sat, 8 May 2010 20:16:14 +0300 +Subject: [PATCH 7/9] doc/cscope.1: Fix hyphens + +Signed-off-by: Jari Aalto +Signed-off-by: Vladis Dronov +--- + doc/cscope.1 | 33 ++++++++++++++++----------------- + 1 file changed, 16 insertions(+), 17 deletions(-) + +diff --git a/doc/cscope.1 b/doc/cscope.1 +index ca94e8b..0318347 100644 +--- a/doc/cscope.1 ++++ b/doc/cscope.1 +@@ -1,4 +1,3 @@ +-.PU + .TH CSCOPE "1" "January 2007" "The Santa Cruz Operation" + .SH NAME + cscope - interactively examine a C program +@@ -106,7 +105,7 @@ below. (The #include files + may be specified with either double quotes or angle brackets.) + The incdir directory is searched in addition to the current + directory (which is searched first) and the standard list +-(which is searched last). If more than one occurrence of -I ++(which is searched last). If more than one occurrence of \-I + appears, the directories are searched in the order they appear + on the command line. + .TP +@@ -129,7 +128,7 @@ source trees generally do not use it. + .TP + .B -L + Do a single search with line-oriented output when used with the +--num pattern option. ++\-num pattern option. + .TP + .B -l + Line-oriented interface (see ``Line-Oriented Interface'' +@@ -146,7 +145,7 @@ Prepend + .I path + to relative file names in a pre-built cross-reference file so you do + not have to change to the directory where the cross-reference file was +-built. This option is only valid with the -d option. ++built. This option is only valid with the \-d option. + .TP + .BI -p n + Display the last +@@ -195,7 +194,7 @@ Remove the cscope reference file and inverted indexes when exiting + .I files + A list of file names to operate on. + .PP +-The -I, -c, -k, -p, -q, and -T options can also be in the cscope.files file. ++The \-I, \-c, \-k, \-p, \-q, and \-T options can also be in the cscope.files file. + .PP + .SS Requesting the initial search + .PP +@@ -266,7 +265,7 @@ Append the displayed list of lines to a file. + .TP + .B < + Read lines from a file that is in symbol reference format +-(created by > or >>), just like the -F option. ++(created by > or >>), just like the \-F option. + .TP + .B ^ + Filter all lines through a shell command and display the +@@ -371,7 +370,7 @@ commands, respectively. + .PP + .SS Line-Oriented interface + .PP +-The -l option lets you use cscope where a screen-oriented interface ++The \-l option lets you use cscope where a screen-oriented interface + would not be useful, for example, from another screen-oriented + program. + .PP +@@ -380,10 +379,10 @@ with the field number (counting from 0) immediately followed by the + search pattern, for example, ``lmain'' finds the definition of the + main function. + .PP +-If you just want a single search, instead of the -l option use the -L +-and -num pattern options, and you won't get the >> prompt. ++If you just want a single search, instead of the \-l option use the \-L ++and \-num pattern options, and you won't get the >> prompt. + .PP +-For -l, cscope outputs the number of reference lines ++For \-l, cscope outputs the number of reference lines + cscope: 2 lines + .PP + For each reference found, cscope outputs a line consisting of the file +@@ -468,11 +467,11 @@ is not set, cscope searches only in the current directory. + .SH FILES + .TP + .B cscope.files +-Default files containing -I, -p, -q, and -T options and the +-list of source files (overridden by the -i option). ++Default files containing \-I, \-p, \-q, and \-T options and the ++list of source files (overridden by the \-i option). + .TP + .B cscope.out +-Symbol cross-reference file (overridden by the -f option), ++Symbol cross-reference file (overridden by the \-f option), + which is put in the home directory if it cannot be created in + the current directory. + .TP +@@ -482,11 +481,11 @@ the current directory. + .B cscope.po.out + .PD 1 + Default files containing the inverted index used for quick +-symbol searching (-q option). If you use the -f option to ++symbol searching (\-q option). If you use the \-f option to + rename the cross-reference file (so it's not cscope.out), the + names for these inverted index files will be created by adding +- .in and .po to the name you supply with -f. For example, if you +-indicated -f xyz, then these files would be named xyz.in and ++ .in and .po to the name you supply with \-f. For example, if you ++indicated \-f xyz, then these files would be named xyz.in and + xyz.po. + .TP + .B INCDIR +@@ -554,7 +553,7 @@ definition, for example, + .PP + char flag + #ifdef ALLOCATE_STORAGE +- = -1 ++ = \-1 + #endif + ; + .PP +-- +2.26.2 + diff --git a/SOURCES/cscope-7-fscanner-swallow-function-as-parameters.patch b/SOURCES/cscope-7-fscanner-swallow-function-as-parameters.patch new file mode 100644 index 0000000..a089a61 --- /dev/null +++ b/SOURCES/cscope-7-fscanner-swallow-function-as-parameters.patch @@ -0,0 +1,43 @@ +From e1b4cbc93529b07b3217928e8f9b1f43b80f9b06 Mon Sep 17 00:00:00 2001 +From: Jiri Slaby +Date: Fri, 5 Dec 2014 19:15:53 +0100 +Subject: [PATCH 8/9] fscanner: swallow function as parameters +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Some functions take as a parameter a pointer to another function. This +causes troubles in the cscope scanner and such function definition is +dropped on the floor. + +Instead of choking and skipping the definition/declaration, teach the +scanner about this case. So now cscope will not skip those and put +them properly in the index. + +I carry this patch for a couple of months and using cscope daily on +the Linux kernel and see no problems. + +Signed-off-by: Jiri Slaby +Cc: Hans-Bernhard Bröker +Cc: Neil Horman +Signed-off-by: Vladis Dronov +--- + src/fscanner.l | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fscanner.l b/src/fscanner.l +index 8a93192..43880bf 100644 +--- a/src/fscanner.l ++++ b/src/fscanner.l +@@ -505,7 +505,7 @@ if{wsnl}*\( { /* ignore 'if' */ + } + + { +-{ws}*\(({wsnl}|{identifier}|{number}|[*&[\]=,.:])*\)([()]|{wsnl})*[:a-zA-Z_#{] { ++{ws}*\(({wsnl}|{identifier}|\({ws}*\*{ws}*{identifier}{ws}*\){ws}*\([^()]*\)|{number}|[*&[\]=,.:])*\)([()]|{wsnl})*[:a-zA-Z_#{] { + /* a function definition */ + /* note: "#define a (b) {" and "#if defined(a)\n#" + * are not fcn definitions! */ +-- +2.26.2 + diff --git a/SOURCES/cscope-8-emacs-plugin-fixup-GNU-Emacs-27.1-removes-function-p.patch b/SOURCES/cscope-8-emacs-plugin-fixup-GNU-Emacs-27.1-removes-function-p.patch new file mode 100644 index 0000000..2f32cef --- /dev/null +++ b/SOURCES/cscope-8-emacs-plugin-fixup-GNU-Emacs-27.1-removes-function-p.patch @@ -0,0 +1,81 @@ +From eaea31cb93ecddda69a373f83f632e1a450c3c90 Mon Sep 17 00:00:00 2001 +From: Brock Zheng Techyauld Ltd +Date: Tue, 25 Aug 2020 20:28:11 +0800 +Subject: [PATCH 9/9] emacs plugin fixup: GNU/Emacs 27.1 removes function + process-kill-without-query + +Signed-off-by: Vladis Dronov +--- + contrib/xcscope/xcscope.el | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/contrib/xcscope/xcscope.el b/contrib/xcscope/xcscope.el +index 0e814ea..859dff5 100644 +--- a/contrib/xcscope/xcscope.el ++++ b/contrib/xcscope/xcscope.el +@@ -180,7 +180,7 @@ + ;; variable is used to determine the mapping. One use for this + ;; variable is when you want to share the database file with other + ;; users; in this case, the database may be located in a directory +-;; separate from the source files. ++;; separate from the source files. + ;; + ;; Setting the variable, `cscope-initial-directory', is useful when a + ;; search is to be expanded by specifying a cscope database directory +@@ -366,7 +366,7 @@ + ;; disable automatic database creation, updating, and + ;; maintenance. + ;; +-;; "cscope-display-cscope-buffer" ++;; "cscope-display-cscope-buffer" + ;; If non-nil, display the *cscope* buffer after each search + ;; (default). This variable can be set in order to reduce the + ;; number of keystrokes required to navigate through the matches. +@@ -1233,7 +1233,7 @@ directory should begin.") + :style toggle :selected cscope-use-relative-paths ] + [ "No mouse prompts" (setq cscope-no-mouse-prompts + (not cscope-no-mouse-prompts)) +- :style toggle :selected cscope-no-mouse-prompts ] ++ :style toggle :selected cscope-no-mouse-prompts ] + ) + )) + +@@ -1291,7 +1291,7 @@ The text properties to be added: + ) + + +-(defun cscope-show-entry-internal (file line-number ++(defun cscope-show-entry-internal (file line-number + &optional save-mark-p window arrow-p) + "Display the buffer corresponding to FILE and LINE-NUMBER + in some window. If optional argument WINDOW is given, +@@ -1943,7 +1943,7 @@ using the mouse." + cscope-directory + (file-name-directory cscope-directory)) + )) +- (setq cscope-directory ++ (setq cscope-directory + (file-name-as-directory cscope-directory)) + (if (not (member cscope-directory cscope-searched-dirs)) + (progn +@@ -2006,7 +2006,7 @@ using the mouse." + (set-process-filter cscope-process cscope-filter-func) + (set-process-sentinel cscope-process cscope-sentinel-func) + (set-marker (process-mark cscope-process) (point)) +- (process-kill-without-query cscope-process) ++ (set-process-query-on-exit-flag cscope-process nil) + (if cscope-running-in-xemacs + (setq modeline-process ": Searching ...")) + (setq buffer-read-only t) +@@ -2139,7 +2139,7 @@ SENTINEL-FUNC are optional process filter and sentinel, respectively." + cscope-indexing-script args)) + (set-process-sentinel cscope-unix-index-process + 'cscope-unix-index-files-sentinel) +- (process-kill-without-query cscope-unix-index-process) ++ (set-process-query-on-exit-flag cscope-unix-index-process nil) + ) + )) + +-- +2.26.2 + diff --git a/SOURCES/cscope-9-fix-access-beyond-end-of-string.patch b/SOURCES/cscope-9-fix-access-beyond-end-of-string.patch new file mode 100644 index 0000000..8bf1b81 --- /dev/null +++ b/SOURCES/cscope-9-fix-access-beyond-end-of-string.patch @@ -0,0 +1,75 @@ +From b3ab5461f1a02aa0a07a6f50bc2fa4da057193d1 Mon Sep 17 00:00:00 2001 +From: Dominique +Date: Sun, 8 May 2022 08:27:32 +0200 +Subject: [PATCH 1/2] fix: access beyond end of string when search called by + fails +Content-type: text/plain + +findcalledby() returned a string which was not '\0' terminated. +That string is later output with the snprintf %s format which +accessed beyond the end of the string. Bug caused a crash on macOS +with M1 processor and was also causing a crash on Linux too when +building with asan (address sanitizer). + +Signed-off-by: Vladis Dronov +--- + src/find.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/find.c b/src/find.c +index d7a66f0..e8f1141 100644 +--- a/src/find.c ++++ b/src/find.c +@@ -1044,7 +1044,7 @@ char * + findcalledby(char *pattern) + { + char file[PATHLEN + 1]; /* source file name */ +- static char found_caller = 'n'; /* seen calling function? */ ++ static char found_caller[2] = "n"; /* seen calling function? */ + BOOL macro = NO; + + if (invertedindex == YES) { +@@ -1057,12 +1057,12 @@ findcalledby(char *pattern) + case FCNDEF: + if (dbseek(p->lineoffset) != -1 && + scanpast('\t') != NULL) { /* skip def */ +- found_caller = 'y'; ++ found_caller[0] = 'y'; + findcalledbysub(srcfiles[p->fileindex], macro); + } + } + } +- return(&found_caller); ++ return(&found_caller[0]); + } + /* find the function definition(s) */ + while (scanpast('\t') != NULL) { +@@ -1072,7 +1072,7 @@ findcalledby(char *pattern) + skiprefchar(); /* save file name */ + fetch_string_from_dbase(file, sizeof(file)); + if (*file == '\0') { /* if end of symbols */ +- return(&found_caller); ++ return(&found_caller[0]); + } + progress("Search", searchcount, nsrcfiles); + break; +@@ -1087,14 +1087,14 @@ findcalledby(char *pattern) + case FCNDEF: + skiprefchar(); /* match name to pattern */ + if (match()) { +- found_caller = 'y'; ++ found_caller[0] = 'y'; + findcalledbysub(file, macro); + } + break; + } + } + +- return (&found_caller); ++ return (&found_caller[0]); + } + + /* find this term, which can be a regular expression */ +-- +2.37.3 + diff --git a/SOURCES/cscope-a-docs-typo-fixes-in-man-page-and-comments.patch b/SOURCES/cscope-a-docs-typo-fixes-in-man-page-and-comments.patch new file mode 100644 index 0000000..7751172 --- /dev/null +++ b/SOURCES/cscope-a-docs-typo-fixes-in-man-page-and-comments.patch @@ -0,0 +1,229 @@ +From b64638020badf92b36424c06bda6e49942f77cd6 Mon Sep 17 00:00:00 2001 +From: Dominique +Date: Sun, 8 May 2022 08:52:41 +0200 +Subject: [PATCH 2/2] docs: typo fixes in man page and in source code comments +Content-type: text/plain + +Signed-off-by: Vladis Dronov +--- + contrib/webcscope/hilite.c | 6 +++--- + doc/xcscope.1 | 8 ++++---- + src/build.c | 2 +- + src/command.c | 2 +- + src/compath.c | 2 +- + src/crossref.c | 2 +- + src/find.c | 4 ++-- + src/invlib.c | 2 +- + src/main.c | 4 ++-- + src/mouse.c | 2 +- + src/snprintf.c | 2 +- + 11 files changed, 18 insertions(+), 18 deletions(-) + +diff --git a/contrib/webcscope/hilite.c b/contrib/webcscope/hilite.c +index 4f5af07..feacf0f 100644 +--- a/contrib/webcscope/hilite.c ++++ b/contrib/webcscope/hilite.c +@@ -17,7 +17,7 @@ + For HTML fragment generation: + CHTM file.c > file.htm + +- - Some input convertion required to use this ++ - Some input conversion required to use this + code as CGI module. Will be done soon. + - Optimization required for blocks of EOL + comments +@@ -51,7 +51,7 @@ + #define MODE_STRING 8 + + +-int is_delimeter(char c) ++int is_delimiter(char c) + { + int ii=0; + char dlms[] = +@@ -318,7 +318,7 @@ int main(int _argc, char** _argv) + { + buf[bufidx++] = c; + buf[bufidx] = 0; +- if (is_delimeter(c)) ++ if (is_delimiter(c)) + { + kw = 0; + if (bufidx>2) +diff --git a/doc/xcscope.1 b/doc/xcscope.1 +index fa4199c..5bf0de1 100644 +--- a/doc/xcscope.1 ++++ b/doc/xcscope.1 +@@ -1,6 +1,6 @@ + '\" t + .\" The xcscope.el man page +-.\" Origionally written by Darryl Okahata, Apr 2000 ++.\" Originally written by Darryl Okahata, Apr 2000 + .\" + .\" Converted to a man page July 20, 2004 by Neil Horman + .\" +@@ -152,7 +152,7 @@ cscope database directories: + .P + If a search is initiated from a .c file in /users/jdoe/sources/proj1 + then (assuming the variable, `cscope-database-regexps', is not set) +-/users/jdoe/sources/proj1 will be used as the cscope data base directory. ++/users/jdoe/sources/proj1 will be used as the cscope database directory. + Only matches in files in /users/jdoe/sources/proj1 will be found. This + can be remedied by typing "C-c s a" and then "M-del" to remove single + path element in order to use a cscope database directory of +@@ -173,7 +173,7 @@ C-c s d Find global definition. + C-c s g Find global definition (alternate binding). + C-c s G Find global definition without prompting. + C-c s c Find functions calling a function. +-C-c s C Find called functions (list functions called ++C-c s C Find called functions (list functions called) + C-c s t Find text string. + C-c s e Find egrep pattern. + C-c s f Find a file. +@@ -527,7 +527,7 @@ done. + + .P + 1. The script, "cscope-indexer", uses a sed command to determine +-what is and is not a C/C++/lex/yacc source file. It's idea of a ++what is and is not a C/C++/lex/yacc source file. Its idea of a + source file may not correspond to yours. + + .P +diff --git a/src/build.c b/src/build.c +index 557e660..4d4e201 100644 +--- a/src/build.c ++++ b/src/build.c +@@ -133,7 +133,7 @@ samelist(FILE *oldrefs, char **names, int count) + } + + +-/* create the file name(s) used for a new cross-referene */ ++/* create the file name(s) used for a new cross-reference */ + + void setup_build_filenames(char *reffile) + { +diff --git a/src/command.c b/src/command.c +index dcb5278..75fae6e 100644 +--- a/src/command.c ++++ b/src/command.c +@@ -890,7 +890,7 @@ countrefs(void) + filelen = 4; /* strlen("File") */ + fcnlen = 8; /* strlen("Function") */ + numlen = 0; +- /* HBB NOTE 2012-04-07: it may look like we shouldn't assing tempstring here, ++ /* HBB NOTE 2012-04-07: it may look like we shouldn't assign tempstring here, + * since it's not used. But it has to be assigned just so the return value + * of fscanf will actually reach 4. */ + while (EOF != (i = fscanf(refsfound, +diff --git a/src/compath.c b/src/compath.c +index 037d341..fadca1f 100644 +--- a/src/compath.c ++++ b/src/compath.c +@@ -40,7 +40,7 @@ + * + * WARNING: since pathname is altered by this function, it should + * be located in a temporary buffer. This avoids the problem +- * of accidently changing strings obtained from makefiles ++ * of accidentally changing strings obtained from makefiles + * and stored in global structures. + */ + +diff --git a/src/crossref.c b/src/crossref.c +index 549bc6a..7304fd6 100644 +--- a/src/crossref.c ++++ b/src/crossref.c +@@ -328,7 +328,7 @@ putcrossref(void) + if (c < ' ') { + ++i; + +- /* skip blanks before a preprocesor keyword */ ++ /* skip blanks before a preprocessor keyword */ + /* note: don't use isspace() because \f and \v + are used for keywords */ + while ((j = my_yytext[i]) == ' ' || j == '\t') { +diff --git a/src/find.c b/src/find.c +index d7a66f0..0261161 100644 +--- a/src/find.c ++++ b/src/find.c +@@ -975,7 +975,7 @@ fetch_string_from_dbase(char *s, size_t length) + } + + +-/* scan past the next occurence of this character in the cross-reference */ ++/* scan past the next occurrence of this character in the cross-reference */ + char * + scanpast(char c) + { +@@ -1035,7 +1035,7 @@ lcasify(char *s) + + /* find the functions called by this function */ + +-/* HBB 2000/05/05: for consitency of calling interface between the ++/* HBB 2000/05/05: for consistency of calling interface between the + * different 'find...()' functions, this now returns a char pointer, + * too. Implemented as a pointer to static storage containing 'y' or + * 'n', for the boolean result values YES and NO */ +diff --git a/src/invlib.c b/src/invlib.c +index cd15c35..cdccd32 100644 +--- a/src/invlib.c ++++ b/src/invlib.c +@@ -106,7 +106,7 @@ invmake(char *invname, char *invpost, FILE *infile) + unsigned char *s; + long num; + int i; +- long fileindex = 0; /* initialze, to avoid warning */ ++ long fileindex = 0; /* initialize, to avoid warning */ + unsigned postsize = POSTINC * sizeof(*POST); + unsigned long *intptr; + char line[TERMMAX]; +diff --git a/src/main.c b/src/main.c +index d28271c..2ffabc3 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -547,7 +547,7 @@ cscope: Could not create private temp dir %s\n", + /* put it in the home directory if the database may not be + * up-to-date or doesn't exist in the relative directory, + * so a database in the current directory will be +- * used instead of failing to open a non-existant database in ++ * used instead of failing to open a non-existing database in + * the home directory + */ + snprintf(path, sizeof(path), "%s/%s", home, reffile); +@@ -884,7 +884,7 @@ cscope: cannot read source file name from file %s\n", + break; + #endif + } +- /* execute the commmand, updating the display if necessary */ ++ /* execute the command, updating the display if necessary */ + if (command(c) == YES) { + display(); + } +diff --git a/src/mouse.c b/src/mouse.c +index ea75b37..4f55400 100644 +--- a/src/mouse.c ++++ b/src/mouse.c +@@ -94,7 +94,7 @@ mouseinit(void) + emacsviterm = YES; + mouse = YES; + } +- /* the MOUSE enviroment variable is for 5620 terminal programs that have ++ /* the MOUSE environment variable is for 5620 terminal programs that have + mouse support but the TERM environment variable is the same as a + terminal without a mouse, such as myx */ + else if (strcmp(mygetenv("MOUSE", ""), "myx") == 0) { +diff --git a/src/snprintf.c b/src/snprintf.c +index 3981151..5cb0afe 100644 +--- a/src/snprintf.c ++++ b/src/snprintf.c +@@ -1299,7 +1299,7 @@ again: + * C99 says: "If the `0' and `-' flags both appear, the `0' flag is + * ignored." (7.19.6.1, 6) + */ +- if (flags & PRINT_F_MINUS) /* Left justifty. */ ++ if (flags & PRINT_F_MINUS) /* Left justify. */ + padlen = -padlen; + else if (flags & PRINT_F_ZERO && padlen > 0) { + if (sign != 0) { /* Sign. */ +-- +2.37.3 + diff --git a/SOURCES/dist-1-coverity-fixes.patch b/SOURCES/dist-1-coverity-fixes.patch new file mode 100644 index 0000000..aac7e0c --- /dev/null +++ b/SOURCES/dist-1-coverity-fixes.patch @@ -0,0 +1,26 @@ +diff -up ./src/egrep.c.coverity2 ./src/egrep.c +--- ./src/egrep.c.coverity2 2018-10-11 15:22:40.481384312 -0400 ++++ ./src/egrep.c 2018-10-11 15:23:31.152211589 -0400 +@@ -1205,6 +1205,7 @@ yyparse (void) + # undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); ++ /* coverity[leaked_storage] */ + } + # endif + #endif /* no yyoverflow */ +diff -up ./src/logdir.c.coverity2 ./src/logdir.c +--- ./src/logdir.c.coverity2 2018-10-11 15:23:50.009147309 -0400 ++++ ./src/logdir.c 2018-10-11 15:24:26.279023664 -0400 +@@ -79,8 +79,10 @@ logdir(char *name) + if (line[j] == '\n') + break; + /* return a null pointer if the whole file has been read */ +- if (j >= i) ++ if (j >= i) { ++ (void) close(pwf); + return(0); ++ } + line[++j] = 0; /* terminate the line */ + (void) lseek(pwf, (long) (j - i), 1); /* point at the next line */ + p = nextfield(line); /* get the logname */ diff --git a/SOURCES/dist-2-cscope-indexer-help.patch b/SOURCES/dist-2-cscope-indexer-help.patch new file mode 100644 index 0000000..08efb2a --- /dev/null +++ b/SOURCES/dist-2-cscope-indexer-help.patch @@ -0,0 +1,52 @@ +diff -up ./contrib/xcscope/cscope-indexer.help ./contrib/xcscope/cscope-indexer +--- ./contrib/xcscope/cscope-indexer.help 2017-12-07 10:45:07.000000000 -0500 ++++ ./contrib/xcscope/cscope-indexer 2019-06-24 15:46:31.484852474 -0400 +@@ -80,6 +80,37 @@ RECURSE= + VERBOSE= + export DIR RECURSE # Need to pass these to subprocesses + ++show_usage() { ++ ++cat << EOF ++ ++ cscope-indexer [ -v ] [-f database_file ] [-i list_file ] [ -l ] [ -r ] ++ ++ where: ++ ++ -f database_file ++ Specifies the cscope database file (default: cscope.out). ++ ++ -i list_file ++ Specifies the name of the file into which the list of files ++ to index is placed (default: cscope.files). ++ ++ -l ++ Suppress the generation/updating of the cscope database ++ file. Only a list of files is generated. ++ ++ -r ++ Recurse into subdirectories to locate files to index. ++ Without this option, only the current directory is ++ searched. ++ ++ -v ++ Be verbose. Output simple progress messages. ++ ++EOF ++ ++} ++ + while [ -n "$1" ] + do + case "$1" in +@@ -110,6 +141,10 @@ do + -v) + VERBOSE=1 + ;; ++ -h|--help) ++ show_usage ++ exit 0 ++ ;; + *) + DIR="$1" + ;; diff --git a/SOURCES/dist-3-add-selftests.patch b/SOURCES/dist-3-add-selftests.patch new file mode 100644 index 0000000..84404a2 --- /dev/null +++ b/SOURCES/dist-3-add-selftests.patch @@ -0,0 +1,385 @@ +commit efc92106173b5130e32587f6c788f19f2477051d +Author: Neil Horman +Date: Fri Jul 27 15:52:49 2018 -0400 + + Add make check test harness + + Start adding tests to self test cscope in travis ci + + Signed-off-by: Neil Horman + +diff --git a/Makefile.am b/Makefile.am +index ae0fc53..d79d44e 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,6 +1,6 @@ + ## Process this file with automake to produce Makefile.in + +-SUBDIRS = doc src contrib ++SUBDIRS = doc src contrib tests + + EXTRA_DIST = INSTALL.gnu packages + +diff --git a/configure.in b/configure.in +index c51887d..e0a8b1f 100644 +--- a/configure.in ++++ b/configure.in +@@ -415,5 +415,5 @@ case "$host_os" in + ;; + esac + +-AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile contrib/Makefile]) ++AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile contrib/Makefile tests/Makefile]) + AC_OUTPUT +diff --git a/tests/Makefile.am b/tests/Makefile.am +new file mode 100644 +index 0000000..2278a71 +--- /dev/null ++++ b/tests/Makefile.am +@@ -0,0 +1,7 @@ ++check_SCRIPTS = check0.sh check1.sh check2.sh \ ++ check3.sh check4.sh check6.sh \ ++ check7.sh check8.sh check9.sh ++ ++TESTS = check0.sh check1.sh check2.sh \ ++ check3.sh check4.sh check6.sh \ ++ check7.sh check8.sh check9.sh +diff --git a/tests/check0.sh b/tests/check0.sh +new file mode 100755 +index 0000000..6c6883b +--- /dev/null ++++ b/tests/check0.sh +@@ -0,0 +1,32 @@ ++#!/bin/sh ++ ++EXPECT=4 ++SINDEX=0 ++STERM=main ++STYPE="find C symbol" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++#Count the number of instances of the string 'Copyright' ++#We expect 178 currently ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +diff --git a/tests/check1.sh b/tests/check1.sh +new file mode 100755 +index 0000000..78ffe21 +--- /dev/null ++++ b/tests/check1.sh +@@ -0,0 +1,32 @@ ++#!/bin/sh ++ ++EXPECT=3 ++SINDEX=1 ++STERM=main ++STYPE="symbol definition" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++#Count the number of instances of the string 'Copyright' ++#We expect 178 currently ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +diff --git a/tests/check2.sh b/tests/check2.sh +new file mode 100755 +index 0000000..414430a +--- /dev/null ++++ b/tests/check2.sh +@@ -0,0 +1,30 @@ ++#!/bin/sh ++ ++EXPECT=96 ++SINDEX=2 ++STERM=build ++STYPE="functions called by" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +diff --git a/tests/check3.sh b/tests/check3.sh +new file mode 100755 +index 0000000..a6b2c7e +--- /dev/null ++++ b/tests/check3.sh +@@ -0,0 +1,31 @@ ++#!/bin/sh ++ ++EXPECT=35 ++SINDEX=3 ++STERM=printf ++STYPE="functions calling" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++#We expect 178 currently ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +diff --git a/tests/check4.sh b/tests/check4.sh +new file mode 100755 +index 0000000..dd2c98c +--- /dev/null ++++ b/tests/check4.sh +@@ -0,0 +1,29 @@ ++#!/bin/sh ++EXPECT=3 ++SINDEX=4 ++STERM=oldsigquit ++STYPE="regular text string" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +diff --git a/tests/check6.sh b/tests/check6.sh +new file mode 100755 +index 0000000..c664960 +--- /dev/null ++++ b/tests/check6.sh +@@ -0,0 +1,32 @@ ++#!/bin/sh ++ ++EXPECT=1 ++SINDEX=6 ++STERM=msg.*what ++STYPE="egrep string" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++#Count the number of instances of the string 'Copyright' ++#We expect 178 currently ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +diff --git a/tests/check7.sh b/tests/check7.sh +new file mode 100755 +index 0000000..5ac965c +--- /dev/null ++++ b/tests/check7.sh +@@ -0,0 +1,32 @@ ++#!/bin/sh ++ ++EXPECT=1 ++SINDEX=7 ++STERM=main.c ++STYPE="file named" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++#Count the number of instances of the string 'Copyright' ++#We expect 178 currently ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +diff --git a/tests/check8.sh b/tests/check8.sh +new file mode 100755 +index 0000000..72cb946 +--- /dev/null ++++ b/tests/check8.sh +@@ -0,0 +1,32 @@ ++#!/bin/sh ++ ++EXPECT=8 ++SINDEX=8 ++STERM=unistd.h ++STYPE="files including this file" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++#Count the number of instances of the string 'Copyright' ++#We expect 178 currently ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +diff --git a/tests/check9.sh b/tests/check9.sh +new file mode 100755 +index 0000000..a728a32 +--- /dev/null ++++ b/tests/check9.sh +@@ -0,0 +1,32 @@ ++#!/bin/sh ++ ++EXPECT=2 ++SINDEX=9 ++STERM=reftime ++STYPE="assignments to symbol" ++ ++if [ -z "$CSCOPE_BINARY" ] ++then ++ CSCOPE_BINARY=./src/cscope ++fi ++ ++echo "Searching item $SINDEX, '$STYPE', '$STERM'" ++ ++#Get to the top level directory ++cd .. ++ ++#Remove any previous databases from testing ++rm -f cscope.out ++ ++#Count the number of instances of the string 'Copyright' ++#We expect 178 currently ++COUNT=$($CSCOPE_BINARY -R -L -k -$SINDEX$STERM | wc -l) ++ ++if [ $COUNT -ne $EXPECT ] ++then ++ echo "Expected $EXPECT instances of $STYPE $STERM but found $COUNT" ++ exit 1 ++fi ++ ++exit 0 ++ +-- +2.35.1 + diff --git a/SOURCES/dist-4-fix-printf.patch b/SOURCES/dist-4-fix-printf.patch new file mode 100644 index 0000000..e596284 --- /dev/null +++ b/SOURCES/dist-4-fix-printf.patch @@ -0,0 +1,16 @@ +diff --git a/contrib/ocs b/contrib/ocs +index e924f4f..bd556b4 100755 +--- a/contrib/ocs ++++ b/contrib/ocs +@@ -210,7 +210,7 @@ exp_inc() + then + for i in `cat ${theInc}` + do +- printf "-I $i " ++ printf -- "-I $i " + done + fi + } +-- +2.26.2 + diff --git a/SPECS/cscope.spec b/SPECS/cscope.spec new file mode 100644 index 0000000..3cfa0cf --- /dev/null +++ b/SPECS/cscope.spec @@ -0,0 +1,126 @@ +Summary: C source code tree search and browse tool +Name: cscope +Version: 15.9 +Release: 24%{?dist} +Source0: https://downloads.sourceforge.net/project/%{name}/%{name}/v%{version}/%{name}-%{version}.tar.gz +URL: http://cscope.sourceforge.net +License: BSD-3-Clause AND GPL-2.0-or-later +BuildRequires: pkgconf-pkg-config ncurses-devel gcc flex bison m4 +BuildRequires: autoconf automake make +Requires: emacs-filesystem coreutils ed +%if !0%{?rhel} && 0%{?fedora} < 36 +Requires: xemacs-filesystem +%endif + +# upstream commits from https://sourceforge.net/p/cscope/cscope/commit_browser +Patch1: cscope-1-modified-from-patch-81-Fix-reading-include-files-in-.patch +Patch2: cscope-2-Cull-extraneous-declaration.patch +Patch3: cscope-3-Avoid-putting-directories-found-during-header-search.patch +Patch4: cscope-4-Avoid-double-free-via-double-fclose-in-changestring.patch +Patch5: cscope-5-contrib-ocs-Fix-bashims-Closes-480591.patch +Patch6: cscope-6-doc-cscope.1-Fix-hyphens.patch +Patch7: cscope-7-fscanner-swallow-function-as-parameters.patch +Patch8: cscope-8-emacs-plugin-fixup-GNU-Emacs-27.1-removes-function-p.patch +Patch9: cscope-9-fix-access-beyond-end-of-string.patch +Patch10: cscope-a-docs-typo-fixes-in-man-page-and-comments.patch + +# distrubution patches which were not upstreamed +Patch11: dist-1-coverity-fixes.patch +Patch12: dist-2-cscope-indexer-help.patch +Patch13: dist-3-add-selftests.patch +Patch14: dist-4-fix-printf.patch + +%define cscope_share_path %{_datadir}/cscope +%if !0%{?rhel} && 0%{?fedora} < 36 +%define xemacs_lisp_path %{_datadir}/xemacs/site-packages/lisp +%else +%define xemacs_lisp_path %nil +%endif +%define emacs_lisp_path %{_datadir}/emacs/site-lisp +%define vim_plugin_path %{_datadir}/vim/vimfiles/plugin + +%description +cscope is a mature, ncurses based, C source code tree browsing tool. It +allows users to search large source code bases for variables, functions, +macros, etc, as well as perform general regex and plain text searches. +Results are returned in lists, from which the user can select individual +matches for use in file editing. + +%prep +%autosetup -p1 + +%build +aclocal +autoheader +autoconf +automake --add-missing +%configure +make + +%install +rm -rf $RPM_BUILD_ROOT %{name}-%{version}.files +make DESTDIR=$RPM_BUILD_ROOT install +mkdir -p $RPM_BUILD_ROOT/var/lib/cs +mkdir -p $RPM_BUILD_ROOT%{cscope_share_path} +cp -a contrib/xcscope/xcscope.el $RPM_BUILD_ROOT%{cscope_share_path} +install -m 755 contrib/xcscope/cscope-indexer $RPM_BUILD_ROOT%{_bindir} +cp -a contrib/cctree.vim $RPM_BUILD_ROOT%{cscope_share_path} +for dir in %{xemacs_lisp_path} %{emacs_lisp_path} ; do + mkdir -p $RPM_BUILD_ROOT$dir + ln -s %{cscope_share_path}/xcscope.el $RPM_BUILD_ROOT$dir + touch $RPM_BUILD_ROOT$dir/xcscope.elc + echo "%ghost $dir/xcscope.el*" >> %{name}-%{version}.files +done + +%check +make check + +%files -f %{name}-%{version}.files +%{_bindir}/* +%dir %{cscope_share_path} +%{cscope_share_path}/ +%{_mandir}/man1/* +%dir /var/lib/cs +%doc AUTHORS COPYING ChangeLog README TODO contrib/cctree.txt + +%if !0%{?rhel} && 0%{?fedora} < 36 +%triggerin -- xemacs +ln -sf %{cscope_share_path}/xcscope.el %{xemacs_lisp_path}/xcscope.el +%endif + +%triggerin -- emacs, emacs-nox, emacs-lucid +ln -sf %{cscope_share_path}/xcscope.el %{emacs_lisp_path}/xcscope.el + +%triggerin -- vim-filesystem +ln -sf %{cscope_share_path}/cctree.vim %{vim_plugin_path}/cctree.vim + +%if !0%{?rhel} && 0%{?fedora} < 36 +%triggerun -- xemacs +[ $2 -gt 0 ] && exit 0 +rm -f %{xemacs_lisp_path}/xcscope.el +%endif + +%triggerun -- emacs, emacs-nox, emacs-lucid +[ $2 -gt 0 ] && exit 0 +rm -f %{emacs_lisp_path}/xcscope.el + +%triggerun -- vim-filesystem +[ $2 -gt 0 ] && exit 0 +rm -f %{vim_plugin_path}/cctree.vim + +%changelog +* Tue Nov 26 2024 MSVSphere Packaging Team - 15.9-24 +- Rebuilt for MSVSphere 10 + +* Mon Jun 24 2024 Troy Dawson - 15.9-24 +- Bump release for June 2024 mass rebuild + +* Mon Apr 01 2024 Vladis Dronov - 15.9-23 +- Add OSCI harness +- Add self-tests + +* Thu Feb 01 2024 Vladis Dronov - 15.9-22 +- Use proper SPDX license identifiers (RHEL-30639) + +* Fri Jan 26 2024 Vladis Dronov - 15.9-21 +- Initial import from Fedora 40