On Wednesday 19 January 2005 01:55 pm, Blaisorblade wrote:

> > As far as I can tell, the following sed invocation will give more or less
> > what the perl does, without a dependency on perl.  (Busybox has sed.)  It
> > may need a bit of adapting to make the makefile happy (and adding
> > config.tmp to make clean), but the concept seems to work...
> >
> > sed -e 's/^.*$/"&\\n"/' /linux-2.6.9/.config > config.tmp
>
> It's ok, if the "&" stands for the matched string as I recall; I've done it
> through this equivalent form:
>
> sed -e 's/^/"/' -e 's/$/\\n"/' .config > config.tmp

Cool.

> I've also modified this further below for a different requirement.
>
> The only potential problem is the use of the temporary file which is not
> nice, however your need seems more important in fact...

There's bound to be a way to make the temporary file go away.  I couldn't 
quite figure out how to apply the in-place option for sed, but possibly the 
sed output could be assigned to an environment variable, and the shell could 
do the final splice of the data into place...

> > sed -e '/CONFIG/{' -e 's/"CONFIG"\;/""/' -e 'r config.tmp' -e 'a ""\;' \
> >  -e '}' config.c.in
>
> If you compare that with the real result, it does not match - and you see
> it because double quotes in .config (which exist, yes) are not escaped as
> here (the dollar is escaped in the original):

As I said, it needed more work.  I wanted to float the concept to see if 
people were agreeable to it.

> Which gives the same result as the original method (there is one trivial
> difference at the beginning of the output which is, IMHO, purely
> cosmethical:
>
> --- arch/um/kernel/config.c     2005-01-19 18:51:48.174446032 +0100
> +++ ./config.c  2005-01-19 18:52:46.015652832 +0100
> @@ -9,3 +9,4 @@
>
> -static __initdata char *config = "#\n"
> +static __initdata char *config = ""
> +"#\n"
>  "# Automatically generated make config: don't edit\n"
>
> This actually should work, indeed, if translated in the Makefile... which
> should be more or less like the attached patch.
>
> Also, I wanted to avoid writing more -e options for the same programs, to
> have it clearer... however I had problems to do it in the Makefile, so I

I probably could have gotten the result to match exactly, but the result would 
have been a more complex sed invocation for no real gain...

> Please double-check that the patch works with your busybox sed
> implementation, and compare the original and the new obtained config.c
> carefully, since the sed code you supplied wasn't good.

I maintain busybox sed, and if it can't handle something gnu sed can, I will 
fix it.

> In fact, I'm no expert in sed portability, so I'm not sure if it behaves
> well with busybox (actually I'm no sed expert, so it was difficult for me
> to read your code at first).

Sorry 'bout that.  I wasn't a sed expert before I extensively rewrote busybox 
sed, but I want to replace all the gnu command line tools with busybox ones 
(for general usage: the FSF took 833 lines of C to implement "cat".  That's 
just wrong).  Sed was heavily used in the ./configure steps of a lot of 
software packages.  The old one didn't work, now it does.

I'll take a closer look at the patch this evening.  Thanks.

Rob


-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to