[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Portability problem in rtems custom cfg's
- Date: Tue, 10 Aug 1999 16:18:02 +0200
- From: corsepiu at faw.uni-ulm.de (Ralf Corsepius)
- Subject: Portability problem in rtems custom cfg's
joel at oarcorp.com wrote:
> On Mon, 9 Aug 1999, David Sotkowitz wrote:
> > In the cfg sources, SED is used to remove CR-LF,and leave a LF on Unix.
> > The problem is, on NT, where the removal is unnecessary, a nibble is
> > removed from the checksum at the end of the srecord when generating the exe.
> My first response is that this is a bug in sed on cygwin. :)
> The history behind this is that some of the monitors for the boards listed
> below either (1) did not like the extra LF (i.e. refused to download
> unless it was removed) or (2) did not care and thus you saved a few
> seconds of download time.
> > The bug is in RTEMS 4.0.0
> > The following diff provides a modification that will work. Alternately,
> > one could conditionalize on ostype.
> If objcopy ever changes where it does not generate the extra \r, then this
> will also strip the last nibble.
> Ralf .. David .. any ideas what is the best thing to do?
There are too many basic questions involved to allow me to propose a solution:
* What are srec-files? Are they general text files (i.e. allow \r\n and/or \n), are
they DOS-text files (require \r\n) or are they unix text files (require \n). If
they are DOS-text files (I.e. binary files under unix), then using sed on them is
not allowed under unix and filtering \r would be a violation of their specs.
* If sed is internally converting \r\n to \n and vice-versa under Cygwin, it is
useless for many purposes, because the resulting text files would be DOS-text files
and thus useless under Unix. IMHO, sed shouldn't care about DOS-text files and
should not convert \n\r to \n, because sed is a unix tool to handle unix-text
* Using \r in sed substitution patterns is highly non-portable and is a extension
specific to gnu-sed, AFAIK.
* Seding out any non-printable characters is highly sensitive to portablity issues
and should be avoided (I.e. using sed to filter out \r is questionable in general)
* A portable sed pattern would be something similar to 's/\([0-9A-Za-z]*\)/\1/',
but this would be useless for filtering out \r if sed is expanding \n to \r\n on
output => Given sed's behavior on Cygwin is correct (which I doubt :-), RTEMS's
attempts to filter out \r are basically broken and can't be worked around by any