[Libguestfs] [PATCH] Set LC_ALL=C before running qemu.

Jim Meyering jim at meyering.net
Mon Oct 26 10:45:11 UTC 2009


Richard W.M. Jones wrote:
> This patch by no means covers all the cases where we run external
> programs and expect to parse their output without setting LC_ALL=C.
> But it's a good start.
...
> Subject: [PATCH] Set LC_ALL=C before running qemu.

This looks fine.
One possible improvement.

> diff --git a/src/guestfs.c b/src/guestfs.c
> index e49f57a..a25e9e7 100644
> --- a/src/guestfs.c
> +++ b/src/guestfs.c
> @@ -1195,6 +1195,8 @@ guestfs__launch (guestfs_h *g)
>      setpgid (0, 0);
>  #endif
>
> +    setenv ("LC_ALL", "C", 1);

Failure is unlikely, but you might want to diagnose it, just in case.

>      execv (g->qemu, g->cmdline); /* Run qemu. */
>      perror (g->qemu);
>      _exit (1);
> @@ -1486,7 +1488,7 @@ test_qemu (guestfs_h *g)
>    g->qemu_help = NULL;
>    g->qemu_version = NULL;
>
> -  snprintf (cmd, sizeof cmd, "'%s' -help", g->qemu);
> +  snprintf (cmd, sizeof cmd, "LC_ALL=C '%s' -help", g->qemu);
>
>    fp = popen (cmd, "r");
>    /* qemu -help should always work (qemu -version OTOH wasn't
> @@ -1508,7 +1510,7 @@ test_qemu (guestfs_h *g)
>    if (pclose (fp) == -1)
>      goto error;
>
> -  snprintf (cmd, sizeof cmd, "'%s' -version 2>/dev/null", g->qemu);
> +  snprintf (cmd, sizeof cmd, "LC_ALL=C '%s' -version 2>/dev/null", g->qemu);
>
>    fp = popen (cmd, "r");
>    if (fp) {




More information about the Libguestfs mailing list