comp.lang.ada
 help / color / mirror / Atom feed
* GNAT: no more exception raised on illformed text file?
@ 2012-02-06  7:08 Yannick Duchêne (Hibou57)
  2012-02-06 15:33 ` J-P. Rosen
  2012-02-06 19:04 ` Shark8
  0 siblings, 2 replies; 7+ messages in thread
From: Yannick Duchêne (Hibou57) @ 2012-02-06  7:08 UTC (permalink / raw)



Hi all,

Seems my FSF GNAT (*) does not raise an exception anymore when  
encountering the last line of a malformed text file; that is, a text file  
whose last line is not terminated with an end‑of‑line.

Is this on purpose?


(*) GNAT 4.7.0 20111119 (experimental)

-- 
“Syntactic sugar causes cancer of the semi-colons.” [1]
“Structured Programming supports the law of the excluded muddle.” [1]
[1]: Epigrams on Programming — Alan J. — P. Yale University



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: GNAT: no more exception raised on illformed text file?
  2012-02-06  7:08 GNAT: no more exception raised on illformed text file? Yannick Duchêne (Hibou57)
@ 2012-02-06 15:33 ` J-P. Rosen
  2012-02-06 16:03   ` Yannick Duchêne (Hibou57)
  2012-02-06 16:27   ` Adam Beneschan
  2012-02-06 19:04 ` Shark8
  1 sibling, 2 replies; 7+ messages in thread
From: J-P. Rosen @ 2012-02-06 15:33 UTC (permalink / raw)


Le 06/02/2012 08:08, Yannick Duchêne (Hibou57) a écrit :
> 
> Hi all,
> 
> Seems my FSF GNAT (*) does not raise an exception anymore when
> encountering the last line of a malformed text file; that is, a text
> file whose last line is not terminated with an end‑of‑line.
> 
> Is this on purpose?
I don't know, but it is definitely acceptable, and many would view this
as an improvement.

Ada says nothing about how an end_of_file_mark (and siblings) is
represented in the physical file. Considering that the end of the
physical file acts as an end_of_line_mark followed by an
end_of_page_mark followed by and end_of_file_mark is actually quite user
friendly: currently, all my programs that read files do not check the
end of file, but catch end_error, precisely because it works better on
ill formed files.

-- 
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: GNAT: no more exception raised on illformed text file?
  2012-02-06 15:33 ` J-P. Rosen
@ 2012-02-06 16:03   ` Yannick Duchêne (Hibou57)
  2012-02-06 16:27   ` Adam Beneschan
  1 sibling, 0 replies; 7+ messages in thread
From: Yannick Duchêne (Hibou57) @ 2012-02-06 16:03 UTC (permalink / raw)


Le Mon, 06 Feb 2012 16:33:32 +0100, J-P. Rosen <rosen@adalog.fr> a écrit:
> I don't know, but it is definitely acceptable, and many would view this
> as an improvement.
>
> Ada says nothing about how an end_of_file_mark (and siblings) is
> represented in the physical file.
Okay. I just wanted to know, in the context of some tiny tips I am writing  
about Ada in a forum.

Will just tell this may occur, with an emphasis on the “may”.

Thanks for your reply :-)

-- 
“Syntactic sugar causes cancer of the semi-colons.” [1]
“Structured Programming supports the law of the excluded muddle.” [1]
[1]: Epigrams on Programming — Alan J. — P. Yale University



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: GNAT: no more exception raised on illformed text file?
  2012-02-06 15:33 ` J-P. Rosen
  2012-02-06 16:03   ` Yannick Duchêne (Hibou57)
@ 2012-02-06 16:27   ` Adam Beneschan
  1 sibling, 0 replies; 7+ messages in thread
From: Adam Beneschan @ 2012-02-06 16:27 UTC (permalink / raw)


On Feb 6, 7:33 am, "J-P. Rosen" <ro...@adalog.fr> wrote:
> Le 06/02/2012 08:08, Yannick Duchêne (Hibou57) a écrit :
>
> > Hi all,
>
> > Seems my FSF GNAT (*) does not raise an exception anymore when
> > encountering the last line of a malformed text file; that is, a text
> > file whose last line is not terminated with an end-of-line.
>
> > Is this on purpose?
>
> I don't know, but it is definitely acceptable, and many would view this
> as an improvement.

Right--in fact, we've had issues where a customer created a file with
Notepad and didn't hit RETURN at the end of the last line, and then
asked why a program wasn't reading the last line of the file.  This
sort of behavior can be surprising and unwelcome.

                           -- Adam



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: GNAT: no more exception raised on illformed text file?
  2012-02-06  7:08 GNAT: no more exception raised on illformed text file? Yannick Duchêne (Hibou57)
  2012-02-06 15:33 ` J-P. Rosen
@ 2012-02-06 19:04 ` Shark8
  2012-02-06 19:45   ` Adam Beneschan
  2012-02-07  6:47   ` J-P. Rosen
  1 sibling, 2 replies; 7+ messages in thread
