[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Help to review a patch in ELisp



Hello,

I am looking for a person who knows enough to verify a ELisp patch. The
patch is supposed to fix a problem of space in file names [1], upstream
unfortunately does not have the in-house expertise [2].

Volunteers?

Regards,

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=579531
[2] https://sourceforge.net/p/cscope/bugs/282/#9a4f/f853

-- 
Stéphane Aulery
diff -r -u cscope-15.7a/contrib/xcscope/cscope-indexer change/cscope-15.7a/contrib/xcscope/cscope-indexer
--- cscope-15.7a/contrib/xcscope/cscope-indexer	2001-06-28 12:39:48.000000000 +0800
+++ change/cscope-15.7a/contrib/xcscope/cscope-indexer	2010-04-28 17:46:02.000000000 +0800
@@ -139,7 +139,8 @@
 ) | \
     egrep -i '\.([chly](xx|pp)*|cc|hh)$' | \
     sed -e '/\/CVS\//d' -e '/\/RCS\//d' -e 's/^\.\///' | \
-    sort > $LIST_FILE
+    sort | \
+	sed -e 's/.* .*/\"&\"/' > $LIST_FILE
 
 if [ "X$VERBOSE" != "X" ]
 then
diff -r -u cscope-15.7a/contrib/xcscope/xcscope.el change/cscope-15.7a/contrib/xcscope/xcscope.el
--- cscope-15.7a/contrib/xcscope/xcscope.el	2002-04-11 00:59:00.000000000 +0800
+++ change/cscope-15.7a/contrib/xcscope/xcscope.el	2010-04-28 17:47:45.000000000 +0800
@@ -1750,7 +1750,7 @@
 
 		;; This should always match.
 		(if (string-match
-		     "^\\([^ \t]+\\)[ \t]+\\([^ \t]+\\)[ \t]+\\([0-9]+\\)[ \t]+\\(.*\\)\n"
+		     "^\\([^\t]+\\)[ \t]+\\([^ \t]+\\)[ \t]+\\([0-9]+\\)[ \t]+\\(.*\\)\n"
 		     line)
 		    (progn
 		      (let (str)
diff -r -u cscope-15.7a/src/command.c change/cscope-15.7a/src/command.c
--- cscope-15.7a/src/command.c	2009-04-10 21:40:36.000000000 +0800
+++ change/cscope-15.7a/src/command.c	2010-04-28 17:39:19.000000000 +0800
@@ -728,7 +728,7 @@
     *oldfile = '\0';
     seekline(1);
     for (i = 0; 
-	 fscanf(refsfound, "%" PATHLEN_STR "s%*s%" NUMLEN_STR "s%*[^\n]", newfile, linenum) == 2;
+	 fscanf(refsfound, "%" PATHLEN_STR "[^\t]\t%*s%" NUMLEN_STR "s%*[^\n]\n", newfile, linenum) == 2;
 	 ++i) {
 	/* see if the line is to be changed */
 	if (change[i] == YES) {
@@ -884,8 +884,9 @@
     filelen = 4;		/* strlen("File") */
     fcnlen = 8;		/* strlen("Function") */
     numlen = 0;
-    while ((i = fscanf(refsfound, "%250s%250s%5s %5000[^\n]", file,
-		       function, linenum, tempstring)) != EOF) {
+
+    while ((i = fscanf(refsfound, "%250[^\t]\t%250s %5s %5000[^\n]\n", file,
+					   function, linenum, tempstring)) != EOF) {
 	if (i != 4 ||
 	    !isgraph((unsigned char) *file) ||
 	    !isgraph((unsigned char) *function) ||
diff -r -u cscope-15.7a/src/display.c change/cscope-15.7a/src/display.c
--- cscope-15.7a/src/display.c	2009-04-10 21:40:36.000000000 +0800
+++ change/cscope-15.7a/src/display.c	2010-04-28 17:21:24.000000000 +0800
@@ -224,7 +224,7 @@
 	     disprefs < mdisprefs && screenline <= lastdispline;
 	     ++disprefs, ++screenline) {
 	    /* read the reference line */
-	    if (fscanf(refsfound, "%" PATHLEN_STR "s%" PATHLEN_STR "s%" NUMLEN_STR "s %" TEMPSTRING_LEN_STR "[^\n]", file, function, 
+	    if (fscanf(refsfound, "%" PATHLEN_STR "[^\t]\t%" PATLEN_STR "s%" NUMLEN_STR "s %" TEMPSTRING_LEN_STR "[^\n]\n", file, function, 
 		       linenum, tempstring) < 4) {
 		break;
 	    }
diff -r -u cscope-15.7a/src/edit.c change/cscope-15.7a/src/edit.c
--- cscope-15.7a/src/edit.c	2009-04-10 21:40:36.000000000 +0800
+++ change/cscope-15.7a/src/edit.c	2010-04-28 14:49:06.000000000 +0800
@@ -60,7 +60,7 @@
 	seekline(i + topline);
 	
 	/* get the file name and line number */
-	if (fscanf(refsfound, "%" PATHLEN_STR "s%*s%" NUMLEN_STR "s", file, linenum) == 2) {
+	if (fscanf(refsfound, "%" PATHLEN_STR "[^\t]\t%*s%" NUMLEN_STR "s", file, linenum) == 2) {
 		edit(file, linenum);	/* edit it */
 	}
 	seekline(topline);	/* restore the line pointer */
@@ -83,7 +83,7 @@
 	seekline(1);
 	
 	/* get each file name and line number */
-	while (fscanf(refsfound, "%" PATHLEN_STR "s%*s%" NUMLEN_STR "s%*[^\n]", file, linenum) == 2) {
+	while (fscanf(refsfound, "%" PATHLEN_STR "[^\t]\t%*s%" NUMLEN_STR "s%*[^\n]\n", file, linenum) == 2) {
 		edit(file, linenum);	/* edit it */
 		if (editallprompt == YES) {
 			addstr("Type ^D to stop editing all lines, or any other character to continue: ");
diff -r -u cscope-15.7a/src/find.c change/cscope-15.7a/src/find.c
--- cscope-15.7a/src/find.c	2009-04-10 21:40:36.000000000 +0800
+++ change/cscope-15.7a/src/find.c	2010-04-28 17:18:06.000000000 +0800
@@ -506,7 +506,7 @@
 	    char *file = filepath(srcfiles[i]);
 
 	    progress("Search", searchcount, nsrcfiles);
-	    if (egrep(file, refsfound, "%s <unknown> %ld ") < 0) {
+	    if (egrep(file, refsfound, "%s\t<unknown> %ld ") < 0) {
 		posterr ("Cannot open file %s", file);
 	    }
 	}
@@ -532,7 +532,7 @@
 	    s = srcfiles[i];
 	}
 	if (regexec (&regexp, s, (size_t)0, NULL, 0) == 0) {
-	    (void) fprintf(refsfound, "%s <unknown> 1 <unknown>\n", 
+	    (void) fprintf(refsfound, "%s\t<unknown> 1 <unknown>\n", 
 			   srcfiles[i]);
 	}
     }
@@ -765,7 +765,7 @@
 	else {
 		output = nonglobalrefs;
 	}
-	(void) fprintf(output, "%s %s ", file, func);
+	(void) fprintf(output, "%s\t%s ", file, func);
 	putsource(seemore, output);
 }
 
@@ -1185,7 +1185,7 @@
 		case FCNCALL:		/* function call */
 
 			/* output the file name */
-			(void) fprintf(refsfound, "%s ", file);
+			(void) fprintf(refsfound, "%s\t", file);
 
 			/* output the function name */
 			skiprefchar();

Reply to: