Change script generation of root command: replace fragile construct
sudo sh -c '<commands>' with slightly less fragile construct sudo sh << ROOT_EOF <commands with ` and \ escaped> ROOT_EOF Note: $ are not escaped, which is usually what is intended, but not always
This commit is contained in:
parent
c1decbe119
commit
970f2dc6e0
1 changed files with 47 additions and 13 deletions
|
@ -436,11 +436,11 @@ fi
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="@role = 'root'">
|
<xsl:when test="@role = 'root'">
|
||||||
<xsl:if test="$sudo = 'y'">
|
<xsl:if test="$sudo = 'y'">
|
||||||
<xsl:text>sudo sh -c '</xsl:text>
|
<xsl:text>sudo sh << ROOT_EOF
</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:apply-templates select="userinput" mode="root"/>
|
<xsl:apply-templates select="userinput" mode="root"/>
|
||||||
<xsl:if test="$sudo = 'y'">
|
<xsl:if test="$sudo = 'y'">
|
||||||
<xsl:text>'</xsl:text>
|
<xsl:text>
ROOT_EOF</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
|
@ -507,10 +507,10 @@ popd</xsl:text>
|
||||||
<xsl:template match="userinput" mode="root">
|
<xsl:template match="userinput" mode="root">
|
||||||
<xsl:for-each select="child::node()">
|
<xsl:for-each select="child::node()">
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="self::text() and contains(string(),'make')">
|
<xsl:when test="self::text()">
|
||||||
<xsl:value-of select="substring-before(string(),'make')"/>
|
<xsl:call-template name="output-root">
|
||||||
<xsl:text>make -j1</xsl:text>
|
<xsl:with-param name="out-string" select="string()"/>
|
||||||
<xsl:value-of select="substring-after(string(),'make')"/>
|
</xsl:call-template>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<xsl:apply-templates select="self::node()"/>
|
<xsl:apply-templates select="self::node()"/>
|
||||||
|
@ -519,18 +519,52 @@ popd</xsl:text>
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="replaceable">
|
<xsl:template name="output-root">
|
||||||
<!-- Not needed anymore
|
<xsl:param name="out-string" select="''"/>
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ancestor::sect1[@id='xorg7-server']">
|
<xsl:when test="contains($out-string,'make')">
|
||||||
<xsl:text>$SRC_DIR/MesaLib</xsl:text>
|
<xsl:call-template name="output-root">
|
||||||
|
<xsl:with-param name="out-string"
|
||||||
|
select="substring-before($out-string,'make')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:text>make -j1</xsl:text>
|
||||||
|
<xsl:call-template name="output-root">
|
||||||
|
<xsl:with-param name="out-string"
|
||||||
|
select="substring-after($out-string,'make')"/>
|
||||||
|
</xsl:call-template>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
<xsl:otherwise> -->
|
<xsl:when test="contains($out-string,'`')">
|
||||||
|
<xsl:call-template name="output-root">
|
||||||
|
<xsl:with-param name="out-string"
|
||||||
|
select="substring-before($out-string,'`')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:text>\`</xsl:text>
|
||||||
|
<xsl:call-template name="output-root">
|
||||||
|
<xsl:with-param name="out-string"
|
||||||
|
select="substring-after($out-string,'`')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($out-string,'\')">
|
||||||
|
<xsl:call-template name="output-root">
|
||||||
|
<xsl:with-param name="out-string"
|
||||||
|
select="substring-before($out-string,'\')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:text>\\</xsl:text>
|
||||||
|
<xsl:call-template name="output-root">
|
||||||
|
<xsl:with-param name="out-string"
|
||||||
|
select="substring-after($out-string,'\')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="$out-string"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="replaceable">
|
||||||
<xsl:text>**EDITME</xsl:text>
|
<xsl:text>**EDITME</xsl:text>
|
||||||
<xsl:apply-templates/>
|
<xsl:apply-templates/>
|
||||||
<xsl:text>EDITME**</xsl:text>
|
<xsl:text>EDITME**</xsl:text>
|
||||||
<!-- </xsl:otherwise>
|
|
||||||
</xsl:choose> -->
|
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
</xsl:stylesheet>
|
</xsl:stylesheet>
|
||||||
|
|
Reference in a new issue