/* Proxy shell designed for use with Emacs on Windows 95 and NT.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005,
+ 2006, 2007, 2008 Free Software Foundation, Inc.
Accepts subset of Unix sh(1) command-line options, for compatability
with elisp code written for Unix. When possible, executes external
GNU Emacs 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)
+the Free Software Foundation; either version 3, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
#include <windows.h>
if (p[0] == escape_char && escape_char != '"')
{
escape_char_run++;
+ p++;
continue;
}
else if (p[0] == '"')
int i, rc;
/* Search the directory for the program. */
- for (i = 0; i < n_exts; i++)
+ for (i = 0; i < n_exts; i++)
{
rc = SearchPath (dir, exec, exts[i], bufsize, buffer, &dummy);
if (rc > 0)
return 0;
}
-/* Return the absolute name of executable file PROG, including
+/* Return the absolute name of executable file PROG, including
any file extensions. If an absolute name for PROG cannot be found,
return NULL. */
char *
return NULL;
}
- if (GetCurrentDirectory (MAX_PATH, curdir) <= 0)
+ if (GetCurrentDirectory (MAX_PATH, curdir) <= 0)
return NULL;
/* Relative path; search in current dir. */
- if (strpbrk (prog, "\\"))
+ if (strpbrk (prog, "\\"))
{
if (search_dir (curdir, prog, MAX_PATH, absname) > 0)
return strdup (absname);
- else
+ else
return NULL;
}
-
+
/* Just filename; search current directory then PATH. */
path = alloca (strlen (getenv ("PATH")) + strlen (curdir) + 2);
strcpy (path, curdir);
/* Move to the next directory. */
path = p + 1;
- }
+ }
return NULL;
}
char * cmdline = GetCommandLine ();
int arg_bytes = 0;
-
+
}
#endif
sec_attrs.nLength = sizeof (sec_attrs);
sec_attrs.lpSecurityDescriptor = NULL;
sec_attrs.bInheritHandle = FALSE;
-
+
memset (&start, 0, sizeof (start));
start.cb = sizeof (start);
SetCurrentDirectory (modname);
*progname = '\\';
+ /* Due to problems with interaction between API functions that use "OEM"
+ codepage vs API functions that use the "ANSI" codepage, we need to
+ make things consistent by choosing one and sticking with it. */
+ SetConsoleCP (GetACP());
+ SetConsoleOutputCP (GetACP());
+
/* Although Emacs always sets argv[0] to an absolute pathname, we
might get run in other ways as well, so convert argv[0] to an
absolute name before comparing to the module name. Don't get
return 0;
}
+
+/* arch-tag: 88678d93-07ac-4e2f-ad63-d4a740ca69ac
+ (do not change this comment) */