[PATCH:xrdb 1/2] Only add -P flag if using cpp as our preprocessor

walter harms wharms at bfs.de
Sat Jul 20 03:03:19 PDT 2013


in a next patch someone could add something like:

xasprinf()
{
	if (asprintf(cmd) <0)
	  fatal("%s: Out of memory\n", ProgramName);
	return cmd
}

btw: i noticed
  (void) mktemp(tmpname3);
should that be mkstemp() ?

just my 2 cents

Reviewed-by: <wharms at bfs.de>

Am 20.07.2013 04:52, schrieb Alan Coopersmith:
> Restores ability to use m4 (broken in xrdb-1.0.8 by commit 117021570515f)
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=34546
> 
> Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
> ---
>  xrdb.c |   25 ++++++++++++++++++-------
>  1 file changed, 18 insertions(+), 7 deletions(-)
> 
> diff --git a/xrdb.c b/xrdb.c
> index f13ae5e..58dd049 100644
> --- a/xrdb.c
> +++ b/xrdb.c
> @@ -1250,8 +1250,18 @@ Process(int scrno, Bool doScreen, Bool execute)
>  		      template, editFile);
>  	}
>      } else {
> +	const char *cpp_addflags = "";
> +
>  	if (oper == OPMERGE || oper == OPOVERRIDE)
>  	    GetEntriesString(&newDB, xdefs);
> +
> +	/* Add -P flag only if using cpp, not another preprocessor */
> +	if (cpp_program) {
> +	    const char *cp = strstr(cpp_program, "cpp");
> +
> +	    if (cp && ((cp[3] == '\0') || cp[3] == ' '))
> +		cpp_addflags = "-P";
> +	}
>  #ifdef PATHETICCPP
>  	if (need_real_defines) {
>  #ifdef WIN32
> @@ -1261,8 +1271,8 @@ Process(int scrno, Bool doScreen, Bool execute)
>  	    fprintf(input, "\n#include \"%s\"\n", filename);
>  	    fclose(input);
>  	    (void) mktemp(tmpname3);
> -	    if (asprintf(&cmd, "%s -P%s %s > %s", cpp_program, includes.val,
> -			 tmpname2, tmpname3) == -1)
> +	    if (asprintf(&cmd, "%s %s %s %s > %s", cpp_program, cpp_addflags,
> +			 includes.val, tmpname2, tmpname3) == -1)
>  		fatal("%s: Out of memory\n", ProgramName);
>  	    if (system(cmd) < 0)
>  		fatal("%s: cannot run '%s'\n", ProgramName, cmd);
> @@ -1276,7 +1286,8 @@ Process(int scrno, Bool doScreen, Bool execute)
>  	    fprintf(stdin, "\n#include \"%s\"\n", filename);
>  	    fflush(stdin);
>  	    fseek(stdin, 0, 0);
> -	    if (asprintf(&cmd, "%s -P%s", cpp_program, includes.val) == -1)
> +	    if (asprintf(&cmd, "%s %s %s", cpp_program, cpp_addflags,
> +			 includes.val) == -1)
>  		fatal("%s: Out of memory\n", ProgramName);
>  	    if (!(input = popen(cmd, "r")))
>  		fatal("%s: cannot run '%s'\n", ProgramName, cmd);
> @@ -1291,8 +1302,8 @@ Process(int scrno, Bool doScreen, Bool execute)
>  	if (cpp_program) {
>  #ifdef WIN32
>  	    (void) mktemp(tmpname3);
> -	    if (asprintf(&cmd, "%s -P%s %s %s > %s", cpp_program,
> -			 includes.val, defines.val,
> +	    if (asprintf(&cmd, "%s %s %s %s %s > %s", cpp_program,
> +			 cpp_addflags, includes.val, defines.val,
>  			 filename ? filename : "", tmpname3) == -1)
>  		fatal("%s: Out of memory\n", ProgramName);
>  	    if (system(cmd) < 0)
> @@ -1301,8 +1312,8 @@ Process(int scrno, Bool doScreen, Bool execute)
>  	    if (!(input = fopen(tmpname3, "r")))
>  		fatal("%s: can't open file '%s'\n", ProgramName, tmpname3);
>  #else
> -	    if (asprintf(&cmd, "%s -P%s %s %s", cpp_program,
> -			 includes.val, defines.val,
> +	    if (asprintf(&cmd, "%s %s %s %s %s", cpp_program,
> +			 cpp_addflags, includes.val, defines.val,
>  			 filename ? filename : "") == -1)
>  		fatal("%s: Out of memory\n", ProgramName);
>  	    if (!(input = popen(cmd, "r")))


More information about the xorg-devel mailing list