Advertisement
Guest User

Untitled

a guest
Mar 26th, 2010
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Var _FEIP_FileHandle
  2. Var _FEIP_Line
  3. Var _FEIP_LineLength
  4. Var _FEIP_CharNum
  5. Var _FEIP_Char
  6. !ifdef NSIS_UNICODE
  7. Var _FEIP_Bom
  8. !endif
  9.  
  10. !macro ForEachINIPair SECTION KEY VALUE
  11.     !ifdef _ForEachINIPair_Open
  12.         !error "There is already a ForEachINIPair clause open!"
  13.     !endif
  14.     !define _ForEachINIPair_Open
  15.     ${If} $_FEIP_FileHandle == ""
  16. !ifdef NSIS_UNICODE
  17.         FileOpen $_FEIP_FileHandle '$LauncherFile' r
  18.         FileReadWord $_FEIP_FileHandle $_FEIP_Line
  19.         FileClose $_FEIP_FileHandle
  20.         StrCpy $_FEIP_FileHandle ""
  21.         StrCpy $_FEIP_Bom 0
  22.         ${IfThen} $_FEIP_Line = 0xfeff ${|} StrCpy $_FEIP_Bom 1 ${|}
  23. !endif
  24.         FileOpen $_FEIP_FileHandle $LauncherFile r
  25.  
  26.     ${Else}
  27.         FileSeek $_FEIP_FileHandle 0
  28.     ${EndIf}
  29.     ${Do}
  30.         ClearErrors
  31. !ifdef NSIS_UNICODE
  32.         ${if} $_FEIP_Bom = 1
  33.             FileReadUTF16LE $_FEIP_FileHandle $_FEIP_Line
  34.         ${Else}
  35. !endif
  36.             FileRead $_FEIP_FileHandle $_FEIP_Line
  37. !ifdef NSIS_UNICODE
  38.         ${EndIf}
  39. !endif
  40.         ${TrimNewLines} $_FEIP_Line $_FEIP_Line
  41.         ${If} ${Errors} ; end of file
  42.         ${OrIf} $_FEIP_Line == "[${SECTION}]" ; right section
  43.             ${ExitDo}
  44.         ${EndIf}
  45.     ${Loop}
  46.  
  47.     ${IfNot} ${Errors} ; right section
  48.         ${Do}
  49. !ifdef NSIS_UNICODE
  50.             ${if} $_FEIP_Bom = 1
  51.                 FileReadUTF16LE $_FEIP_FileHandle $_FEIP_Line
  52.             ${Else}
  53. !endif
  54.                 FileRead $_FEIP_FileHandle $_FEIP_Line
  55. !ifdef NSIS_UNICODE
  56.             ${EndIf}
  57. !endif
  58.  
  59.             StrCpy $_FEIP_LineLength $_FEIP_Line 1
  60.             ${If} ${Errors} ; end of file
  61.             ${OrIf} $_FEIP_LineLength == '[' ; new section
  62.                 ${ExitDo} ; finished
  63.             ${EndIf}
  64.  
  65.             ${If} $_FEIP_LineLength == ';' ; a comment line
  66.                 ${Continue}
  67.             ${EndIf}
  68.  
  69.             StrLen $_FEIP_LineLength $_FEIP_Line
  70.             StrCpy $_FEIP_CharNum '0'
  71.             ${Do}
  72.                 StrCpy $_FEIP_Char $_FEIP_Line 1 $_FEIP_CharNum
  73.                 ${IfThen} $_FEIP_Char == '=' ${|} ${ExitDo} ${|}
  74.                 IntOp $_FEIP_CharNum $_FEIP_CharNum + 1
  75.             ${LoopUntil} $_FEIP_CharNum > $_FEIP_LineLength
  76.  
  77.             ${TrimNewLines} $_FEIP_Line $_FEIP_Line
  78.  
  79.             ${If} $_FEIP_Char == '='
  80.                 StrCpy ${KEY} $_FEIP_Line $_FEIP_CharNum
  81.                 IntOp $_FEIP_CharNum $_FEIP_CharNum + 1
  82.                 StrCpy ${VALUE} $_FEIP_Line "" $_FEIP_CharNum
  83. !macroend
  84.  
  85. !macro NextINIPair
  86.     !ifndef _ForEachINIPair_Open
  87.         !error "There isn't a ForEachINIPair clause open!"
  88.     !endif
  89.     !undef _ForEachINIPair_Open
  90.             ${EndIf}
  91.         ${Loop}
  92.     ${EndIf}
  93.     ;FileClose $_FEIP_FileHandle
  94. !macroend
  95.  
  96. !define ForEachINIPair '!insertmacro ForEachINIPair'
  97. !define NextINIPair '!insertmacro NextINIPair'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement