home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 3 / Amiga Tools 3.iso / rexx / dicehelpindex.raz < prev    next >
Encoding:
Text File  |  1994-12-29  |  2.7 KB  |  93 lines

  1. /*
  2.  * $Id: DICEHelpIndex.raz,v 1.5 1994/12/11 17:09:11 DBernard Rel $
  3.  *
  4.  * Patche le fichier d'index de DiceHelp (s:DiceHelp.index)
  5.  * pour que DICEHelp traite correctement les entrées:
  6.  * - dont la taille de block (3è mot) est égale à ffffffff
  7.  *   si on laisse tel-quel, DICEHelp essaiera d'alouer 4 Go (ULONG)(-1)
  8.  *   de mémoire, au lieu de se contenter de charger le fichier jusqu'à
  9.  *   la fin.
  10.  * - la dernière entrée de chaque fichier .doc n'a pas de tabulations
  11.  *   (poutant nécessaires à DICEHelp) et la taille du bloc est ffffffff :-{
  12.  *
  13.  * Normalement, il n'y a que la dernière entrée d'un fichier et toutes les
  14.  * entrées dont la taille est ffffffff qu'il faut reformatter.
  15.  *
  16.  * Notez aussi que la manip prend moins de 2 minutes avec un fichier de
  17.  * 4500 lignes sur un 68030 (jusqu'à 3 mn si vos fichiers sont sur une
  18.  * partition auto-compressée).
  19.  */
  20.  
  21. OPTIONS RESULTS
  22.  
  23. /* Chargement de DICEHelp.index */
  24. Say "Chargement du fichier..."
  25. File2NewWin "NOWINDOW s:DICEHelp.index"
  26. port = RESULT
  27. ADDRESS VALUE port
  28. Say 'OK. Port "'port'"'
  29.  
  30. /* Réglage des préférences */
  31. Say "Modif préférences..."
  32. SetPrefs 'TabLen 1'
  33. SetPrefs 'Tab2Space OFF'
  34. SetPrefs 'Space2Tab OFF'
  35. SetPrefs 'DoAutoSave OFF'
  36.  
  37. /* Et on le recharge ! */
  38. Say "Rechargement du fichier..."
  39. File2Win CLEAR SAME NOCURS
  40.  
  41. /* Recherche du premier */
  42. Cursor OFFSET 0
  43.  
  44. DO FOREVER
  45.  
  46.     GETLINE
  47.     line = RESULT
  48.     if line = "" THEN BREAK
  49.  
  50.     if SUBSTR(line, 1, 1) = "~" THEN DO
  51.         /* on récupère le nom du fichier et sa taille */
  52.         GETPOS 'LINE' ; curl = RESULT
  53.         filename = SUBSTR(line, 2)
  54.         SAY RIGHT(curl,4,'0')||":" filename"..."
  55.         OPEN( 'temp', filename, 'READ' )
  56.         filelen = SEEK( 'temp', 0, 'END' )
  57.         CLOSE( 'temp' )
  58.         END
  59.     ELSE DO
  60.         f = 0
  61.         /* Ligne normale */
  62.         /* y'a deux tabs ? */
  63.         PARSE VAR line fnct '09'x offset '09'x taille
  64.         if offset = "" | taille = "" THEN DO
  65.             PARSE VAR line fnct offset taille
  66.             f = 1
  67.             END
  68.         offset = STRIP(offset)
  69.         taille = STRIP(taille)
  70.         IF taille == 'ffffffff' THEN DO                 /* Recalcul de la taille ! */
  71.             taille = D2X( filelen - X2D(offset) )
  72.             f = 1
  73.             END
  74.         IF f = 1 THEN DO
  75.             SAY "< "line
  76.             SAY "> "fnct||'09'x||offset||'09'x||taille
  77.             DEL LINES
  78.             TEXT2WIN "CONVERT NOCURS TEXT" fnct || "\t" || offset || "\t" || taille || "\n"
  79.             END
  80.         END
  81.     CURSOR "CLEAR REL +1"
  82.     If RC > 0 THEN BREAK
  83. END
  84.  
  85. /* On sauve */
  86. ADDRESS COMMAND "Rename s:DICEHelp.index s:DICEHelp.index.old"
  87. Win2File NI SAME
  88.  
  89. WinClose
  90.  
  91. SAY "T-E-R-M-I-N-E !"
  92. SAY "Backup du fichier original: s:DICEHelp.index.old"
  93.