<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nsis.sourceforge.io/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Enumerate_INI</id>
	<title>Enumerate INI - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nsis.sourceforge.io/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Enumerate_INI"/>
	<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;action=history"/>
	<updated>2026-06-02T11:36:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=21600&amp;oldid=prev</id>
		<title>Zinthose: /* EnumIni.nsh */  zenpoy Patch for zero length file infinite loop issue</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=21600&amp;oldid=prev"/>
		<updated>2012-01-11T19:21:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;EnumIni.nsh: &lt;/span&gt;  zenpoy Patch for zero length file infinite loop issue&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:21, 11 January 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot;&gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @FILENAME   = EnumIni.nsh&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @FILENAME   = EnumIni.nsh&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    @VERSION    = 1.0.0.0&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @AUTHORS    = Zinthose, Iceman_K&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @AUTHORS    = Zinthose, Iceman_K&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    @REVISIONS  = zenpoy[http://forums.winamp.com/member.php?u=401997]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @URL        = http://nsis.sourceforge.net/mediawiki/index.php?title=Enumerate_INI&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @URL        = http://nsis.sourceforge.net/mediawiki/index.php?title=Enumerate_INI&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*/&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*/&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l130&quot;&gt;Line 130:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 130:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             Pop $R1 ; ${_Index}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             Pop $R1 ; ${_Index}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             Pop $R0 ; ${_IniFilePath}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             Pop $R0 ; ${_IniFilePath}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;            &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             IfFileExists $R0 0 Else_IfFileExists_${EnumIniKey_UID}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             IfFileExists $R0 0 Else_IfFileExists_${EnumIniKey_UID}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 StrCpy $EnumIni_IDX_VAR -1  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 StrCpy $EnumIni_IDX_VAR -1  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                ## PATCH Added to Correct 0 length file infinite loop issue discovered by zenpoy&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                ## [http://forums.winamp.com/member.php?u=401997] on January 9th 2012&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                    ${LineSum} $R0 $R1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                    IfErrors Else_IfFileExists_${EnumINIKey_UID}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                    IntCmp $R1 0 Else_IfFileExists_${EnumINIKey_UID} Else_IfFileExists_${EnumINIKey_UID} 0&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                ## End Revision&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 ${LineFind} $R0 &amp;quot;/NUL&amp;quot; &amp;quot;1:-1&amp;quot; &amp;quot;EnumIniKey_CALLBACK&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 ${LineFind} $R0 &amp;quot;/NUL&amp;quot; &amp;quot;1:-1&amp;quot; &amp;quot;EnumIniKey_CALLBACK&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 IfErrors Else_IfFileExists_${EnumIniKey_UID}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 IfErrors Else_IfFileExists_${EnumIniKey_UID}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18037:rev-21600 --&gt;
&lt;/table&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18037&amp;oldid=prev</id>
		<title>Zinthose: /* EnumIni.nsh */</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18037&amp;oldid=prev"/>
		<updated>2010-01-19T03:48:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;EnumIni.nsh&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:48, 19 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== EnumIni.nsh ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== EnumIni.nsh ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/del&gt;Latest Stable Release: [[media:EnumIni.nsh|EnumIni.nsh]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;Latest Stable Release: [[media:EnumIni.nsh|EnumIni.nsh]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @FILENAME   = EnumIni.nsh&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @FILENAME   = EnumIni.nsh&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18036:rev-18037 --&gt;
&lt;/table&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18036&amp;oldid=prev</id>
		<title>Zinthose: /* EnumIni.nsh */  Added Downlaodable Link to Latest Stable Release</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18036&amp;oldid=prev"/>
		<updated>2010-01-19T03:47:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;EnumIni.nsh: &lt;/span&gt;  Added Downlaodable Link to Latest Stable Release&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:47, 19 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== EnumIni.nsh ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== EnumIni.nsh ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Latest Stable Release: [[media:EnumIni.nsh|EnumIni.nsh]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @FILENAME   = EnumIni.nsh&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     @FILENAME   = EnumIni.nsh&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18033:rev-18036 --&gt;
&lt;/table&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18033&amp;oldid=prev</id>
		<title>Zinthose: Added to category and added AuthorTag</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18033&amp;oldid=prev"/>
		<updated>2010-01-19T03:34:50Z</updated>

		<summary type="html">&lt;p&gt;Added to category and added AuthorTag&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:34, 19 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{PageAuthor|Zinthose}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Summary ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Summary ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Set of macros to enumerate an INI file using syntax similar to the [http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.2.5 EnumRegKey] and [http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.2.6 EnumRegValue] commands.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Set of macros to enumerate an INI file using syntax similar to the [http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.2.5 EnumRegKey] and [http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.2.6 EnumRegValue] commands.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l264&quot;&gt;Line 264:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 265:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== TODO ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== TODO ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* OPTIMIZE: Store current INI file line per index to prevent rescanning previously scanned lines.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* OPTIMIZE: Store current INI file line per index to prevent rescanning previously scanned lines.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:INI, CSV &amp;amp; Registry Functions]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18031:rev-18033 --&gt;
&lt;/table&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18031&amp;oldid=prev</id>
		<title>Zinthose: Added `TODO` Section</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18031&amp;oldid=prev"/>
		<updated>2010-01-19T03:17:00Z</updated>

		<summary type="html">&lt;p&gt;Added `TODO` Section&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:17, 19 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l261&quot;&gt;Line 261:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 261:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     !endif&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     !endif&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!endif&amp;lt;/highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!endif&amp;lt;/highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== TODO ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* OPTIMIZE: Store current INI file line per index to prevent rescanning previously scanned lines.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18030:rev-18031 --&gt;
&lt;/table&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18030&amp;oldid=prev</id>
		<title>Zinthose: Initial Release</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Enumerate_INI&amp;diff=18030&amp;oldid=prev"/>
		<updated>2010-01-19T03:14:21Z</updated>

		<summary type="html">&lt;p&gt;Initial Release&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
Set of macros to enumerate an INI file using syntax similar to the [http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.2.5 EnumRegKey] and [http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.2.6 EnumRegValue] commands.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;!include &amp;quot;EnumIni.nsh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Example: EnumIniKey&amp;quot;&lt;br /&gt;
    StrCpy $0 0&lt;br /&gt;
    loop:&lt;br /&gt;
        ${EnumIniKey} $1 `c:\boot.ini` $0&lt;br /&gt;
        StrCmp $1 &amp;quot;&amp;quot; done&lt;br /&gt;
        IntOp $0 $0 + 1&lt;br /&gt;
        ReadIniStr $2 `c:\boot.ini` `boot loader` $1&lt;br /&gt;
        MessageBox MB_YESNO|MB_ICONQUESTION &amp;quot;Name=$1$\n$\n$\nMore?&amp;quot; IDYES loop&lt;br /&gt;
    done:&lt;br /&gt;
SectionEnd&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Example: EnumIniValue&amp;quot;&lt;br /&gt;
    StrCpy $0 0&lt;br /&gt;
    loop:&lt;br /&gt;
        ${EnumIniValue} $1 `c:\boot.ini` `boot loader` $0&lt;br /&gt;
        StrCmp $1 &amp;quot;&amp;quot; done&lt;br /&gt;
        IntOp $0 $0 + 1&lt;br /&gt;
        ReadIniStr $2 `c:\boot.ini` `boot loader` $1&lt;br /&gt;
        MessageBox MB_YESNO|MB_ICONQUESTION &amp;quot;Name=$1$\nValue=$2$\n$\n$\nMore?&amp;quot; IDYES loop&lt;br /&gt;
    done:&lt;br /&gt;
SectionEnd&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== EnumIni.nsh ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;/*&lt;br /&gt;
    @FILENAME   = EnumIni.nsh&lt;br /&gt;
    @VERSION    = 1.0.0.0&lt;br /&gt;
    @AUTHORS    = Zinthose, Iceman_K&lt;br /&gt;
    @URL        = http://nsis.sourceforge.net/mediawiki/index.php?title=Enumerate_INI&lt;br /&gt;
*/&lt;br /&gt;
!ifndef __EnumIni__&lt;br /&gt;
!define __EnumIni__&lt;br /&gt;
&lt;br /&gt;
    ## Includes&lt;br /&gt;
        !include &amp;quot;TextFunc.nsh&amp;quot;&lt;br /&gt;
        !ifndef StrLoc&lt;br /&gt;
            !include &amp;quot;StrFunc.nsh&amp;quot;&lt;br /&gt;
            ${StrLoc}&lt;br /&gt;
        !endif&lt;br /&gt;
    &lt;br /&gt;
    ## Macro to remove leading and trailing whitespaces from a string.&lt;br /&gt;
    ## Derived from the function originaly posted by Iceman_K at: &lt;br /&gt;
    ##  http://nsis.sourceforge.net/Remove_leading_and_trailing_whitespaces_from_a_string&lt;br /&gt;
        !ifmacrondef _Trim&lt;br /&gt;
            !macro _Trim _UserVar _OriginalString&lt;br /&gt;
                !define Trim_UID ${__LINE__}&lt;br /&gt;
                &lt;br /&gt;
                Push $R1&lt;br /&gt;
                Push $R2&lt;br /&gt;
                Push `${_OriginalString}`&lt;br /&gt;
                Pop $R1&lt;br /&gt;
                &lt;br /&gt;
                Loop_${Trim_UID}:&lt;br /&gt;
                    StrCpy $R2 &amp;quot;$R1&amp;quot; 1&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot; &amp;quot; TrimLeft_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\r&amp;quot; TrimLeft_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\n&amp;quot; TrimLeft_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\t&amp;quot; TrimLeft_${Trim_UID}&lt;br /&gt;
                    GoTo Loop2_${Trim_UID}&lt;br /&gt;
                TrimLeft_${Trim_UID}:   &lt;br /&gt;
                    StrCpy $R1 &amp;quot;$R1&amp;quot; &amp;quot;&amp;quot; 1&lt;br /&gt;
                    Goto Loop_${Trim_UID}&lt;br /&gt;
             &lt;br /&gt;
                Loop2_${Trim_UID}:&lt;br /&gt;
                    StrCpy $R2 &amp;quot;$R1&amp;quot; 1 -1&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot; &amp;quot; TrimRight_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\r&amp;quot; TrimRight_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\n&amp;quot; TrimRight_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\t&amp;quot; TrimRight_${Trim_UID}&lt;br /&gt;
                    GoTo Done_${Trim_UID}&lt;br /&gt;
                TrimRight_${Trim_UID}:  &lt;br /&gt;
                    StrCpy $R1 &amp;quot;$R1&amp;quot; -1&lt;br /&gt;
                    Goto Loop2_${Trim_UID}&lt;br /&gt;
                 &lt;br /&gt;
                Done_${Trim_UID}:&lt;br /&gt;
                    Pop $R2&lt;br /&gt;
                    Exch $R1&lt;br /&gt;
                    Pop ${_UserVar}&lt;br /&gt;
                !undef Trim_UID&lt;br /&gt;
            !macroend&lt;br /&gt;
            !ifdef Trim&lt;br /&gt;
                !warning `Trim Macro Previously Defined! Beware of bugs!`&lt;br /&gt;
            !else&lt;br /&gt;
                !define Trim `!insertmacro _Trim`&lt;br /&gt;
            !endif&lt;br /&gt;
        !endif&lt;br /&gt;
    &lt;br /&gt;
    ## Global variable needed for indexing the enumerations&lt;br /&gt;
        !ifmacrondef EnumIni_IDX_VAR&lt;br /&gt;
            !macro EnumIni_IDX_VAR&lt;br /&gt;
                !ifndef EnumIni_IDX_VAR&lt;br /&gt;
                    VAR /GLOBAL EnumIni_IDX_VAR&lt;br /&gt;
                    !define EnumIni_IDX_VAR $EnumIni_IDX_VAR&lt;br /&gt;
                !endif&lt;br /&gt;
            !macroend &lt;br /&gt;
        !endif&lt;br /&gt;
        &lt;br /&gt;
    /*  ## EnumIniKey ##&lt;br /&gt;
            Nearly identical in use to the builtin EnumRegKey function, the EnumIniKey macro &lt;br /&gt;
            allows for enumeration of an existing ini file&amp;#039;s sections.&lt;br /&gt;
        &lt;br /&gt;
        ## Example ##&lt;br /&gt;
            StrCpy $0 0&lt;br /&gt;
            loop:&lt;br /&gt;
                ${EnumIniKey} $1 `c:\boot.ini` $0&lt;br /&gt;
                StrCmp $1 &amp;quot;&amp;quot; done&lt;br /&gt;
                IntOp $0 $0 + 1&lt;br /&gt;
                MessageBox MB_YESNO|MB_ICONQUESTION &amp;quot;Key=$1$\n$\n$\nMore?&amp;quot; IDYES loop&lt;br /&gt;
            done:&lt;br /&gt;
    */&lt;br /&gt;
    !ifmacrondef _EnumIniKey&lt;br /&gt;
        !insertmacro EnumIni_IDX_VAR&lt;br /&gt;
        !macro _EnumIniKey _UserVar _IniFilePath _Index&lt;br /&gt;
            !define EnumIniKey_UID ${__LINE__}&lt;br /&gt;
            ClearErrors&lt;br /&gt;
            &lt;br /&gt;
            Push $R0&lt;br /&gt;
            Push $R1&lt;br /&gt;
            &lt;br /&gt;
            Push `${_IniFilePath}`&lt;br /&gt;
            Push `${_Index}`&lt;br /&gt;
            &lt;br /&gt;
            Pop $R1 ; ${_Index}&lt;br /&gt;
            Pop $R0 ; ${_IniFilePath}&lt;br /&gt;
            &lt;br /&gt;
            IfFileExists $R0 0 Else_IfFileExists_${EnumIniKey_UID}&lt;br /&gt;
                StrCpy $EnumIni_IDX_VAR -1 &lt;br /&gt;
                ${LineFind} $R0 &amp;quot;/NUL&amp;quot; &amp;quot;1:-1&amp;quot; &amp;quot;EnumIniKey_CALLBACK&amp;quot;&lt;br /&gt;
                IfErrors Else_IfFileExists_${EnumIniKey_UID}&lt;br /&gt;
                Goto EndIf_FileExists_${EnumIniKey_UID}&lt;br /&gt;
            Else_IfFileExists_${EnumIniKey_UID}:&lt;br /&gt;
                StrCpy $R0 &amp;#039;&amp;#039;&lt;br /&gt;
                SetErrors&lt;br /&gt;
            EndIf_FileExists_${EnumIniKey_UID}:&lt;br /&gt;
    &lt;br /&gt;
            Pop $R1&lt;br /&gt;
            Exch $R0&lt;br /&gt;
            Pop ${_UserVar}&lt;br /&gt;
            &lt;br /&gt;
            !undef EnumIniKey_UID&lt;br /&gt;
        !macroend&lt;br /&gt;
        !ifndef EnumIniKey&lt;br /&gt;
            !define EnumIniKey `!insertmacro _EnumIniKey`&lt;br /&gt;
        !endif&lt;br /&gt;
        !ifdef __GLOBAL__&lt;br /&gt;
            !verbose push&lt;br /&gt;
            !verbose 0&lt;br /&gt;
            Function EnumIniKey_CALLBACK&lt;br /&gt;
                !insertmacro _Trim $R9 $R9&lt;br /&gt;
                &lt;br /&gt;
                StrCmp $R9 &amp;#039;&amp;#039; End&lt;br /&gt;
                StrCpy $R0 $R9 1&lt;br /&gt;
                StrCmp $R0 &amp;#039;[&amp;#039; 0 End&lt;br /&gt;
                IntOp $EnumIni_IDX_VAR $EnumIni_IDX_VAR + 1&lt;br /&gt;
                IntCmp $R1 $EnumIni_IDX_VAR 0 End End&lt;br /&gt;
                    ${StrLoc} $R0 $R9 &amp;quot;]&amp;quot; &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
                    IntCmp $R0 0 End&lt;br /&gt;
                    IntOp $R0 $R0 - 1&lt;br /&gt;
                    StrCpy $R0 $R9 $R0 1&lt;br /&gt;
                    Push &amp;#039;StopLineFind&amp;#039;&lt;br /&gt;
                    Return&lt;br /&gt;
                End:&lt;br /&gt;
                StrCpy $R0 &amp;#039;&amp;#039;&lt;br /&gt;
                Push &amp;#039;&amp;#039; &lt;br /&gt;
            FunctionEnd&lt;br /&gt;
            !verbose pop&lt;br /&gt;
        !else&lt;br /&gt;
            !Error `An illegal attempt was made to insert the EnumIniValue_CALLBACK function outside the Global namespace!`&lt;br /&gt;
        !endif&lt;br /&gt;
    !endif&lt;br /&gt;
    &lt;br /&gt;
    /*  ## EnumIniValue ##&lt;br /&gt;
            Nearly identical in use to the builtin EnumRegValue function, the EnumIniValue macro &lt;br /&gt;
            allows for enumeration of an existing ini file section.&lt;br /&gt;
        &lt;br /&gt;
        ## Example ##&lt;br /&gt;
            StrCpy $0 0&lt;br /&gt;
            loop:&lt;br /&gt;
                ${EnumIniValue} $1 `c:\boot.ini` `boot loader` $0&lt;br /&gt;
                StrCmp $1 &amp;quot;&amp;quot; done&lt;br /&gt;
                IntOp $0 $0 + 1&lt;br /&gt;
                ReadIniStr $2 `c:\boot.ini` `boot loader` $1&lt;br /&gt;
                MessageBox MB_YESNO|MB_ICONQUESTION &amp;quot;Value=$1$\n$\t$2$\n$\n$\nMore?&amp;quot; IDYES loop&lt;br /&gt;
            done:&lt;br /&gt;
    */&lt;br /&gt;
    !ifmacrondef _EnumIniValue&lt;br /&gt;
        !insertmacro EnumIni_IDX_VAR&lt;br /&gt;
        !macro _EnumIniValue _UserVar _IniFilePath _Section _Index&lt;br /&gt;
            !define EnumIniValue_UID ${__LINE__}&lt;br /&gt;
            ClearErrors&lt;br /&gt;
            &lt;br /&gt;
            Push $R0&lt;br /&gt;
            Push $R1&lt;br /&gt;
            Push $R2&lt;br /&gt;
            Push $R3&lt;br /&gt;
    &lt;br /&gt;
            Push `${_IniFilePath}`&lt;br /&gt;
            Push `${_Section}`&lt;br /&gt;
            Push `${_Index}`&lt;br /&gt;
                &lt;br /&gt;
            Pop $R2 ; ${_Index}&lt;br /&gt;
            Pop $R1 ; ${_Section}&lt;br /&gt;
            Pop $R0 ; ${_IniFilePath}&lt;br /&gt;
    &lt;br /&gt;
            IfFileExists $R0 0 Else_IfFileExists_${EnumIniValue_UID}&lt;br /&gt;
                StrCpy $EnumIni_IDX_VAR -1 &lt;br /&gt;
                ${LineFind} $R0 &amp;quot;/NUL&amp;quot; &amp;quot;1:-1&amp;quot; &amp;quot;EnumIniValue_CALLBACK&amp;quot;&lt;br /&gt;
                IfErrors Else_IfFileExists_${EnumIniValue_UID}&lt;br /&gt;
                Goto EndIf_FileExists_${EnumIniValue_UID}&lt;br /&gt;
            Else_IfFileExists_${EnumIniValue_UID}:&lt;br /&gt;
                StrCpy $R0 &amp;#039;&amp;#039;&lt;br /&gt;
                SetErrors&lt;br /&gt;
            EndIf_FileExists_${EnumIniValue_UID}:&lt;br /&gt;
    &lt;br /&gt;
            Pop $R3&lt;br /&gt;
            Pop $R2&lt;br /&gt;
            Pop $R1&lt;br /&gt;
            Exch $R0&lt;br /&gt;
            Pop ${_UserVar}&lt;br /&gt;
            !undef EnumIniValue_UID&lt;br /&gt;
        !macroend&lt;br /&gt;
        !ifndef EnumIniValue&lt;br /&gt;
            !define EnumIniValue `!insertmacro _EnumIniValue`&lt;br /&gt;
        !endif&lt;br /&gt;
        !ifdef __GLOBAL__&lt;br /&gt;
            !verbose push&lt;br /&gt;
            !verbose 0&lt;br /&gt;
            Function EnumIniValue_CALLBACK&lt;br /&gt;
                !insertmacro _Trim $R9 $R9&lt;br /&gt;
                &lt;br /&gt;
                StrCmp $R9 &amp;#039;&amp;#039; End&lt;br /&gt;
                StrCpy $R0 $R9 1&lt;br /&gt;
                StrCmp $R0 &amp;#039;;&amp;#039; End&lt;br /&gt;
                StrCmp $R0 &amp;#039;#&amp;#039; End&lt;br /&gt;
                StrCmp $R0 &amp;#039;[&amp;#039; Key&lt;br /&gt;
                StrCmp $R3 [$R1] 0 End&lt;br /&gt;
                IntOp $EnumIni_IDX_VAR $EnumIni_IDX_VAR + 1&lt;br /&gt;
                IntCmp $R2 $EnumIni_IDX_VAR 0 End End&lt;br /&gt;
                    ${StrLoc} $R0 $R9 &amp;quot;=&amp;quot; &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
                    IntCmp $R0 0 0 0 ValueSet&lt;br /&gt;
                        StrCpy $R0 $R9&lt;br /&gt;
                    ValueSet:&lt;br /&gt;
                    StrCpy $R0 $R9 $R0&lt;br /&gt;
                    Push &amp;#039;StopLineFind&amp;#039;&lt;br /&gt;
                    Return&lt;br /&gt;
                Key:&lt;br /&gt;
                    StrCpy $R3 $R9&lt;br /&gt;
                End:&lt;br /&gt;
                StrCpy $R0 &amp;#039;&amp;#039;&lt;br /&gt;
                Push &amp;#039;&amp;#039; &lt;br /&gt;
            FunctionEnd&lt;br /&gt;
            !verbose pop&lt;br /&gt;
        !else&lt;br /&gt;
            !Error `An illegal attempt was made to insert the EnumIniValue_CALLBACK function outside the Global namespace!`&lt;br /&gt;
        !endif&lt;br /&gt;
    !endif&lt;br /&gt;
!endif&amp;lt;/highlight-nsis&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
</feed>