From: Stefan Weil <weil@mail.berlios.de>
To: "Andreas Färber" <andreas.faerber@web.de>
Cc: Blue Swirl <blauwirbel@gmail.com>,
Paolo Bonzini <pbonzini@redhat.com>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v2] win32: Fix CRLF problem in make_device_config.sh
Date: Sun, 19 Dec 2010 16:42:47 +0100 [thread overview]
Message-ID: <4D0E27F7.6020006@mail.berlios.de> (raw)
In-Reply-To: <AANLkTimUc+rFOqXbieGAvM6+WJa0LG1_a44XhGqnm6Q_@mail.gmail.com>
Am 18.12.2010 19:59, schrieb Blue Swirl:
> Thanks, applied.
>
> On Sat, Dec 18, 2010 at 5:09 PM, Andreas Färber
> <andreas.faerber@web.de> wrote:
>> Am 18.12.2010 um 17:34 schrieb Stefan Weil:
>>
>>> QEMU source code with CRLF line endings
>>> which is quite common on windows hosts
>>> fails with current make_device_config.sh.
>>>
>>> The awk script gets the name of the included
>>> file with \r, so instead of pci.mak it will
>>> search for pci.mak\r which of course does
>>> not work.
>>>
>>> Fix this by removing any \r.
>>>
>>> v2:
>>> Avoid using sub() and \r with awk because they are unsupported
>>> on some platforms. Use tr to remove \r. This new solution
>>> improves portability and was suggested by Paolo Bonzini.
>>>
>>> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
>>
>> Acked-by: Andreas Färber <andreas.faerber@web.de>
>>> ---
>>> make_device_config.sh | 2 +-
>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/make_device_config.sh b/make_device_config.sh
>>> index 8abadfe..596fc5b 100644
>>> --- a/make_device_config.sh
>>> +++ b/make_device_config.sh
>>> @@ -18,7 +18,7 @@ process_includes () {
>>>
>>> f=$src
>>> while [ -n "$f" ] ; do
>>> - f=`awk '/^include / {ORS=" " ; print "'$src_dir'/" $2}' $f`
>>> + f=`tr -d '\r' < $f | awk '/^include / {ORS=" "; print "'$src_dir'/"
>>> $2}'`
>>> [ $? = 0 ] || exit 1
>>> all_includes="$all_includes $f"
>>> done
>>> --
>>> 1.7.2.3
The new code raises a new problem (sorry that I did not detect it earlier):
On hosts with /bin/sh != bash, make displays an error from
make_device_config.sh:
$ touch default-configs/i386-softmmu.mak
$ make
GEN i386-softmmu/config-devices.mak
/qemu/make_device_config.sh: 24: cannot open
/qemu/default-configs/pci.mak : No such file
make continues, so the error message is not fatal but a cosmetical issue.
It took me some time to find the reason for this error message although
it is quite simple:
The filename f which is calculated using awk ends with a blank character
caused by ORS=" ".
Obviously this blank does not matter for bash and other shells when
$f is used as a parameter. I/O redirection with bash works, too.
But dash (and perhaps other simple shells) work different. For dash,
< $f works like < "$f", so the blank is part of the filename,
and "pci.mak " of course does not exist. Is this a dash bug or a feature?
Using ORS="" solves the problem for me, but might raise new compatibility
problems (is an empty records separator always supported?).
Andreas, may I ask you for one more test?
$ echo -e 'include xy\r' | tr -d '\r' | awk '/^include / {ORS=""; print
$2}' | od -c
It should return 0000002, not 0000003 like the previous test:
0000000 x y
0000002
Regards,
Stefan
next prev parent reply other threads:[~2010-12-19 15:43 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-16 21:52 [Qemu-devel] [PATCH] win32: Fix CRLF problem in make_device_config.sh Stefan Weil
2010-12-16 22:42 ` [Qemu-devel] " Paolo Bonzini
2010-12-17 13:34 ` Andreas Färber
2010-12-17 13:44 ` Paolo Bonzini
2010-12-17 19:01 ` Stefan Weil
2010-12-17 19:33 ` Andreas Färber
2010-12-17 19:54 ` Stefan Weil
2010-12-17 21:00 ` Andreas Färber
2010-12-17 21:25 ` Paolo Bonzini
2010-12-17 22:17 ` Andreas Färber
2010-12-17 23:24 ` Paolo Bonzini
2010-12-18 10:19 ` Stefan Weil
2010-12-18 12:02 ` Andreas Färber
2010-12-18 14:20 ` Stefan Weil
2010-12-17 20:08 ` Paolo Bonzini
2010-12-18 16:34 ` [Qemu-devel] [PATCH v2] " Stefan Weil
2010-12-18 17:09 ` Andreas Färber
2010-12-18 18:59 ` Blue Swirl
2010-12-19 15:42 ` Stefan Weil [this message]
2010-12-19 16:06 ` Andreas Färber
2010-12-20 10:37 ` Paolo Bonzini
2010-12-30 21:53 ` Andreas Färber
2010-12-30 22:04 ` [Qemu-devel] [PATCH] make_device_config: Fix non-fatal error message with dash and other shells Stefan Weil
2010-12-30 23:08 ` Andreas Färber
2010-12-19 16:21 ` [Qemu-devel] [PATCH v2] win32: Fix CRLF problem in make_device_config.sh Blue Swirl
2010-12-19 16:43 ` Andreas Färber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D0E27F7.6020006@mail.berlios.de \
--to=weil@mail.berlios.de \
--cc=andreas.faerber@web.de \
--cc=blauwirbel@gmail.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).