From: Shark8 @ 2012-02-06 19:04 UTC (permalink / raw)


On Feb 6, 1:08 am, Yannick Duchêne (Hibou57)
<yannick_duch...@yahoo.fr> wrote:
> Hi all,
>
> Seems my FSF GNAT (*) does not raise an exception anymore when
> encountering the last line of a malformed text file; that is, a text file
> whose last line is not terminated with an end-of-line.

Such a file is NOT a malformed text-file; that definition is a UNIX-
ism and therefore applicable ONLY to the UNIX/LINUX world. In Windows,
for example, a user in Notepad (or wordpad, or any other editor) can
save a text-file without such a termination (as Adam points out) and
it IS a valid text-file precisely because Windows does not define a
text-file in that manner. (IIRC all that Windows needs is the ASCII
EOF character.)



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: GNAT: no more exception raised on illformed text file?
  2012-02-06 19:04 ` Shark8
@ 2012-02-06 19:45   ` Adam Beneschan
  2012-02-07  6:47   ` J-P. Rosen
  1 sibling, 0 replies; 7+ messages in thread
From: Adam Beneschan @ 2012-02-06 19:45 UTC (permalink / raw)


On Feb 6, 11:04 am, Shark8 <onewingedsh...@gmail.com> wrote:
> On Feb 6, 1:08 am, Yannick Duchêne (Hibou57)
>
> <yannick_duch...@yahoo.fr> wrote:
> > Hi all,
>
> > Seems my FSF GNAT (*) does not raise an exception anymore when
> > encountering the last line of a malformed text file; that is, a text file
> > whose last line is not terminated with an end-of-line.
>
> Such a file is NOT a malformed text-file; that definition is a UNIX-
> ism and therefore applicable ONLY to the UNIX/LINUX world. In Windows,
> for example, a user in Notepad (or wordpad, or any other editor) can
> save a text-file without such a termination (as Adam points out) and
> it IS a valid text-file precisely because Windows does not define a
> text-file in that manner. (IIRC all that Windows needs is the ASCII
> EOF character.)

I don't even think it needs an EOF character, based on a test I just
ran; if it's stored on disk (or other storage), the file size is
enough to determine where the end of the file is.  Of course that may
not apply to files input over a serial line.

Also, I'm not even sure if the "malformed" definition applies in the
Unix/Linux worlds; I'd think users would still expect things to work
"correctly" even if the line terminator is missing.

                     -- Adam



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: GNAT: no more exception raised on illformed text file?
  2012-02-06 19:04 ` Shark8
  2012-02-06 19:45   ` Adam Beneschan
@ 2012-02-07  6:47   ` J-P. Rosen
  1 sibling, 0 replies; 7+ messages in thread
From: J-P. Rosen @ 2012-02-07  6:47 UTC (permalink / raw)


Le 06/02/2012 20:04, Shark8 a �crit :
>> Seems my FSF GNAT (*) does not raise an exception anymore when
>> encountering the last line of a malformed text file; that is, a text file
>> whose last line is not terminated with an end-of-line.
> 
> Such a file is NOT a malformed text-file; that definition is a UNIX-
> ism and therefore applicable ONLY to the UNIX/LINUX world. In Windows,
> for example, a user in Notepad (or wordpad, or any other editor) can
> save a text-file without such a termination (as Adam points out) and
> it IS a valid text-file precisely because Windows does not define a
> text-file in that manner. (IIRC all that Windows needs is the ASCII
> EOF character.)
You miss the point here. We are talking about a malformed file from the
Ada POV.

In Ada, a text is terminated by an End_Of_Line_Mark, followed by an
End_Of_Page_Mark, followed by an End_Of_File_Mark, but the standard does
not say how these marks are represented in the file.

IF an implementation chooses to represent EOL as LF, EOP as FF, and EOF
as ^Z, then any file that does not end with LF+FF+^Z is malformed. Such
an implementation is legal, but user hostile. Better implementations are
more flexible: Gnat f.e. accepts CR, LF, CR+LF and LF+CR as EOL.
Most implementations accept the physical end of file as EOF, and
generally as EOP+EOF if there is no explicit EOP.

The only thing required by the standard is that a file written by an Ada
program can be read by an Ada program (using the same compiler of
course). It is not specified that an Ada program can read a file
produced by a text editor. However, if you are a compiler vendor, you'd
better choose an implementation that accepts it, or you won't sell many
compilers!

-- 
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-02-07  6:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-06  7:08 GNAT: no more exception raised on illformed text file? Yannick Duchêne (Hibou57)
2012-02-06 15:33 ` J-P. Rosen
2012-02-06 16:03   ` Yannick Duchêne (Hibou57)
2012-02-06 16:27   ` Adam Beneschan
2012-02-06 19:04 ` Shark8
2012-02-06 19:45   ` Adam Beneschan
2012-02-07  6:47   ` J-P. Rosen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox