caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* RE: [Caml-list] Setting the EOL character....
@ 2002-09-13  2:24 Arturo Borquez
  2002-09-13  2:36 ` Richard Lyman
  0 siblings, 1 reply; 6+ messages in thread
From: Arturo Borquez @ 2002-09-13  2:24 UTC (permalink / raw)
  To: "Richard Lyman"; +Cc: caml-list

"Richard Lyman" <rich@lithinos.com> wrote:

>To start - I really don't know that much about programming (3 years self-taught in scripted web languages - Perl/PHP/Ruby), and I'm trying to learn OCaml...
>
>I've mostly dealt with persistent socket servers in other programming languages, and I'd like to write one in OCaml.
>
>I've read most of the book - Developing Applications with Objective Caml (English PDF), so I understand a little - but I'm still very unsure of myself.
>
>Here's the problem I'm trying to solve...
>
>I have a proprietary format I'm trying to read in through a socket - when I say proprietary I mean that the EOL character is the ASCII null character (\000) and not the '\n' character.
>
>I've looked at the examples in the OReilly book, but I'm not sure how to change the default End Of Line character (\n) to \000.
>
>Will I have to do some sort of pattern match on the stream so that I can deal with 'each line' using \000 as the EOL character?
>
>Do the input, input_line, read, or read_line methods accept a different EOL character as a parameter - or can I define the method differently?
>
>Since I can read in a certain amount of characters with methods like read, can I find the location of the ASCII null character and read from the stream until right after it?
>
>I hope I've asked good enough questions...
>
>Thanks for any help you guys can give!
>
>Let me know if anything's not clear enough...
>
>-Rich
>

Hi,

you could try something like this

let read_eol inchan =
  let rec f buf =
    let c = input_char inchan in
    if c = '\000' then Buffer.contents buf
    else begin Buffer.add_char buf c; f buf end
  in f (Buffer.create 64);;   

or in 'revised syntax which I prefer)

value read_eol inchan =
  f (Buffer.create 64) where rec f buf =
    let c = input_char inchan in
    if c = '\000' then Buffer.contents buf
    else do { Buffer.add_char buf c; f buf }
;

(Note there is no exception handling in examples)
Regards
-- 
Arturo Borquez


__________________________________________________________________
The NEW Netscape 7.0 browser is now available. Upgrade now! http://channels.netscape.com/ns/browsers/download.jsp 

Get your own FREE, personal Netscape Mail account today at http://webmail.netscape.com/
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 6+ messages in thread
* [Caml-list] Setting the EOL character....
@ 2002-09-13  0:07 Richard Lyman
  0 siblings, 0 replies; 6+ messages in thread
From: Richard Lyman @ 2002-09-13  0:07 UTC (permalink / raw)
  To: caml-list

[-- Attachment #1: Type: text/plain, Size: 1395 bytes --]

To start - I really don't know that much about programming (3 years self-taught in scripted web languages - Perl/PHP/Ruby), and I'm trying to learn OCaml...

I've mostly dealt with persistent socket servers in other programming languages, and I'd like to write one in OCaml.

I've read most of the book - Developing Applications with Objective Caml (English PDF), so I understand a little - but I'm still very unsure of myself.

Here's the problem I'm trying to solve...

I have a proprietary format I'm trying to read in through a socket - when I say proprietary I mean that the EOL character is the ASCII null character (\000) and not the '\n' character.

I've looked at the examples in the OReilly book, but I'm not sure how to change the default End Of Line character (\n) to \000.

Will I have to do some sort of pattern match on the stream so that I can deal with 'each line' using \000 as the EOL character?

Do the input, input_line, read, or read_line methods accept a different EOL character as a parameter - or can I define the method differently?

Since I can read in a certain amount of characters with methods like read, can I find the location of the ASCII null character and read from the stream until right after it?

I hope I've asked good enough questions...

Thanks for any help you guys can give!

Let me know if anything's not clear enough...

-Rich

[-- Attachment #2: Type: text/html, Size: 2836 bytes --]

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

end of thread, other threads:[~2002-09-16 10:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-09-13  2:24 [Caml-list] Setting the EOL character Arturo Borquez
2002-09-13  2:36 ` Richard Lyman
2002-09-13  9:10   ` Alessandro Baretta
2002-09-13 15:33   ` Bruno.Verlyck
2002-09-13 15:52     ` Matt Boyd
  -- strict thread matches above, loose matches on Subject: below --
2002-09-13  0:07 Richard Lyman

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 NNTP newsgroup(s).