On Fri, Dec 03, 2010 at 03:52:04PM -0500, Matt Turner wrote: > From: Matthieu Herrb <[email protected]> > > GNU cpp is predefining a number of symbols, depending on the host and target > architecture. This can produce some unexpected results: for example, the > expansion of CLIENTHOST if the host name is i386.my.domain. > > The attached patch creates a new -undef option to xrdb that is passed to > cpp. > --- > Should it be on by default?
It would make sense to me, but given the low interest for the PR, I guess the are only a few people getting hit by this and they can cope with an extra option. > > Matthieu, please give your Signed-off-by. Signed-off-by: Matthieu Herrb <[email protected]> > > xrdb.c | 12 +++++++++++- > xrdb.man | 4 ++++ > 2 files changed, 15 insertions(+), 1 deletions(-) > > diff --git a/xrdb.c b/xrdb.c > index 21005c0..68accf8 100644 > --- a/xrdb.c > +++ b/xrdb.c > @@ -479,8 +479,11 @@ DoCmdDefines(String *buff) > *val = '='; > } else > AddSimpleDef(buff, arg + 2); > - } else > + } else if (arg[1] == 'U') { > AddUndef(buff, arg + 2); > + } else if (!strcmp(arg, "-undef") && oper != OPSYMBOLS) { > + addstring(buff, " -undef"); > + } > } > } > > @@ -867,6 +870,13 @@ main(int argc, char *argv[]) > fatal("%s: Too many -U/-D arguments\n", ProgramName); > } > continue; > + } else if (!strcmp ("-undef", arg)) { > + if (num_cmd_defines < MAX_CMD_DEFINES) { > + cmd_defines[num_cmd_defines++] = "-undef"; > + } else { > + fatal("%s: Too many cpp arguments\n", ProgramName); > + } > + continue; > } > Syntax (); > } else if (arg[0] == '=') > diff --git a/xrdb.man b/xrdb.man > index d0d45ad..ddf1a73 100644 > --- a/xrdb.man > +++ b/xrdb.man > @@ -223,6 +223,10 @@ This option indicates that > should not run the input file through a preprocessor before loading it > into properties. > .TP 8 > +.B -undef > +This option is passed to the C preprocessor if used. It prevents it from > +predefining any system specific macros. > +.TP 8 > .B \-symbols > This option indicates that the symbols that are defined for the preprocessor > should be printed onto the standard output. > -- > 1.7.2.2 > -- Matthieu Herrb _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
