<!DOCTYPE html>
<html lang='en'>
<head>
<title>ikiwiki-upstream - Unnamed repository; edit this file to name it for gitweb.</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit-css/cgit.css'/>
<link rel='stylesheet' type='text/css' href='/cgit-local/local.css'/>
<script type='text/javascript' src='/cgit.js'></script>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://source.jones.dk/ikiwiki-upstream/atom/doc/bugs?h=master' type='application/atom+xml'/>
<link rel='vcs-git' href='https://source.jones.dk/ikiwiki-upstream' title='ikiwiki-upstream Git repository'/>
<link rel='vcs-git' href='user@source.jones.dk:ikiwiki-upstream' title='ikiwiki-upstream Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='/cgit-css/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a href='/ikiwiki-upstream/'>ikiwiki-upstream</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='8de7fde49c295a6c9098767b9fdfea79de8476eb'/><select name='h' onchange='this.form.submit();'>
<option value='layoutgala'>layoutgala</option>
<option value='master' selected='selected'>master</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Unnamed repository; edit this file to name it for gitweb.</td><td class='sub right'>Jonas Smedegaard</td></tr></table>
<table class='tabs'><tr><td>
<a href='/ikiwiki-upstream/'>summary</a><a href='/ikiwiki-upstream/refs/?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>refs</a><a href='/ikiwiki-upstream/log/doc/bugs'>log</a><a href='/ikiwiki-upstream/tree/doc/bugs?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>tree</a><a href='/ikiwiki-upstream/commit/doc/bugs?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>commit</a><a class='active' href='/ikiwiki-upstream/diff/doc/bugs?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>diff</a></td><td class='form'><form class='right' method='get' action='/ikiwiki-upstream/log/doc/bugs'>
<input type='hidden' name='id' value='8de7fde49c295a6c9098767b9fdfea79de8476eb'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/ikiwiki-upstream/diff/?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>root</a>/<a href='/ikiwiki-upstream/diff/doc?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>doc</a>/<a href='/ikiwiki-upstream/diff/doc/bugs?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>bugs</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='id' value='8de7fde49c295a6c9098767b9fdfea79de8476eb'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><div class='diffstat-header'><a href='/ikiwiki-upstream/diff/?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>Diffstat</a> (limited to 'doc/bugs')</div><table summary='diffstat' class='diffstat'><tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ikiwiki-upstream/diff/doc/bugs/argument_isn__39__t_numeric:_mixing_templates_and_creation__95__date.mdwn?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>doc/bugs/argument_isn__39__t_numeric:_mixing_templates_and_creation__95__date.mdwn</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='3%'><tr><td class='add' style='width: 100.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 0.0%;'/></tr></table></td></tr>
</table><div class='diffstat-summary'>1 files changed, 3 insertions, 0 deletions</div><table summary='diff' class='diff'><tr><td><div class='head'>diff --git a/doc/bugs/argument_isn__39__t_numeric:_mixing_templates_and_creation__95__date.mdwn b/doc/bugs/argument_isn__39__t_numeric:_mixing_templates_and_creation__95__date.mdwn<br/>index 83093895b..b1053fc38 100644<br/>--- a/<a href='/ikiwiki-upstream/tree/doc/bugs/argument_isn__39__t_numeric:_mixing_templates_and_creation__95__date.mdwn?id=9a7387a53be2b1e182003f3e86cb76d7f10c4b67'>doc/bugs/argument_isn__39__t_numeric:_mixing_templates_and_creation__95__date.mdwn</a><br/>+++ b/<a href='/ikiwiki-upstream/tree/doc/bugs/argument_isn__39__t_numeric:_mixing_templates_and_creation__95__date.mdwn?id=8de7fde49c295a6c9098767b9fdfea79de8476eb'>doc/bugs/argument_isn__39__t_numeric:_mixing_templates_and_creation__95__date.mdwn</a></div><div class='hunk'>@@ -55,3 +55,6 @@ I believed (until I tested) that the [[ikiwiki/directive/if]] directive, with th</div><div class='ctx'>     """]]</div><div class='ctx'> </div><div class='ctx'> However this doesn't work.  I assume "included" in this context means e.g. via an `inline` or `map`, not template trans-clusion. -- [[Jon]]</div><div class='add'>+</div><div class='add'>+&gt; As far as I know, this bug was fixed in</div><div class='add'>+&gt; 4a75dee651390b79ce4ceb1d951b02e28b3ce83a on October 20th. [[done]] --[[Joey]]</div></td></tr></table></div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.46.0</a>) at 2025-06-23 08:30:30 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
ot;;</span></li>
<li id="n_28" class="hl"><span class="hl sng">    {</span></li>
<li id="n_29" class="hl"><span class="hl sng">        int u=getuid();</span></li>
<li id="n_30" class="hl"><span class="hl sng">EOF</span></li>
<li id="n_31" class="hl">    <span class="hl kwb">$ret</span><span class="hl opt">.=</span><span class="hl sng">&quot;</span><span class="hl esc">\t\t</span><span class="hl sng">if ( &quot;</span><span class="hl opt">.</span></li>
<li id="n_32" class="hl">        <span class="hl kwc">join</span><span class="hl opt">(</span><span class="hl sng">&quot;&amp;&amp;&quot;</span><span class="hl opt">, </span><span class="hl kwc">map </span><span class="hl opt">{</span></li>
<li id="n_33" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$uid</span><span class="hl opt">=</span><span class="hl kwc">getpwnam</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">);</span></li>
<li id="n_34" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(! </span><span class="hl kwc">defined </span><span class="hl kwb">$uid</span><span class="hl opt">) {</span></li>
<li id="n_35" class="hl">                error<span class="hl opt">(</span><span class="hl kwc">sprintf</span><span class="hl opt">(</span>gettext<span class="hl opt">(</span><span class="hl sng">&quot;cannot determine id of untrusted committer </span><span class="hl ipl">%s</span><span class="hl sng">&quot;</span><span class="hl opt">), </span><span class="hl kwb">$_</span><span class="hl opt">));</span></li>
<li id="n_36" class="hl">            <span class="hl opt">}</span></li>
<li id="n_37" class="hl">            <span class="hl sng">&quot;u != </span><span class="hl ipl">$uid</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_38" class="hl">        <span class="hl opt">} &#64;{</span><span class="hl kwb">$config</span><span class="hl opt">{</span>untrusted_committers<span class="hl opt">}}).</span></li>
<li id="n_39" class="hl">        <span class="hl sng">&quot;) exit(0);</span><span class="hl esc">\n</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_40" class="hl">    <span class="hl kwb">$ret</span><span class="hl opt">.=</span><span class="hl sng">&lt;&lt;&quot;EOF&quot;;</span></li>
<li id="n_41" class="hl"><span class="hl sng">        asprintf(&amp;s, &quot;CALLER_UID=</span><span class="hl ipl">%i</span><span class="hl sng">&quot;, u);</span></li>
<li id="n_42" class="hl"><span class="hl sng">        newenviron[i++]=s;</span></li>
<li id="n_43" class="hl"><span class="hl sng">    }</span></li>
<li id="n_44" class="hl"><span class="hl sng">EOF</span></li>
<li id="n_45" class="hl">    <span class="hl kwa">return </span><span class="hl kwb">$ret</span><span class="hl opt">;</span></li>
<li id="n_46" class="hl"><span class="hl opt">}</span></li>
<li id="n_47" class="hl"></li>
<li id="n_48" class="hl"><span class="hl kwa">sub </span>test <span class="hl opt">() {</span></li>
<li id="n_49" class="hl">    <span class="hl kwa">exit </span><span class="hl num">0 </span><span class="hl kwa">if </span>trusted<span class="hl opt">();</span></li>
<li id="n_50" class="hl">    </li>
<li id="n_51" class="hl">    IkiWiki<span class="hl opt">::</span>lockwiki<span class="hl opt">();</span></li>
<li id="n_52" class="hl">    IkiWiki<span class="hl opt">::</span>loadindex<span class="hl opt">();</span></li>
<li id="n_53" class="hl">    </li>
<li id="n_54" class="hl">    <span class="hl slc"># Dummy up a cgi environment to use when calling check_canedit</span></li>
<li id="n_55" class="hl">    <span class="hl slc"># and friends.</span></li>
<li id="n_56" class="hl">    <span class="hl kwc">eval </span><span class="hl sng">q{use CGI}</span><span class="hl opt">;</span></li>
<li id="n_57" class="hl">    error<span class="hl opt">(</span><span class="hl kwb">$&#64;</span><span class="hl opt">) </span><span class="hl kwa">if </span><span class="hl kwb">$&#64;</span><span class="hl opt">;</span></li>
<li id="n_58" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$cgi</span><span class="hl opt">=</span>CGI-<span class="hl opt">&gt;</span><span class="hl kwd">new</span><span class="hl opt">;</span></li>
<li id="n_59" class="hl">    <span class="hl kwb">$ENV</span><span class="hl opt">{</span>REMOTE_ADDR<span class="hl opt">}=</span><span class="hl sng">&#39;unknown&#39;</span> <span class="hl kwa">unless </span><span class="hl kwc">exists </span><span class="hl kwb">$ENV</span><span class="hl opt">{</span>REMOTE_ADDR<span class="hl opt">};</span></li>
<li id="n_60" class="hl"></li>
<li id="n_61" class="hl">    <span class="hl slc"># And dummy up a session object.</span></li>
<li id="n_62" class="hl">    <span class="hl kwa">require </span>IkiWiki<span class="hl opt">::</span>CGI<span class="hl opt">;</span></li>
<li id="n_63" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$session</span><span class="hl opt">=</span>IkiWiki<span class="hl opt">::</span>cgi_getsession<span class="hl opt">(</span><span class="hl kwb">$cgi</span><span class="hl opt">);</span></li>
<li id="n_64" class="hl">    <span class="hl kwb">$session</span><span class="hl opt">-&gt;</span><span class="hl kwd">param</span><span class="hl opt">(</span><span class="hl sng">&quot;name&quot;</span><span class="hl opt">, </span>getuser<span class="hl opt">());</span></li>
<li id="n_65" class="hl">    <span class="hl slc"># Make sure whatever user was authed is in the</span></li>
<li id="n_66" class="hl">    <span class="hl slc"># userinfo db.</span></li>
<li id="n_67" class="hl">    <span class="hl kwa">require </span>IkiWiki<span class="hl opt">::</span>UserInfo<span class="hl opt">;</span></li>
<li id="n_68" class="hl">    <span class="hl kwa">if </span><span class="hl opt">(! </span>IkiWiki<span class="hl opt">::</span>userinfo_get<span class="hl opt">(</span><span class="hl kwb">$session</span><span class="hl opt">-&gt;</span><span class="hl kwd">param</span><span class="hl opt">(</span><span class="hl sng">&quot;name&quot;</span><span class="hl opt">), </span><span class="hl sng">&quot;regdate&quot;</span><span class="hl opt">)) {</span></li>
<li id="n_69" class="hl">        IkiWiki<span class="hl opt">::</span>userinfo_setall<span class="hl opt">(</span><span class="hl kwb">$session</span><span class="hl opt">-&gt;</span><span class="hl kwd">param</span><span class="hl opt">(</span><span class="hl sng">&quot;name&quot;</span><span class="hl opt">), {</span></li>
<li id="n_70" class="hl">            email <span class="hl opt">=&gt; </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">,</span></li>
<li id="n_71" class="hl">            password <span class="hl opt">=&gt; </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">,</span></li>
<li id="n_72" class="hl">            regdate <span class="hl opt">=&gt; </span><span class="hl kwc">time</span><span class="hl opt">,</span></li>
<li id="n_73" class="hl">        <span class="hl opt">}) || </span>error<span class="hl opt">(</span><span class="hl sng">&quot;failed adding user&quot;</span><span class="hl opt">);</span></li>
<li id="n_74" class="hl">    <span class="hl opt">}</span></li>
<li id="n_75" class="hl">    </li>
<li id="n_76" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%newfiles</span><span class="hl opt">;</span></li>
<li id="n_77" class="hl"></li>
<li id="n_78" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwc">my </span><span class="hl kwb">$change </span><span class="hl opt">(</span>IkiWiki<span class="hl opt">::</span>rcs_receive<span class="hl opt">()) {</span></li>
<li id="n_79" class="hl">        <span class="hl slc"># This untaint is safe because we check file_pruned and</span></li>
<li id="n_80" class="hl">        <span class="hl slc"># wiki_file_regexp.</span></li>
<li id="n_81" class="hl">        <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$file</span><span class="hl opt">)=</span><span class="hl kwb">$change</span><span class="hl opt">-&gt;{</span>file<span class="hl opt">}=~</span><span class="hl kwd">/$config{wiki_file_regexp}/</span><span class="hl opt">;</span></li>
<li id="n_82" class="hl">        <span class="hl kwb">$file</span><span class="hl opt">=</span>IkiWiki<span class="hl opt">::</span>possibly_foolish_untaint<span class="hl opt">(</span><span class="hl kwb">$file</span><span class="hl opt">);</span></li>
<li id="n_83" class="hl">        <span class="hl kwa">if </span><span class="hl opt">(! </span><span class="hl kwc">defined </span><span class="hl kwb">$file </span><span class="hl opt">|| ! </span><span class="hl kwc">length </span><span class="hl kwb">$file </span><span class="hl opt">||</span></li>
<li id="n_84" class="hl">            IkiWiki<span class="hl opt">::</span>file_pruned<span class="hl opt">(</span><span class="hl kwb">$file</span><span class="hl opt">, </span><span class="hl kwb">$config</span><span class="hl opt">{</span>srcdir<span class="hl opt">})) {</span></li>
<li id="n_85" class="hl">            error<span class="hl opt">(</span>gettext<span class="hl opt">(</span><span class="hl sng">&quot;bad file name </span><span class="hl ipl">%s</span><span class="hl sng">&quot;</span><span class="hl opt">), </span><span class="hl kwb">$file</span><span class="hl opt">);</span></li>
<li id="n_86" class="hl">        <span class="hl opt">}</span></li>
<li id="n_87" class="hl"></li>
<li id="n_88" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$type</span><span class="hl opt">=</span>pagetype<span class="hl opt">(</span><span class="hl kwb">$file</span><span class="hl opt">);</span></li>
<li id="n_89" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$page</span><span class="hl opt">=</span>pagename<span class="hl opt">(</span><span class="hl kwb">$file</span><span class="hl opt">) </span><span class="hl kwa">if </span><span class="hl kwc">defined </span><span class="hl kwb">$type</span><span class="hl opt">;</span></li>
<li id="n_90" class="hl">        </li>
<li id="n_91" class="hl">        <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$change</span><span class="hl opt">-&gt;{</span>action<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;add&#39;</span><span class="hl opt">) {</span></li>
<li id="n_92" class="hl">            <span class="hl kwb">$newfiles</span><span class="hl opt">{</span><span class="hl kwb">$file</span><span class="hl opt">}=</span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_93" class="hl">        <span class="hl opt">}</span></li>
<li id="n_94" class="hl"></li>
<li id="n_95" class="hl">        <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$change</span><span class="hl opt">-&gt;{</span>action<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;change&#39;</span> <span class="hl opt">||</span></li>
<li id="n_96" class="hl">            <span class="hl kwb">$change</span><span class="hl opt">-&gt;{</span>action<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;add&#39;</span><span class="hl opt">) {</span></li>
<li id="n_97" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwc">defined </span><span class="hl kwb">$page</span><span class="hl opt">) {</span></li>
<li id="n_98" class="hl">                <span class="hl kwa">if </span><span class="hl opt">(</span>IkiWiki-<span class="hl opt">&gt;</span><span class="hl kwd">can</span><span class="hl opt">(</span><span class="hl sng">&quot;check_canedit&quot;</span><span class="hl opt">)) {</span></li>
<li id="n_99" class="hl">                    IkiWiki<span class="hl opt">::</span>check_canedit<span class="hl opt">(</span><span class="hl kwb">$page</span><span class="hl opt">, </span><span class="hl kwb">$cgi</span><span class="hl opt">, </span><span class="hl kwb">$session</span><span class="hl opt">);</span></li>
<li id="n_100" class="hl">                    <span class="hl kwa">next</span><span class="hl opt">;</span></li>
<li id="n_101" class="hl">                <span class="hl opt">}</span></li>
<li id="n_102" class="hl">            <span class="hl opt">}</span></li>
<li id="n_103" class="hl">            <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_104" class="hl">                <span class="hl kwa">if </span><span class="hl opt">(</span>IkiWiki<span class="hl opt">::</span>Plugin<span class="hl opt">::</span>attachment-<span class="hl opt">&gt;</span><span class="hl kwd">can</span><span class="hl opt">(</span><span class="hl sng">&quot;check_canattach&quot;</span><span class="hl opt">)) {</span></li>
<li id="n_105" class="hl">                    IkiWiki<span class="hl opt">::</span>Plugin<span class="hl opt">::</span>attachment<span class="hl opt">::</span>check_canattach<span class="hl opt">(</span><span class="hl kwb">$session</span><span class="hl opt">, </span><span class="hl kwb">$file</span><span class="hl opt">, </span><span class="hl kwb">$change</span><span class="hl opt">-&gt;{</span>path<span class="hl opt">});</span></li>
<li id="n_106" class="hl">                    <span class="hl kwa">next</span><span class="hl opt">;</span></li>
<li id="n_107" class="hl">                <span class="hl opt">}</span></li>
<li id="n_108" class="hl">            <span class="hl opt">}</span></li>
<li id="n_109" class="hl">        <span class="hl opt">}</span></li>
<li id="n_110" class="hl">        <span class="hl kwa">elsif </span><span class="hl opt">(</span><span class="hl kwb">$change</span><span class="hl opt">-&gt;{</span>action<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;remove&#39;</span><span class="hl opt">) {</span></li>
<li id="n_111" class="hl">            <span class="hl slc"># check_canremove tests to see if the file is present</span></li>
<li id="n_112" class="hl">            <span class="hl slc"># on disk. This will fail is a single commit adds a</span></li>
<li id="n_113" class="hl">            <span class="hl slc"># file and then removes it again. Avoid the problem</span></li>
<li id="n_114" class="hl">            <span class="hl slc"># by not testing the removal in such pairs of changes.</span></li>
<li id="n_115" class="hl">            <span class="hl slc"># (The add is still tested, just to make sure that</span></li>
<li id="n_116" class="hl">            <span class="hl slc"># no data is added to the repo that a web edit</span></li>
<li id="n_117" class="hl">            <span class="hl slc"># could add.)</span></li>
<li id="n_118" class="hl">            <span class="hl kwa">next if </span><span class="hl kwb">$newfiles</span><span class="hl opt">{</span><span class="hl kwb">$file</span><span class="hl opt">};</span></li>
<li id="n_119" class="hl"></li>
<li id="n_120" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span>IkiWiki<span class="hl opt">::</span>Plugin<span class="hl opt">::</span>remove-<span class="hl opt">&gt;</span><span class="hl kwd">can</span><span class="hl opt">(</span><span class="hl sng">&quot;check_canremove&quot;</span><span class="hl opt">)) {</span></li>
<li id="n_121" class="hl">                IkiWiki<span class="hl opt">::</span>Plugin<span class="hl opt">::</span>remove<span class="hl opt">::</span>check_canremove<span class="hl opt">(</span><span class="hl kwc">defined </span><span class="hl kwb">$page </span><span class="hl opt">? </span><span class="hl kwb">$page </span><span class="hl opt">: </span><span class="hl kwb">$file</span><span class="hl opt">, </span><span class="hl kwb">$cgi</span><span class="hl opt">, </span><span class="hl kwb">$session</span><span class="hl opt">);</span></li>
<li id="n_122" class="hl">                <span class="hl kwa">next</span><span class="hl opt">;</span></li>
<li id="n_123" class="hl">            <span class="hl opt">}</span></li>
<li id="n_124" class="hl">        <span class="hl opt">}</span></li>
<li id="n_125" class="hl">        <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_126" class="hl">            error <span class="hl sng">&quot;unknown action &quot;</span><span class="hl opt">.</span><span class="hl kwb">$change</span><span class="hl opt">-&gt;{</span>action<span class="hl opt">};</span></li>
<li id="n_127" class="hl">        <span class="hl opt">}</span></li>
<li id="n_128" class="hl">        </li>
<li id="n_129" class="hl">        error <span class="hl kwc">sprintf</span><span class="hl opt">(</span>gettext<span class="hl opt">(</span><span class="hl sng">&quot;you are not allowed to change </span><span class="hl ipl">%s</span><span class="hl sng">&quot;</span><span class="hl opt">), </span><span class="hl kwb">$file</span><span class="hl opt">);</span></li>
<li id="n_130" class="hl">    <span class="hl opt">}</span></li>
<li id="n_131" class="hl"></li>
<li id="n_132" class="hl">    <span class="hl kwa">exit </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_133" class="hl"><span class="hl opt">}</span></li>
<li id="n_134" class="hl"></li>
<li id="n_135" class="hl"><span class="hl num">1</span></li>
</ol></code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.46.0</a>) at 2025-06-23 08:30:30 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
