X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fw32spawn.h;h=9ebf5bc49c9c913d59f4a1a3e05693197c0fe2e7;hb=b314ca18dc36e59297f66b2508fd58535a1cd724;hp=18e64d7d5f5b64f13bb44a7e3c42e523f3bdc633;hpb=93d436c91edffd70086e32b26e1f570256b71a8a;p=gnulib.git diff --git a/lib/w32spawn.h b/lib/w32spawn.h index 18e64d7d5..9ebf5bc49 100644 --- a/lib/w32spawn.h +++ b/lib/w32spawn.h @@ -1,11 +1,11 @@ /* Auxiliary functions for the creation of subprocesses. Native Woe32 API. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2006-2008 Free Software Foundation, Inc. Written by Bruno Haible , 2003. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -13,8 +13,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ /* Get declarations of the Win32 API functions. */ #define WIN32_LEAN_AND_MEAN @@ -24,9 +23,9 @@ #include #include +#include #include -#include "strpbrk.h" #include "xalloc.h" /* Duplicates a file handle, making the copy uninheritable. */ @@ -92,7 +91,15 @@ prepare_spawn (char **argv) ; /* Allocate new argument vector. */ - new_argv = (char **) xmalloc ((argc + 1) * sizeof (char *)); + new_argv = XNMALLOC (1 + argc + 1, char *); + + /* Add an element upfront that can be used when argv[0] turns out to be a + script, not a program. + On Unix, this would be "/bin/sh". On native Windows, "sh" is actually + "sh.exe". We have to omit the directory part and rely on the search in + PATH, because the mingw "mount points" are not visible inside Win32 + CreateProcess(). */ + *new_argv++ = "sh.exe"; /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++)