home *** CD-ROM | disk | FTP | other *** search
- /*
- Copyright (c) 1986, 90 by Prolog Development Center
- */
- include "ch19ex03.pre"
-
- database - rsh
- determ handle(integer)
-
- predicates
- main(shcom,integer)
- ehnd(integer)
- recv
-
- clauses
- ehnd(E):-
- E <> err_pipebroken, E <> err_pipeclosed, !,
- write("Error ",E," - exiting\n"),
- exit(E).
- ehnd(_):-
- handle(Handle),
- msgclose(Handle,purge,filter),
- msgcreate("\\pipe\\rsh",H),
- retractall(handle(_)),
- assert(handle(H)).
-
- main(dir(Wild),Handle):-
- dirfiles(Wild,fattrib_normal,Name,_,Hour,Min,Sec,Year,Month,Day,Size),
- msgsend(shcom,Handle,direntry(Name,Hour,Min,Sec,Year,Month,Day,Size)),
- fail.
- main(dir(_),Handle):-
- msgsend(shcom,Handle,eoj()),
- fail.
- main(copy(Name),Handle):-
- file_str(Name,FStr),
- msgsend(shcom,Handle,contents(FStr)),
- fail.
- main(_,_).
-
- recv:-
- trap(msgrecv(shcom,Handle,Req),E,ehnd(E)), !,
- main(Req,Handle),
- recv.
- recv:-
- recv.
-
- goal
- retractall(_,rsh),
- msgcreate("\\pipe\\rsh",H),
- assert(handle(H)),
- write("Running - press ctrl-brk to kill\n"),
- msgsetwait(100), % 1 sec - must respond to ctrl-brk.
- recv.