:- if((
   prolog_source_context(source,File),
   ( \+ current_predicate(pfc_file_info/1); \+ pfc_file_info(File)),
   asserta(pfc_file_info(File)))).

:- pfc_file_info(File),!,stream_property(In,file(File)),
         repeat,
            fill_buffer(In),
            read_pending_codes(In, Chars, Tail),
            \+ \+ ( Tail = [],
                    nop(format(Out, '~s', [Chars])),
                    nop(flush_output(Out))
                  ),
            (   Tail == []
            ->  !
            ;   fail
            ).


:- endif.