aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pc/ChangeLog14
-rw-r--r--pc/Makefile.tst6
-rw-r--r--pc/popen.c23
3 files changed, 26 insertions, 17 deletions
diff --git a/pc/ChangeLog b/pc/ChangeLog
index eb5636e9..12bf2f89 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,17 @@
+2014-01-15 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.tst (mbprintf4, profile5, backbigs1, backsmalls1):
+ Announce expected failures.
+ (fts): Fail gracefully, to avoid bailing out of the test suite too
+ early.
+
+ * popen.c (os_system): Use spawnl, and quote the command line, to
+ be consistent with what gawk_popen does.
+ (os_popen) [__MINGW32__]: Don't scriptify the command, to be
+ consistent with gawk_popen.
+ (os_pclose) [__MINGW32__]: Update to match os_open: no need to
+ unlink the script file.
+
2013-12-10 Scott Deifik <scottd.mail@sbcglobal.net>
* gawkmisc.c (init_sockets): Move into the right part of the
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 6a2216a0..2cff3c2e 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -797,6 +797,7 @@ mbprintf3::
mbprintf4::
@echo $@
+ @echo Expect mbprintf4 to fail with MinGW
@GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
$(AWK) -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
@@ -870,6 +871,7 @@ profile4:
profile5:
@echo $@
+ @echo Expect profile5 to fail with MinGW due to 3 digits in %e output
@GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
@@ -1041,7 +1043,7 @@ fts:
fi
@echo $@
@echo Expect $@ to fail with MinGW because function 'fts' is not defined.
- @$(AWK) -f "$(srcdir)"/fts.awk
+ @$(AWK) -f "$(srcdir)"/fts.awk || echo EXIT CODE: $$? >>_$@
@-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
charasbytes:
@@ -1098,12 +1100,14 @@ dfamb1:
backbigs1:
@echo $@
+ @echo Expect backbigs1 to fail with MinGW
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
backsmalls1:
@echo $@
+ @echo Expect backsmalls1 to fail with MinGW
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
AWKPATH="$(srcdir)" $(AWK) -f $@.awk "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
diff --git a/pc/popen.c b/pc/popen.c
index 399e250a..73770d98 100644
--- a/pc/popen.c
+++ b/pc/popen.c
@@ -13,7 +13,6 @@
#define _NFILE 40
#endif
-static char template[] = "piXXXXXX";
static struct {
char *command;
char *name;
@@ -34,6 +33,7 @@ static struct {
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
+#if 0
static int
unixshell(char *p)
{
@@ -119,20 +119,16 @@ unlink_and_free(char *cmd)
s = cmd;
unlink(s); free(cmd);
}
+#endif
int
os_system(const char *cmd)
{
- char *s;
- int i;
- char *cmd1;
+ char *cmdexe = getenv("ComSpec");
+ char *cmd1 = quote_cmd(cmd);
+ int i = spawnl(P_WAIT, cmdexe, "cmd.exe", "/c", cmd1, NULL);
- if ((cmd1 = scriptify(cmd)) == NULL) return(1);
- if (s = getenv("SHELL"))
- i = spawnlp(P_WAIT, s, s, cmd1 + strlen(s), NULL);
- else
- i = system(cmd1);
- unlink_and_free(cmd1);
+ free(cmd1);
return(i);
}
@@ -209,19 +205,15 @@ os_popen(const char *command, const char *mode )
char *name;
int cur;
char curmode[4];
-#if defined(__MINGW32__)
- char *cmd;
-#endif
if (*mode != 'r' && *mode != 'w')
return NULL;
strncpy(curmode, mode, 3); curmode[3] = '\0';
#if defined(__MINGW32__)
- current = popen(cmd = scriptify(command), mode);
+ current = popen(command, mode);
cur = fileno(current);
strcpy(pipes[cur].pmode, curmode);
- pipes[cur].command = cmd;
return(current);
#endif
@@ -268,7 +260,6 @@ os_pclose( FILE * current)
#if defined(__MINGW32__)
rval = pclose(current);
*pipes[cur].pmode = '\0';
- unlink_and_free(pipes[cur].command);
return rval;
#endif