home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l217 / 2.ddi / EXAMPLES / CH19EX03.PRO < prev    next >
Encoding:
Text File  |  1990-03-26  |  1.1 KB  |  53 lines

  1. /*
  2.    Copyright (c) 1986, 90 by Prolog Development Center
  3. */
  4. include "ch19ex03.pre"
  5.  
  6. database - rsh
  7. determ handle(integer)
  8.  
  9. predicates
  10. main(shcom,integer)
  11. ehnd(integer)
  12. recv
  13.  
  14. clauses
  15. ehnd(E):-
  16.     E <> err_pipebroken, E <> err_pipeclosed, !,
  17.     write("Error ",E," - exiting\n"),
  18.     exit(E).
  19. ehnd(_):-
  20.     handle(Handle),
  21.     msgclose(Handle,purge,filter),
  22.     msgcreate("\\pipe\\rsh",H),
  23.     retractall(handle(_)),
  24.     assert(handle(H)).
  25.  
  26. main(dir(Wild),Handle):-
  27.     dirfiles(Wild,fattrib_normal,Name,_,Hour,Min,Sec,Year,Month,Day,Size),
  28.     msgsend(shcom,Handle,direntry(Name,Hour,Min,Sec,Year,Month,Day,Size)),
  29.     fail.
  30. main(dir(_),Handle):-
  31.     msgsend(shcom,Handle,eoj()),
  32.     fail.
  33. main(copy(Name),Handle):-
  34.     file_str(Name,FStr),
  35.     msgsend(shcom,Handle,contents(FStr)),
  36.     fail.
  37. main(_,_).
  38.  
  39. recv:-
  40.     trap(msgrecv(shcom,Handle,Req),E,ehnd(E)), !,
  41.     main(Req,Handle),
  42.     recv.
  43. recv:-
  44.     recv.
  45.  
  46. goal
  47.     retractall(_,rsh),
  48.     msgcreate("\\pipe\\rsh",H),
  49.     assert(handle(H)),
  50.     write("Running - press ctrl-brk to kill\n"),
  51.     msgsetwait(100),    % 1 sec - must respond to ctrl-brk.
  52.     recv.
  53.