unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
Cc: emacs-devel@gnu.org
Subject: Re: cc-mode adds newlines
Date: Thu, 25 Nov 2004 20:35:07 +0000 (GMT)	[thread overview]
Message-ID: <Pine.LNX.3.96.1041125192732.422B-100000@acm.acm> (raw)
In-Reply-To: <E1CX9GS-0006iy-CF@fencepost.gnu.org>

Hi, Richard, Hi, Emacs developers, Hi, gcc maintainers!

On Wed, 24 Nov 2004, Richard Stallman wrote:

[Subject: gcc's acceptance of string constants which straddle lines.]
>    Accepting such strings is a violation of the C++ standard, I think.  I'll
>    need to complain about this to GCC.  Possibly, I'll not be the first.

>We do not "violate" the C++ standard, we diverge from it.  We do not
>regard standards as authorities.  We make our own decisions.

OK.  That's fine by me, but .....

The situation which bit me was this:  In our embedded system, commands
get sent from device to device as strings of ASCII, a fairly normal
thing.

One particular command string was, in essence, coded thus:

const char *command =
    "aaaa
     bbbb" ;

which normally compiles to "aaaa<LF>     bbbb".  The receiving device
ignores the white space.

However, due to a mixup with proprietory version control systems and
editors, this source file somehow got to the build process with
"proprietory" line terminators.  gcc compiled the file without complaint
(on QNX, a proprietory Posix system), but the command string ended up as

"aaaa<CR><LF>    bbbb".

To the receiving device, the <CR> meant something like "do not process
the rest of this command".  To track the resulting bug down took about 40
hours of work, all told.

This is, I think, the reason why the C and C++ standards don't allow
strings to straddle lines:  the meaning of a source file can change with
the EOL convention.

Now, I like proprietory file formats almost as little as you do, and over
the decades, in projects like ours, they must have wasted untold billions
of dollars, pounds, Marks, Yen, Francs, ...., not to mention trillions of
Lira and Pesetas ;-).

It would have been nice to have got at least a warning message here.  Of
course, the Right Thing is for me to put the appropriate option (perhaps
-traditional-cpp?) into the build scripts.  The solution I actually
adopted was to purge all such strings from the source files (all ~2200 of
them - it's a very slackly written program :-(  It took me ~half a day to
write a regular expression to find them).  However, those 40 hours of
work are lost forever :-(.

But I _do_ understand the need for having strings straddling lines, too.
It's would be a pain in the donkey to have to end every line of, for
example, the doc string in a DEFUN macro with ....\n", and things like
that.  And I _do_ understand that it's desirable, sometimes, to compile
those strings with the target OS's EOL convention.

>Complain if you wish, but I will not agree to the absurd limitation of
>string constants to a single line.

By "complain", I meant simply to draw my experiences to the attention of
the gcc maintainers, and ask them to consider, perhaps, whether the gcc
options (or their defaults) might be modified in some way so as to help
other projects avoid falling into the same trap as mine did, whilst at
the same time not inconveniencing those who positively need such strings.

I was not proposing throwing some sort of temper fit.  I think you know
me better than that by now.  ;-)

So, gcc people:  is there a way?

Thanks in advance!

