all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: "Óscar Fuentes" <ofv@wanadoo.es>
Cc: lekktu@gmail.com, 6674@debbugs.gnu.org
Subject: bug#6674: PATCH: fix assignment of grep-find-use-xargs on	Windows/MS-DOS
Date: Tue, 20 Jul 2010 20:28:04 +0300	[thread overview]
Message-ID: <83vd8acbbv.fsf@gnu.org> (raw)
In-Reply-To: <87r5iy2ptw.fsf@telefonica.net>

> From: Óscar Fuentes <ofv@wanadoo.es>
> Date: Tue, 20 Jul 2010 16:24:59 +0200
> Cc: 6674@debbugs.gnu.org
> 
> Óscar Fuentes <ofv@wanadoo.es> writes:
> 
> > Agreed. That's a symptom of a more general problem. I have no idea of
> > what's going on, because if the pipe is not used the command line for
> > `find' is similar on length and the problem doesn't happen.
> 
> Pasting the command on cmd.exe works fine (after replacing / with \ on
> the path to `find.exe')
> 
> Executing
> 
> cmd.exe -c <command>
> 
> from cmd.exe fails on a similar way:
> 
> "CS" -o -path "*" no se reconoce como un comando interno o externo,
> programa o archivo por lotes ejecutable.
> 
> This looks like a can of worms. Can we apply the patch on the original
> post, so `rgrep' is usable on Windows with the minimal fuss?

I see the problem.  When the command line includes pipes or
redirection, cmdproxy calls cmd.exe to do the job.  It does so by
invoking the `spawn' function.

By trial and error I established that the limit beyond which rgrep
fails is 1024 characters.  This is consistent with the MSDN
documentation of _spawn, e.g.

  http://msdn.microsoft.com/en-us/library/20y988d2(VS.71).aspx

which says:

  To pass arguments to the new process, give one or more pointers to
  character strings as arguments in the _spawn call. These character
  strings form the argument list for the spawned process. The combined
  length of the strings forming the argument list for the new process
  must not exceed 1024 bytes. [...]

Strangely, we use the same _spawn to run commands when there's no
pipes or redirection.  Perhaps the 1024-character limit is only
imposed when cmd.exe is invoked.

In general, cmd.exe itself is documented to have a much larger limit
on command-line length: 8K on Windows XP.

So we could either (1) install Óscar's patch, with the disadvantage
that rgrep will be slower on MS-Windows (because a separate Grep is
invoked on each file found by Find), or (2) fix cmdproxy to use a
better API, such as CreateProcess, which doesn't have this limitation.

In any case, please do NOT install the patch for the MS-DOS build.  As
I wrote earlier, it does not have this problem.






  parent reply	other threads:[~2010-07-20 17:28 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-20  3:49 bug#6674: PATCH: fix assignment of grep-find-use-xargs on Windows/MS-DOS Óscar Fuentes
2010-07-20 12:57 ` Juanma Barranquero
2010-07-20 13:39   ` Óscar Fuentes
2010-07-20 14:24     ` Óscar Fuentes
2010-07-20 15:18       ` Juanma Barranquero
2010-07-20 16:56       ` Eli Zaretskii
2010-07-20 17:28       ` Eli Zaretskii [this message]
2010-07-20 17:42         ` Juanma Barranquero
2010-07-20 19:51         ` Óscar Fuentes
2010-07-20 21:41           ` Eli Zaretskii
2010-07-20 22:18             ` Eli Zaretskii
2010-07-21  0:38               ` Christoph
2010-07-21  1:22                 ` Óscar Fuentes
2010-08-02 10:26           ` Laimonas Vėbra
2010-08-02 15:23             ` Óscar Fuentes
2010-08-02 15:48             ` bug#6674: [PATCH] bug#6674: " Óscar Fuentes
2010-08-02 17:11               ` Andreas Schwab
2010-08-02 17:48               ` bug#6674: [PATCH fixed] " Óscar Fuentes
2010-08-02 19:07                 ` Eli Zaretskii
2010-08-02 19:47                   ` Juanma Barranquero
2010-08-02 19:57                   ` Óscar Fuentes
2010-08-02 20:11                     ` Juanma Barranquero
2010-08-02 20:15                     ` Óscar Fuentes
2010-08-03  2:56                     ` Eli Zaretskii
2010-07-20 16:46 ` bug#6674: PATCH: " Eli Zaretskii
2010-07-20 23:18 ` bug#6674: PATCH: fix assignment of grep-find-use-xargs on Windows Óscar Fuentes
2010-07-21  0:44   ` Christoph
2010-07-21  0:50     ` Juanma Barranquero
2010-07-21  0:57     ` Óscar Fuentes
2010-07-21  4:02     ` Eli Zaretskii
2010-07-21  4:05       ` Christoph
2010-08-02  2:21       ` Christoph
2010-08-02  3:10         ` Eli Zaretskii
2010-08-02  4:03           ` Christoph
2010-08-02 18:02             ` Eli Zaretskii
2010-08-02 20:17 ` bug#6674: Closing bug 6674 Óscar Fuentes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83vd8acbbv.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=6674@debbugs.gnu.org \
    --cc=lekktu@gmail.com \
    --cc=ofv@wanadoo.es \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.