Date: Wed, 30 Jan 2002 22:56:21 -0800 From: "Jeff Shevlen" <jeff@dsl.ca> To: "Giorgos Keramidas" <keramida@freebsd.org> Cc: <freebsd-questions@FreeBSD.ORG> Subject: Re: CVSup release info Message-ID: <047201c1aa24$6423d8e0$b300a8c0@wenk> References: <20020131031616.GA73680@hades.hell.gr>
next in thread | previous in thread | raw e-mail | index | archive | help
That's interesting. I had no idea shell scripts could interface with C like so. I have one last question in regards to the script. I looked at man cpp and I didn't see anything about "-E"; not to mention the " -" after the E. What does all this do? I ran the script without any modifiers to cpp and I got the same result as with "-E -" ! : > : $ ( echo '#include <sys/param.h>' ; echo __FreeBSD_version ) | cpp -E - | tail -1 : > : 500028 : : Ah but it is simple really. cpp(1) is a preprocessor. It doesn't : care if input comes from standard input. The symbol _FreeBSD_version : is defined in /usr/src/sys/sys/param.h (which finally is copied by : installworld to /usr/include/sys/param.h). The two 'echo' commands : produce a minimal C 'testbed' like below: : : $ ( echo '#include <sys/param.h>' ; echo __FreeBSD_version ) : #include <sys/param.h> : __FreeBSD_version : : This piped into cpp, will be preprocessed, and __FreeBSD_version (the : last line of the source) be substituted with it's value as defined in : /usr/include/sys/param.h. The final tail is fairly obvious now... : : -- : Giorgos Keramidas . . . . . . . . . keramida@{ceid.upatras.gr,freebsd.org} : FreeBSD Documentation Project . . . http://www.freebsd.org/docproj/ : FreeBSD: The power to serve . . . . http://www.freebsd.org/ : To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?047201c1aa24$6423d8e0$b300a8c0>