home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 14 / AACD14.ISO / CDTools / S / UpdateIndices < prev    next >
Text File  |  2000-09-21  |  3KB  |  105 lines

  1. /*
  2.     Update local index files
  3.     $VER: UpdateIndices 1.0 (12.12.99)
  4.     by Neil Bothwick
  5. */
  6.  
  7. /* ;;; Initialise */
  8. options results
  9. address command
  10. signal on error
  11. CDName = 'AACD14:'
  12.  
  13. call LoadLib('rexxsupport.library')
  14. call LoadLib('rexxdossupport.library')
  15. ;;;
  16. /* ;;; Ask whether the user wishes to update */
  17. if pos('AUTUP=Automatic',GetVar('AACD.prefs',Global,Binary)) = 0 then do
  18.     if length(GetVar('AACDIndex')||GetVar('AminetCDIndex')||GetVar('AminetSetIndex')||GetVar('AminetIndex')) = 0 then exit
  19.     'RequestChoice >ENV:AAUpdateNow "Amiga Active CD" "Do you wish to update the CD index*Nfiles on your hard drive with the new*Nones from the CD?" "Yes|No"'
  20.     if GetVar('AAUpdateNow') = 0 then do
  21.         call ShowMsg('This requester should not appear again.*NYou may update the index files at any time*Nfrom the Search section of AACDprefs')
  22.         call delete('ENV:AAUpdateNow')
  23.         exit
  24.         end
  25.     call delete('ENV:AAUpdateNow')
  26.     end
  27. ;;;
  28. /* ;;; Update Index files */
  29. /* AACD indices */
  30. DestDir = GetVar('AACDIndex')
  31. SrcDir = CDName'CDTools/Indices'
  32. Pattern = ParsePattern('AACD??',NOCASE)
  33. if DestDir > '' then call CopyFiles()
  34.  
  35. /* Aminet CD indices */
  36. DestDir = GetVar('AminetCDIndex')
  37. SrcDir = CDName'AACD/CDROM/AminetCDs/CDs'
  38. Pattern = ParsePattern('Index??',NOCASE)
  39. if DestDir > '' then call CopyFiles()
  40.  
  41. /* Aminet Set indices */
  42. DestDir = GetVar('AminetSetIndex')
  43. SrcDir = CDName'AACD/CDROM/AminetCDs/Sets'
  44. Pattern = ParsePattern('Set?',NOCASE)
  45. if DestDir > '' then call CopyFiles()
  46.  
  47. /* Aminet Online indices */
  48. DestDir = GetVar('AminetIndex')
  49. if DestDir > '' then do
  50.     SrcDir = CDName'AACD/Online/Aminet'
  51.     call DateCopy('INDEX')
  52.     call DateCopy('dirlist')
  53.     call open(List,AddPart(SrcDir,'dirlist'),'R')
  54.     do until eof(List)
  55.         File = readln(List)
  56.         if File = '' then iterate
  57.         call DateCopy(File)
  58.         end
  59.     call close(List)
  60.     end
  61. ;;;
  62. /* ;;; Exit */
  63. if Updated = 1 then call ShowMsg('All index files are up to date')
  64. exit
  65. ;;;
  66. /* ;;; Copy new files */
  67. CopyFiles:
  68.     FileList = showdir(SrcDir)
  69.     do i = 1 to words(FileList)
  70.         if MatchPattern(Pattern,word(FileList,i),NOCASE,PARSED) then call DateCopy(word(FileList,i))
  71.         end
  72.     return
  73. ;;;
  74. /* ;;; Copy updated files */
  75. DateCopy:
  76.     parse arg FileName
  77.     say fileName '-' DestDir
  78.     if word(statef(AddPart(SrcDir,FileName)),5) > word(statef(AddPart(DestDir,FileName)),5) then do
  79.         address command 'Copy >NIL:' AddPart(SrcDir,FileName) DestDir 'CLONE'
  80.         Updated = 1
  81.         end
  82.     return
  83. ;;;
  84. /* ;;; Load a library */
  85. LoadLib:
  86.     parse arg library
  87.     if show('L',library) then return
  88.     if ~exists('LIBS:'library) then address command 'copy System/Libs/'library 'LIBS: clone quiet'
  89.     if ~addlib(library,0,-30,0) then call ExitMsg('Failed to load' library||'0a'x||'Make sure you have run InitCD')
  90.     return
  91. ;;;
  92. /* ;;; ShowMsg */
  93. ShowMsg:
  94.     parse arg msg
  95.     address command 'RequestChoice >NIL: "Amiga Active CD" "'msg'" "OK"'
  96.     return
  97. ;;;
  98. /* ;;; Error handler */
  99. Error:
  100.     call ShowMsg('Error' RC 'in line' sigl)
  101.     if RC > 5 then exit
  102.     return
  103. ;;;
  104.  
  105.