# This line will be printed by ./parrot examples/pir/readline.t

# Copyright (C) 2001-2010, Parrot Foundation.

=head1 NAME

examples/pir/readline.pir - Read,concatenate and print

=head1 SYNOPSIS

    % ./parrot examples/pir/readline.pir

=head1 DESCRIPTION

Reads from C<stdin> and concatenates to a buffer. When an empty line is
received the buffer is printed and the program is terminated.

=cut

.include 'cclass.pasm'
.loadlib 'io_ops'

.sub "example" :main
        .local pmc stdin
        .local string buffer, line

        stdin = getstdin
        buffer = ""

AGAIN:
        line = readline stdin
        $I1 = length line
        if $I1 <= 1 goto MAINLOOP
        # test for multi-char newlines
        if $I1 >=3 goto CONCAT
        $I2 = is_cclass .CCLASS_NEWLINE, line, 0
        if $I2, MAINLOOP

CONCAT:
        buffer = concat buffer, line
        branch AGAIN

MAINLOOP:
        print buffer
.end

# Local Variables:
#   mode: pir
#   fill-column: 100
# End:
# vim: expandtab shiftwidth=4 ft=pir:
