home *** CD-ROM | disk | FTP | other *** search
/ Freelog 115 / FreelogNo115-MaiJuin2013.iso / Internet / Firefox / FirefoxPortable_20.0_French.paf.exe / Other / Source / ReplaceInFileWithTextReplace.nsh < prev    next >
Text File  |  2010-06-22  |  2KB  |  64 lines

  1. ∩╗┐; ReplaceInFile wrapper for testreplace function
  2. ; John T. Haller of PortableApps.com
  3. ; BSD License
  4. ; Requires TextReplace plugin installed in NSIS and !include "TextReplace.nsh" in main nsi
  5. ;
  6. ; Usage: ${ReplaceInFile} SOURCE_FILE SEARCH_TEXT REPLACEMENT
  7. ; or use ReplaceInFileCS for case-sensitive (use when possible, it's faster)
  8. ; No return variable.  Error will be set if unable to do the replacement (invalid file, locked file, etc)
  9.  
  10. Function ReplaceInFile
  11.     Exch $0 ;REPLACEMENT
  12.     Exch
  13.     Exch $1 ;SEARCH_TEXT
  14.     Exch 2
  15.     Exch $2 ;SOURCE_FILE
  16.     Exch 3
  17.     Exch $3 ;CASE_INSENSITIVE
  18.     Push $4 ;NEW_FILE
  19.     Push $5 ;RETURN_VALUE
  20.     
  21.     StrCpy $4 `$2.OldReplaceInFile`
  22.     
  23.     ${textreplace::ReplaceInFile} "$2" "$4" "$1" "$0" "$3 /C=0" $5
  24.     
  25.     IntCmp $5 0 StackCleanup ReturnError RenameToOriginal
  26.     
  27.     ReturnError:
  28.         SetErrors
  29.         Goto StackCleanup
  30.     
  31.     RenameToOriginal:
  32.         Delete $2
  33.         Rename $4 $2
  34.     
  35.     StackCleanup:
  36.         Pop $5
  37.         Pop $4
  38.         Pop $3
  39.         Pop $0
  40.         Pop $1
  41.         Pop $2
  42.  
  43.         ${textreplace::Unload}
  44. FunctionEnd
  45.  
  46. !macro ReplaceInFileCS SOURCE_FILE SEARCH_TEXT REPLACEMENT
  47.     Push `/S=1`
  48.     Push `${SOURCE_FILE}`
  49.     Push `${SEARCH_TEXT}`
  50.     Push `${REPLACEMENT}`
  51.     Call ReplaceInFile
  52. !macroend
  53.  
  54. !macro ReplaceInFile SOURCE_FILE SEARCH_TEXT REPLACEMENT
  55.     Push `/S=0`
  56.     Push `${SOURCE_FILE}`
  57.     Push `${SEARCH_TEXT}`
  58.     Push `${REPLACEMENT}`
  59.     Call ReplaceInFile
  60. !macroend
  61.  
  62. !define ReplaceInFileCS '!insertmacro "ReplaceInFileCS"'
  63.  
  64. !define ReplaceInFile '!insertmacro "ReplaceInFile"'