1.2. fcp: A file copy program

Start felix section to tools/fcp.flx[1 /1 ]
     1: #line 302 "./lpsrc/flx_faio_tools.pak"
     2: #import <flx.flxh>
     3: 
     4: include "flx_faio";
     5: include "flx_stream";
     6: 
     7: open Faio;
     8: open Flx_stream;
     9: open TerminalIByteStream[fd_t];
    10: open TerminalOByteStream[fd_t];
    11: 
    12: val fnin,fnout = System::argv 1, System::argv 2;
    13: 
    14: gen openi(s:string):fd_t = {
    15:   var f: fd_t;
    16:   f = Faio_posix::ropen(s);
    17:   if Faio_posix::invalid f do
    18:     print$ "Can't open input file " + s + "\n";
    19:     System::exit 1;
    20:   done;
    21:   return f;
    22: }
    23: 
    24: typedef posix_permissions = Faio_posix::posix_permissions;
    25: 
    26: gen openo(s:string, perm:posix_permissions):fd_t = {
    27:   var f: fd_t;
    28:   f = Faio_posix::aio_creat(s,perm);
    29:   if Faio_posix::invalid f do
    30:     print$ "Can't open output file " + s + "\n";
    31:     System::exit 1;
    32:   done;
    33:   return f;
    34: }
    35: 
    36: var fin = openi(fnin);
    37: var fout = openo(fnout,Faio_posix::access fin);
    38: cat (fin,fout);
    39: iclose(fin);
    40: oclose(fout);
    41: 
End felix section to tools/fcp.flx[1]