-- 
Alan Mackenzie (Munich, Germany)




  reply	other threads:[~2004-11-25 20:35 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.3671.1100818498.8225.bug-gnu-emacs@gnu.org>
2004-11-18 23:31 ` cc-mode adds newlines Jari Aalto
2004-11-19 20:27   ` Alan Mackenzie
2004-11-19 23:13     ` Andries Brouwer
2004-11-20  0:13       ` Miles Bader
2004-11-20 15:14       ` Alan Mackenzie
2004-11-21  2:08         ` Andries Brouwer
2004-11-21 10:00           ` Miles Bader
2004-11-21 11:38             ` Andries Brouwer
2004-11-21 12:08               ` Alfred M. Szmidt
2004-11-21 12:45                 ` Andries Brouwer
2004-11-21 12:58                   ` Alfred M. Szmidt
2004-11-21 13:03                     ` Andries Brouwer
2004-11-21 13:09                       ` Alfred M. Szmidt
2004-11-25 15:59                         ` cc-mode adds newlines version=2.64 Jari Aalto
2004-11-22  0:03                     ` cc-mode adds newlines Stefan Monnier
2004-11-21 12:53               ` Miles Bader
2004-11-21 13:00                 ` Andries Brouwer
2004-11-21 13:14                   ` David Kastrup
2004-11-21 13:35                     ` Andries Brouwer
2004-11-21 13:41                       ` David Kastrup
2004-11-21 13:54                         ` Andries Brouwer
2004-11-21 15:54                           ` Thien-Thi Nguyen
2004-11-21 11:06           ` David Kastrup
2004-11-21 11:45             ` Andries Brouwer
2004-11-21 12:08               ` David Kastrup
2004-11-21 11:41           ` Alan Mackenzie
2004-11-21 12:26             ` Andries Brouwer
2004-11-21 12:34               ` David Kastrup
2004-11-21 12:49                 ` Andries Brouwer
2004-11-21 13:08                   ` David Kastrup
2004-11-21 13:28                     ` Andries Brouwer
2004-11-21 13:37                       ` David Kastrup
2004-11-21 13:43                         ` Andries Brouwer
2004-11-21 13:51                           ` David Kastrup
2004-11-21 14:03                             ` Andries Brouwer
2004-11-21 15:01                               ` David Kastrup
2004-11-21 15:08                                 ` Andries Brouwer
2004-11-22 19:21                                   ` Kevin Rodgers
2004-11-21 15:18                               ` Andreas Schwab
2004-11-21 15:36                                 ` Andries Brouwer
     [not found]                       ` <01c4d003$Blat.v2.2.2$3d9a05c0@zahav.net.il>
2004-11-21 21:28                         ` Andries Brouwer
2004-11-22  4:35                           ` Eli Zaretskii
2004-11-22  9:04                           ` David Kastrup
2004-11-21 13:52               ` Alan Mackenzie
2004-11-21 14:29                 ` Andries Brouwer
2004-11-21 15:07                   ` David Kastrup
2004-11-21 15:20                     ` Andries Brouwer
2004-11-21 19:03                   ` Alfred M. Szmidt
2004-11-21 21:19                     ` Andries Brouwer
2004-11-21 21:46                       ` Alfred M. Szmidt
2004-11-21 22:19                         ` Andries Brouwer
2004-11-22 11:54                       ` Benjamin Riefenstahl
2004-11-22 15:54                         ` Andries Brouwer
2004-11-22 16:56                           ` Andreas Schwab
2004-11-21 15:50                 ` Kai Grossjohann
2004-11-22 19:20                   ` Kevin Rodgers
2004-11-24 10:12                     ` Kai Grossjohann
     [not found]               ` <01c4d002$Blat.v2.2.2$50b57dc0@zahav.net.il>
2004-11-21 21:21                 ` Andries Brouwer
2004-11-22  4:31                   ` Eli Zaretskii
2004-11-22  0:12             ` Stefan Monnier
2004-11-22 14:07             ` Richard Stallman
2004-11-22 15:52               ` Stefan Monnier
2004-11-22 19:16                 ` Kevin Rodgers
2004-11-22 20:06                   ` Stefan Monnier
2004-11-24  2:27                 ` Richard Stallman
2004-11-24  4:27                   ` Stefan Monnier
2004-11-28 14:45                     ` Martin Stjernholm
2004-11-29  6:11                       ` Richard Stallman
2004-11-30 10:51                         ` Martin Stjernholm
2004-12-01  2:56                           ` Richard Stallman
2004-11-21 14:47           ` Andreas Schwab
2004-11-21 15:03             ` Andries Brouwer
2004-11-21 15:39         ` Richard Stallman
2004-11-21 21:47           ` Alan Mackenzie
2004-11-23 16:30             ` Richard Stallman
2004-11-25  2:21             ` Richard Stallman
2004-11-25 20:35               ` Alan Mackenzie [this message]
2004-11-28 16:56 Andries.Brouwer
     [not found] ` <Andries.Brouwer@cwi.nl>
2004-11-28 17:17   ` Martin Stjernholm
2004-11-28 20:20     ` Andries Brouwer
2004-11-29  0:14       ` Kim F. Storm
2004-11-30  7:01       ` Richard Stallman
2004-12-31 15:26         ` Richard Stallman
2004-12-31 16:56           ` Andries Brouwer
2005-01-02 16:05             ` Richard Stallman
2005-01-02 18:02               ` Andries Brouwer
2004-11-30  7:01 ` Richard Stallman
2004-11-30  8:11   ` David Kastrup
2004-12-01  2:56     ` Richard Stallman

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.3.96.1041125192732.422B-100000@acm.acm \
    --to=acm@muc.de \
    --cc=emacs-devel@gnu.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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).