A.44 library(readutil): Read utilities
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • The SWI-Prolog library
        • library(readutil): Read utilities
          • read_line_to_codes/2
          • read_line_to_codes/3
          • read_line_to_string/2
          • read_stream_to_codes/2
          • read_stream_to_codes/3
          • read_file_to_codes/3
          • read_file_to_string/3
          • read_file_to_terms/3
    • Packages
Availability::- use_module(library(readutil)).(can be autoloaded)
Source[det]read_line_to_codes(+Stream, -Line, ?Tail)
Difference-list version to read an input line to a list of character codes. Reading stops at the newline or end-of-file character, but unlike read_line_to_codes/2, the newline is retained in the output. This predicate is especially useful for reading a block of lines up to some delimiter. The following example reads an HTTP header ended by a blank line:
read_header_data(Stream, Header) :-
    read_line_to_codes(Stream, Header, Tail),
    read_header_data(Header, Stream, Tail).

read_header_data("\r\n", _, _) :- !.
read_header_data("\n", _, _) :- !.
read_header_data("", _, _) :- !.
read_header_data(_, Stream, Tail) :-
    read_line_to_codes(Stream, Tail, NewTail),
    read_header_data(Tail, Stream, NewTail).