More Windows patches; more manual tweaks. :)

-- 
Jason.
diff -urp global-6.5.3/gtags/manual.in global-6.5-3/gtags/manual.in
--- global-6.5.3/gtags/manual.in        2016-03-18 17:03:51 +1000
+++ global-6.5-3/gtags/manual.in        2016-03-21 12:22:37 +1000
@@ -68,7 +68,7 @@
                The argument @arg{file} can be set to @val{-} to accept a list 
of
                files from the standard input.
                File names must be separated by newline.
-               You may use find
+               You may use @xref{find,1}.
        @item{@option{--gtagsconf} @arg{file}}
                Set environment variable @var{GTAGSCONF} to @arg{file}.
        @item{@option{--gtagslabel} @arg{label}}
diff -urp global-6.5.3/htags/completion.cgi.in 
global-6.5-3/htags/completion.cgi.in
--- global-6.5.3/htags/completion.cgi.in        2016-03-18 17:03:51 +1000
+++ global-6.5-3/htags/completion.cgi.in        2016-03-21 10:51:52 +1000
@@ -66,15 +66,16 @@ if (-f "../GTAGSROOT" && open(GTAGSROOT,
 }
 chdir($gtagsroot);
 print "Content-Type: text/html\n\n";
-#
-# This code was commented out, because it may have a security hole in the 
future.
-# To use this code, please uncomment in your own responsibility.
-#
-#if ($^O eq 'MSWin32') {
-#      open(PIPE, $global_command . " -${flags}e $q |");
-#} else {
+if ($^O eq 'MSWin32') {
+       #
+       # This code was commented out, because it may have a security hole in 
the
+       # future.  To use this code, please uncomment in your own 
responsibility.
+       #
+       #open(PIPE, $global_command . " -${flags}e \"$q\" |");
+       error_and_exit("Feature not implemented.");
+} else {
        open(PIPE, "-|") || exec $global_command, '-'.$flags.'e', $q;
-#}
+}
 if ($limit > 0) {
        while (<PIPE>) {
                print if ($limit-- > 0);
diff -urp global-6.5.3/htags/global.cgi.in global-6.5-3/htags/global.cgi.in
--- global-6.5.3/htags/global.cgi.in    2016-03-18 17:03:51 +1000
+++ global-6.5-3/htags/global.cgi.in    2016-03-21 10:51:51 +1000
@@ -131,18 +131,19 @@ if ($?) {
 # of each line.
 #
 $flags = '-' . $flag . $iflag . $oflag . 'e';
-#
-# This code was commented out, because it may have a security hole in the 
future.
-# To use this code, please uncomment in your own responsibility.
-#
-#if ($^O eq 'MSWin32') {
-#      open(PIPE, "$global_command" . " --result=ctags-xid $flags $pattern |");
-#} else {
+if ($^O eq 'MSWin32') {
+       #
+       # This code was commented out, because it may have a security hole in 
the
+       # future.  To use this code, please uncomment in your own 
responsibility.
+       #
+       #open(PIPE, "$global_command" . " --result=ctags-xid $flags 
\"$pattern\" |");
+       error_and_exit("Feature not implemented.");
+} else {
        open(PIPE, "-|") || exec "$global_command", '--result=ctags-xid', 
$flags, $pattern;
        if ($?) {
                error_and_exit("Cannot execute global.");
        }
-#}
+}
 local(%ctab) = ('&', '&amp;', '<', '&lt;', '>', '&gt;');
 $pattern =~ s/([&<>])/$ctab{$1}/ge;
 local($tag, $lno, $filename);
diff -urp global-6.5.3/htags/htags.c global-6.5-3/htags/htags.c
--- global-6.5.3/htags/htags.c  2016-03-18 17:03:51 +1000
+++ global-6.5-3/htags/htags.c  2016-03-21 16:15:21 +1000
@@ -1658,14 +1658,8 @@ main(int argc, char **argv)
        if (enable_xhtml) {
                char src[MAXPATHLEN];
                char dist[MAXPATHLEN];
-#ifdef __DJGPP__
-               const char *template = "";
                snprintf(src, sizeof(src), "%s/gtags/style.css", datadir);
                snprintf(dist, sizeof(dist), "%s/style.css", distpath);
-#else
-               snprintf(src, sizeof(src), "%s/gtags/style.css", datadir);
-               snprintf(dist, sizeof(dist), "%s/style.css", distpath);
-#endif
                copyfile(src, dist);
        }
        if (auto_completion || tree_view) {
diff -urp global-6.5.3/libutil/conf.c global-6.5-3/libutil/conf.c
--- global-6.5.3/libutil/conf.c 2016-03-18 17:03:51 +1000
+++ global-6.5-3/libutil/conf.c 2016-03-21 16:18:34 +1000
@@ -470,10 +470,15 @@ getconfs(const char *name, STRBUF *resul
                                if (sb)
                                        strbuf_puts(sb, DATADIR);
                        } else {
-                               char path[MAX_PATH], *name;
+                               char path[MAX_PATH], *name, *p;
                                GetModuleFileName(NULL, path, MAX_PATH);
-                               name = strrchr(path, '\\');
-                               strcpy(name+1, "..\\share");
+                               for (p = name = path; *p; ++p) {
+                                       if (*p == '\\') {
+                                               *p = '/';
+                                               name = p+1;
+                                       }
+                               }
+                               strcpy(name, "../share");
                                if (sb)
                                        strbuf_puts(sb, path);
                        }
diff -urp global-6.5.3/libutil/manual.in global-6.5-3/libutil/manual.in
--- global-6.5.3/libutil/manual.in      2016-03-18 17:03:51 +1000
+++ global-6.5-3/libutil/manual.in      2016-03-21 18:45:00 +1000
@@ -38,14 +38,14 @@
        [sysconfdir] is @file{/usr/local/etc} by default; you can change it by 
the --sysconfdir
        option of configure script.
 
-       The format is almost same to @xref{termcap,5} except for some 
extensions described
+       The format is similar to @xref{termcap,5} except for some extensions 
described
        later.
        The file includes one or more records. You should select a record using 
a label.
        Default label is 'default'. If @var{GTAGSLABEL} is set, its value is 
used. Please be
-       aware of the meaning of 'default' it is different from one of 
@xref{termcap,5}.
+       aware the meaning of 'default' is different to that of @xref{termcap,5}.
 
        Lines starting with '#' are ignored.
-       A record consists of one or more fields sepalated by ':' and ends with 
a newline.
+       A record consists of one or more fields separated by ':' and ends with 
a newline.
        The first field must have a label name. Each field of the rest has a 
variable definition.
        There are three types in those variables.
        @begin_itemize
@@ -55,7 +55,7 @@
        @end_itemize
        Most variables are relevant to string type.
 
-       If data includes ':' or newline, you need quote it by '\\'.
+       If data includes ':' or newline, you need to quote it by '\\'.
        An empty field is permitted, but it doesn't make sense.
 
        When there is more than one definition, the previous one is adopted. 
@@ -63,18 +63,18 @@
        adopted and connected respectively.
 @Variable substitution
        Variable substitution similar to @xref{sh,1} is available.
-       You can refer any string variable using '$' prefix. For example, the 
following
+       You can refer to any string variable using '$' prefix. For example, the 
following
        @name{b} has a value 'XYZ'.
        @begin_verbatim
        :a=Y:b=X${a}Z:
        @end_verbatim
 @Including another record
-       @name{Tc} is a special variable; it read in definitions in another 
record.
+       @name{Tc} is a special variable; it reads in definitions in another 
record.
        It is similar to the @name{tc} of @xref{termcap,5}.
        Syntax is as follows:@br
        @name{tc}=@arg{label}[@@@arg{file}]@br
-       If only a @arg{label} is given, @name{tc} read from a record specified 
by the @arg{label}
-       in the same file. If @@@arg{file} is also given, @name{tc} read from a 
record
+       If only a @arg{label} is given, @name{tc} is read from a record 
specified by the @arg{label}
+       in the same file. If @@@arg{file} is also given, @name{tc} is read from 
a record
        specified by the @arg{label} in the specified @arg{file}.
        @arg{File} should be an absolute path, and should not include variables.
        Different from @xref{termcap,5}, you can use @name{tc} anytime anywhere.
@@ -104,10 +104,10 @@
        By default, each of them has a directory path given by the configure
        script.@br
        @name{bindir}@br
-        @name{datadir}@br
-        @name{libdir}@br
-        @name{localstatedir}@br
-        @name{sysconfdir}@br
+       @name{datadir}@br
+       @name{libdir}@br
+       @name{localstatedir}@br
+       @name{sysconfdir}@br
 @ENVIRONMENT
        The following environment variables affect the execution of the 
commands.
 
@@ -124,7 +124,7 @@
        @xref{gtags,1},
        @xref{htags,1}.
 
-        GNU GLOBAL source code tag system@br
-        (http://www.gnu.org/software/global/).
+       GNU GLOBAL source code tag system@br
+       (http://www.gnu.org/software/global/).
 @HISTORY
        The @name{gtags.conf} file appeared in GLOBAL-3.0 (1998).
diff -urp global-6.5.3/plugin-factory/exuberant-ctags.c 
global-6.5-3/plugin-factory/exuberant-ctags.c
--- global-6.5.3/plugin-factory/exuberant-ctags.c       2016-03-18 17:03:51 
+1000
+++ global-6.5-3/plugin-factory/exuberant-ctags.c       2016-03-21 17:41:55 
+1000
@@ -97,7 +97,7 @@ copy_langmap_converting_cpp(char *dst, c
 #include <windows.h>
 #include <fcntl.h>
 static HANDLE pid;
-static char argv[] = "ctags "
+static char argv[] = "\" "
 #if defined(USE_EXTRA_FIELDS)
        "\"--_xformat=%R %-16N %4n %-16F %C\" "
        "--extra=+r "
@@ -117,12 +117,20 @@ start_ctags(const struct parser_param *p
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
        char* arg;
+       char *path = param->getconf("ctagscom");
 
-       arg = malloc(sizeof(argv) + strlen(param->langmap));
+       if (path && strlen(path) > 0 && strcmp(path, "no") != 0)
+               ctagscom = path;
+       if (!ctagscom || !strlen(ctagscom) || !strcmp(ctagscom, "no"))
+               param->die(ctagsnotfound);
+
+       arg = malloc(1 + strlen(ctagscom) + sizeof(argv) + 
strlen(param->langmap));
        if (arg == NULL)
                param->die("short of memory.");
-       strcpy(arg, argv);
-       copy_langmap_converting_cpp(arg + sizeof(argv) - 1, param->langmap);
+       *arg = '"';
+       strcpy(arg+1, ctagscom);
+       strcat(arg, argv);
+       copy_langmap_converting_cpp(arg + strlen(arg), param->langmap);
 
        sa.nLength = sizeof(sa);
        sa.bInheritHandle = TRUE;
@@ -138,7 +146,8 @@ start_ctags(const struct parser_param *p
        si.hStdOutput = ipipe[1];
        si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
        si.dwFlags = STARTF_USESTDHANDLES;
-       CreateProcess(NULL, arg, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
+       if (!CreateProcess(NULL, arg, NULL, NULL, TRUE, 0, NULL, NULL, &si, 
&pi))
+               param->die(ctagsnotfound);
        CloseHandle(opipe[0]);
        CloseHandle(ipipe[1]);
        CloseHandle(pi.hThread);
diff -urp global-6.5.3/plugin-factory/PLUGIN_HOWTO.pygments 
global-6.5-3/plugin-factory/PLUGIN_HOWTO.pygments
--- global-6.5.3/plugin-factory/PLUGIN_HOWTO.pygments   2016-03-18 17:03:51 
+1000
+++ global-6.5-3/plugin-factory/PLUGIN_HOWTO.pygments   2016-03-21 12:48:30 
+1000
@@ -58,7 +58,7 @@ Please execute gtags(1) as usual.
 $ gtags
 
 If it is doubtful whether Pygments plug-in parser is used,
-please try --explaina option. It shows the libraries used by
+please try --explain option. It shows the libraries used by
 gtags.
 
 $ gtags --explain
diff -urp global-6.5.3/plugin-factory/pygments-parser.c 
global-6.5-3/plugin-factory/pygments-parser.c
--- global-6.5.3/plugin-factory/pygments-parser.c       2016-03-18 17:03:51 
+1000
+++ global-6.5-3/plugin-factory/pygments-parser.c       2016-03-21 15:41:01 
+1000
@@ -18,6 +18,9 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#ifdef __MINGW32__
+#define __USE_MINGW_ANSI_STDIO 0       /* no need for C99 sprintf here */
+#endif
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -102,10 +105,10 @@ start_process(const struct parser_param
        GetModuleFileName(NULL, parser, MAX_PATH);
        arg = strrchr(parser, '\\');
        strcpy(arg+1, PYGMENTS_PARSER);
-       arg = malloc(sizeof(PYTHON) + strlen(parser) + sizeof(LANGMAP_OPTION) + 
strlen(param->langmap) + 1);
+       arg = malloc(sizeof(PYTHON) + strlen(parser) + sizeof(LANGMAP_OPTION) + 
strlen(param->langmap) + 2 + 1);
        if (arg == NULL)
                param->die("short of memory.");
-       len = sprintf(arg, "%s %s %s", PYTHON, parser, LANGMAP_OPTION);
+       len = sprintf(arg, "%s \"%s\" %s", PYTHON, parser, LANGMAP_OPTION);
        copy_langmap_converting_cpp(arg + len, param->langmap);
 
        sa.nLength = sizeof(sa);
_______________________________________________
Bug-global mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-global

Reply via email to