B20: bash does not like CRLF on stdin
Anton Leherbauer
aleherbauer@takefive.co.at
Thu Nov 4 07:28:00 GMT 1999
Create from the command line:
C:> echo ls > foo.sh
C:> bash foo.sh
... lots of output ...
C:> bash < foo.sh
: No such file or directory
The problem is that bash treats stdin as binary, thus leaving the
CR/LF in place. Interestingly, the following experiment works:
C:> bash
bash-2.0$ bash < foo.sh
... lots of output ...
This happens with cygwin B20 and bash 2.03 and is
especially bad, when using bash together with clearmake,
because clearmake executes build scripts in the above manner.
Jim Chapman [jim.chapman@xstreamis.com]
provided me with a fix to the problem:
Edit make_cmd.c in function make_bare_word() near line 53 (version is 2.02).
Make it look like
-------------------------------- begin ----------------------------
make_bare_word (string)
char *string;
{
WORD_DESC *temp;
temp = (WORD_DESC *)xmalloc (sizeof (WORD_DESC));
if (*string)
{
/* JC. Remove any rogue carriage return char - 12/21/98. */
int j, slen;
slen = strlen(string);
if (string[slen-1] == 0x0d)
{
string[slen-1] = '\0';
}
temp->word = savestring (string);
}
else
{
temp->word = xmalloc (1);
temp->word[0] = '\0';
}
temp->flags = 0;
return (temp);
}
--------------------------------- end -------------------------------
It would be great, if the fix would get into the common distribution.
Thanks,
Toni
--
Anton Leherbauer Phone: +43 662 457 915-89
TakeFive Software GmbH Fax: +43 662 457 915-6
Jakob-Haringer-Str. 8 http://www.TakeFive.com/
A-5020 Salzburg, Austria mailto:aleherbauer@TakeFive.co.at
The Source Code Engineering Company
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com
More information about the Cygwin
mailing list