home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / e / amigae30a_fr.lha / AmigaE30f / Sources / Utils / Watch.e < prev   
Encoding:
Text File  |  1994-10-02  |  1.6 KB  |  51 lines

  1. /* Regarde un fichier par notification
  2.  
  3. Affiche une requête qund un fichier est modifié.
  4. USAGE: watch <file>
  5. EXEMPLE: run >NIL: watch >NIL: s:startup-sequence
  6.  
  7. A besoin de la v37
  8.  
  9. "regarde" simplement un fichier, en utilisant le nouveau système
  10. de notification du kick 2.0.
  11. Note : il ne vous prévient pas que le fichier va être modifié, il
  12. vous le dit juste.
  13. Utile, par exemple, si vous installez un nouveau programme, et vous
  14. voulez savoir ce que fait l'Installer fait quelque chose à votre
  15. startup-sequence ou votre user-startup.
  16.  
  17. Notez que la seule façon d'arrêter Watch est de modifier le fichier
  18. (ou de rebooter :-)
  19.  
  20. */
  21.  
  22. OPT OSVERSION=37
  23.  
  24. MODULE 'dos/notify'
  25.  
  26. PROC main()                       /* s'assure que le fichier est là:  */
  27.   DEF nreq:PTR TO notifyrequest,sig,task    /* sinon on n'aura jamais */
  28.   IF (FileLength(arg)=-1) OR (arg[0]=0)     /* de notification        */
  29.     WriteF('file "\s" does not exist\n',arg)
  30.     CleanUp(10)
  31.   ENDIF
  32.   nreq:=New(SIZEOF notifyrequest)     /* mémoire vidée */
  33.   IF nreq=NIL THEN RETURN 20
  34.   sig:=AllocSignal(-1)                /* on veux être prévenu */
  35.   IF sig=-1 THEN RETURN 10
  36.   task:=FindTask(0)
  37.   nreq.name:=arg                      /* rempli dans la structure */
  38.   nreq.flags:=NRF_SEND_SIGNAL
  39.   nreq.port:=task                     /* union port/task */
  40.   nreq.signalnum:=sig
  41.   IF StartNotify(nreq)
  42.     WriteF('Now watching: "\s"\n',arg)
  43.     Wait(Shl(1,sig))
  44.     EasyRequestArgs(0,[20,0,0,'Le fichier "\s" a été modifié!','Zut!'],0,[arg])
  45.     EndNotify(nreq)
  46.   ELSE
  47.     WriteF('Ne peut pas regarder "\s".\n',arg)
  48.   ENDIF
  49.   FreeSignal(sig)
  50. ENDPROC
  51.