summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/winf.h
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/winf.h')
-rw-r--r--winsup/cygwin/winf.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/winsup/cygwin/winf.h b/winsup/cygwin/winf.h
index 3b7fec23b..209091468 100644
--- a/winsup/cygwin/winf.h
+++ b/winsup/cygwin/winf.h
@@ -9,6 +9,14 @@ details. */
#ifndef _WINF_H
#define _WINF_H
+/* Hack for Cygwin processes. If the Windows command line length gets slightly
+ bigger than this value, the stack position is suddenly moved up by 64K for
+ no apparent reason, which results in subsequent forks failing. Since Cygwin
+ processes get the full command line as argv array anyway, this only affects
+ the maximum command line length of Cygwin applications which non-sensically
+ have a WinMain instead of a main entry point. */
+#define MAXCYGWINCMDLEN 31767
+
#define MAXWINCMDLEN 32767
#define LINE_BUF_CHUNK (CYG_MAX_PATH * 2)
@@ -74,8 +82,8 @@ class linebuf
void add (const char *what, int len) __attribute__ ((regparm (3)));
void add (const char *what) {add (what, strlen (what));}
void prepend (const char *what, int len);
- void finish () __attribute__ ((regparm (1)));
- bool fromargv(av&, char *);
+ void finish (bool) __attribute__ ((regparm (2)));
+ bool fromargv(av&, char *, bool) __attribute__ ((regparm (3)));;
operator char *() {return buf;}
};