[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: c-api.test fails on MS-Windows due to non-portable quoting
From: |
Eli Zaretskii |
Subject: |
Re: c-api.test fails on MS-Windows due to non-portable quoting |
Date: |
Sat, 27 Aug 2016 11:23:39 +0300 |
Ping! (2 weeks)
> Date: Sat, 13 Aug 2016 14:55:27 +0300
> From: Eli Zaretskii <address@hidden>
> Cc: address@hidden, address@hidden
>
> > Date: Sat, 13 Aug 2016 12:11:33 +0300
> > From: Eli Zaretskii <address@hidden>
> > Cc: address@hidden, address@hidden
> >
> > > From: Mark H Weaver <address@hidden>
> > > Cc: address@hidden, address@hidden
> > > Date: Wed, 10 Aug 2016 13:03:09 -0400
> > >
> > > Eli Zaretskii <address@hidden> writes:
> > >
> > > >> Date: Wed, 10 Aug 2016 17:26:15 +0300
> > > >> From: Eli Zaretskii <address@hidden>
> > > >> Cc: address@hidden, address@hidden
> > > >>
> > > >> If you suggest to do what I described above, then I obviously agree.
> > > >
> > > > IOW, do you want me to send a patch along the lines I suggested?
> > >
> > > Yes, please!
> >
> > Will do when I have enough time (correctly quoting command-line
> > arguments on Windows is a tricky business).
>
> On further thought, I decided to reuse code we already have, rather
> than write something new. Is the approach below acceptable? If it
> is, I will post it in Git format wrt the current repo.
>
> --- libguile/simpos.c~0 2016-01-02 16:24:55.000000000 +0200
> +++ libguile/simpos.c 2016-08-13 13:56:43.014875000 +0300
> @@ -45,12 +45,12 @@
> # include <sys/wait.h>
> #endif
>
> +#include "posix.h"
> +
> #ifdef __MINGW32__
> -# include <process.h> /* for spawnvp and friends */
> +#include "posix-w32.h"
> #endif
>
> -#include "posix.h"
> -
>
> extern int system();
>
> @@ -124,9 +124,9 @@ SCM_DEFINE (scm_system_star, "system*",
> SCM oldquit;
> SCM sigquit;
> #endif
> -#ifdef HAVE_FORK
> int pid;
> -#else
> +#ifndef HAVE_FORK
> + int p1[2], p2[2];
> int status;
> #endif
> char **execargv;
> @@ -177,7 +177,21 @@ SCM_DEFINE (scm_system_star, "system*",
> return scm_from_int (status);
> }
> #else /* !HAVE_FORK */
> +#ifdef __MINGW32__
> + /* MS-Windows spawnvp needs execargv[] strings quoted if they
> + include special characters, like whitespace. The required
> + quoting is non-trivial, and also depends on whether
> + execargv[0] is cmd.exe. So we invoke start_child instead,
> + which already has all that figured out. */
> + pid = start_child (execargv[0], execargv, 0, p1, 0, p2,
> + fileno (stdin), fileno (stdout), fileno (stderr));
> + if (pid == -1)
> + SCM_SYSERROR;
> +
> + waitpid (pid, &status, 0);
> +#else
> status = spawnvp (P_WAIT, execargv[0], (const char * const *)execargv);
> +#endif
> scm_sigaction (sigint, SCM_CAR (oldint), SCM_CDR (oldint));
> #ifdef SIGQUIT
> scm_sigaction (sigquit, SCM_CAR (oldquit), SCM_CDR (oldquit));
>
>
- Re: c-api.test fails on MS-Windows due to non-portable quoting, Mark H Weaver, 2016/08/10
- Re: c-api.test fails on MS-Windows due to non-portable quoting, Eli Zaretskii, 2016/08/10
- Re: c-api.test fails on MS-Windows due to non-portable quoting, Eli Zaretskii, 2016/08/10
- Re: c-api.test fails on MS-Windows due to non-portable quoting, Mark H Weaver, 2016/08/10
- Re: c-api.test fails on MS-Windows due to non-portable quoting, Eli Zaretskii, 2016/08/13
- Re: c-api.test fails on MS-Windows due to non-portable quoting, Eli Zaretskii, 2016/08/13
- Re: c-api.test fails on MS-Windows due to non-portable quoting,
Eli Zaretskii <=
- Re: c-api.test fails on MS-Windows due to non-portable quoting, Andy Wingo, 2016/08/31
- Re: c-api.test fails on MS-Windows due to non-portable quoting, Eli Zaretskii, 2016/08/31