delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1999/11/04/11:30:35

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT sourceware DOT cygnus DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sourceware DOT cygnus DOT com>
List-Help: <mailto:cygwin-help AT sourceware DOT cygnus DOT com>, <http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com
Message-ID: <549191FE7B71D311BC5900104B29213209BF20@kirk.takefive.co.at>
From: Anton Leherbauer <aleherbauer AT takefive DOT co DOT at>
To: "'cygwin AT sourceware DOT cygnus DOT com'" <cygwin AT sourceware DOT cygnus DOT com>
Subject: B20: bash does not like CRLF on stdin
Date: Thu, 4 Nov 1999 16:28:45 +0100
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2448.0)

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 DOT chapman AT xstreamis DOT 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 AT TakeFive DOT co DOT at

             The Source Code Engineering Company

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019