Modify kernfs scripts to be able to run them twice
Those scripts could only be run once, because mount errors out if it tries to mount an already mounted fs (or unmount a non mounted fs). This changes generation of the scripts so that any mount is preceded with "mountpoint -q || ", and any umount is preceded with "mountpoint -q && ".
This commit is contained in:
parent
3b27f93764
commit
aceacf2f85
1 changed files with 61 additions and 1 deletions
|
@ -16,9 +16,69 @@
|
|||
</xsl:template>
|
||||
|
||||
<xsl:template match="userinput">
|
||||
<xsl:apply-templates/>
|
||||
<xsl:call-template name="check-mount">
|
||||
<xsl:with-param name="mytext" select="string()"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="check-mount">
|
||||
<xsl:param name="mytext" select="''"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($mytext,'
')">
|
||||
<xsl:call-template name="check-mount">
|
||||
<xsl:with-param name="mytext"
|
||||
select="substring-before($mytext,'
')"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text>
</xsl:text>
|
||||
<xsl:call-template name="check-mount">
|
||||
<xsl:with-param name="mytext"
|
||||
select="substring-after($mytext,'
')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="starts-with(normalize-space($mytext),'mountpoint')">
|
||||
<xsl:copy-of select="$mytext"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="starts-with(normalize-space($mytext),'mount')">
|
||||
<xsl:variable name="mountpoint">
|
||||
<xsl:call-template name="last-arg">
|
||||
<xsl:with-param name="myline" select="$mytext"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:text>mountpoint -q </xsl:text>
|
||||
<xsl:copy-of select="$mountpoint"/>
|
||||
<xsl:text> || </xsl:text>
|
||||
<xsl:copy-of select="$mytext"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="starts-with(normalize-space($mytext),'umount')">
|
||||
<xsl:variable name="mountpoint">
|
||||
<xsl:call-template name="last-arg">
|
||||
<xsl:with-param name="myline" select="$mytext"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:text>mountpoint -q </xsl:text>
|
||||
<xsl:copy-of select="$mountpoint"/>
|
||||
<xsl:text> && </xsl:text>
|
||||
<xsl:copy-of select="$mytext"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$mytext"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="last-arg">
|
||||
<xsl:param name="myline" select="''"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($myline,' ')">
|
||||
<xsl:call-template name="last-arg">
|
||||
<xsl:with-param name="myline" select="substring-after($myline,' ')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$myline"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
|
Reference in a new issue