home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / CHIP_CD_2004-07.iso / software / nncron_hit / files / nncron189.exe / plugins / tools.spf < prev    next >
Text File  |  2003-09-28  |  2KB  |  104 lines

  1. \ File:         tools.spf
  2. \ Author:       Nicholas Nemtsev
  3. \ Date:         14.07.2002
  4. \ Description:  Console tools
  5. \ Usage: WORDS-LIKE piece-of-word
  6. \        TASKS
  7. \ Modified: 14.07.03
  8. \   new words: TABS TASK-DELETE TDEL TADD
  9.  
  10. C" CRON-TOOLS" FIND NIP [IF] CRON-TOOLS [THEN]
  11.  
  12. MARKER CRON-TOOLS
  13.  
  14. : WORDS-LIKE ( -- )
  15.   BL WORD COUNT 2>R
  16.   CONTEXT @ @
  17.   BEGIN
  18.     ?DUP
  19.   WHILE
  20.     DUP COUNT 2R@ SEARCH NIP NIP
  21.     IF
  22.        DUP ID. SPACE
  23.     THEN
  24.     CDR
  25.   REPEAT
  26.   2R> 2DROP
  27.   CR
  28. ;
  29.  
  30. \ cron tools
  31.  
  32. : TASKS
  33. \ Displays list of task
  34.     CRON-LIST
  35.     BEGIN @ ?DUP WHILE
  36.         DUP  CRON-NAME @ ID. SPACE DUP CRON-FILENAME @ ID. CR
  37.     REPEAT
  38. ;
  39.  
  40. : TABS
  41. \ Displays list of crontabs
  42.     [NONAME NodeValue TAB-FILENAME @ COUNT EVAL-SUBST TYPE CR NONAME]
  43.     TAB-LIST DoList ;
  44.  
  45. : TASK-DELETE ( task --)
  46. \ Deletes specified task. Task should exist.
  47. \ Usage: task-name TASK-DELETE
  48.     CUR-NODE >R
  49.     @ TO CUR-NODE
  50.     ['] CUR-NODE-DELETE CATCH DROP
  51.     R> TO CUR-NODE
  52. ;
  53.  
  54. : TASK-DEL get-string ['] EVALUATE CATCH ?DUP
  55.     IF ." Task not found ( " . ." )" 2DROP ELSE TASK-DELETE THEN
  56. ;
  57.  
  58. : 1stCRONTAB TAB-LIST @ TAB-FILENAME @ COUNT EVAL-SUBST ;
  59.  
  60. : TASK-ADD ( | "task name" ["crontab name"] -- )
  61. \ Defines new task. Reads input lines up to . (dot) at beginning  of line.
  62.     { \ aztab aztask h buf -- }
  63.     get-string S>ZALLOC TO aztask
  64.     get-string ?DUP 0= IF DROP 1stCRONTAB THEN S>ZALLOC TO aztab
  65.     aztab ASCIIZ> R/W OPEN-FILE-SHARED 0=
  66.     IF
  67.         TO h
  68.         10240 ALLOCATE THROW TO buf
  69.         buf 0!
  70.         BEGIN REFILL IF SOURCE S" ." COMPARE 0<> ELSE FALSE THEN WHILE
  71.           SOURCE buf +ZPLACE LT LTL @ buf +ZPLACE
  72.         REPEAT
  73.         \  writing
  74.         h >EOF
  75.         S" #( " h WRITE-FILE DROP
  76.         aztask ASCIIZ> h WRITE-LINE DROP
  77.         buf ASCIIZ>  h WRITE-FILE DROP
  78.         S" )#" h WRITE-LINE DROP
  79.         h CLOSE-FILE DROP
  80.         buf FREE DROP
  81.         1 WORD DROP
  82.         reload-crontab
  83.     ELSE DROP THEN
  84.     aztab FREE DROP
  85.     aztask FREE DROP
  86. ;
  87.  
  88. : TASK-GET ( | "task name" ["crontab name"] -- )
  89.     { \ aztab aztask h -- }
  90.     get-string S>ZALLOC TO aztask
  91.     aztask ASCIIZ> ['] EVALUATE CATCH 0=
  92.     IF
  93.         @ CRON-FILENAME @ COUNT
  94.         get-string 2DROP
  95.     ELSE 2DROP get-string ?DUP 0= IF DROP 1stCRONTAB THEN THEN
  96.     S>ZALLOC TO aztab
  97.     aztab ASCIIZ> R/O OPEN-FILE-SHARED 0=
  98.     IF
  99.  
  100.     THEN
  101.     aztab FREE DROP
  102.     aztask FREE DROP
  103. ;
  104.