[jhalfs] 01/02: Modify kernfs scripts to be able to run them twice

"Git Owner" ([email protected] via alfs-discuss Mailing List) <[email protected]>
Newsgroups gmane.linux.lfs.automated
Message-ID <[email protected]>
This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch trunk
in repository jhalfs.

commit aceacf2f8596069e6e66e18fb6fa828efa2feecb
Author: Pierre Labastie <[email protected]>
AuthorDate: Tue Sep 12 22:54:51 2023 +0200

    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 && ".
---
 common/kernfs.xsl | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 61 insertions(+), 1 deletion(-)

diff --git a/common/kernfs.xsl b/common/kernfs.xsl
index f47f665..d7043a0 100644
--- a/common/kernfs.xsl
+++ b/common/kernfs.xsl
@@ -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,'&#xA;')">
+        <xsl:call-template name="check-mount">
+          <xsl:with-param name="mytext"
+                          select="substring-before($mytext,'&#xA;')"/>
+        </xsl:call-template>
+        <xsl:text>&#xA;</xsl:text>
+        <xsl:call-template name="check-mount">
+          <xsl:with-param name="mytext"
+                          select="substring-after($mytext,'&#xA;')"/>
+        </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> &amp;&amp; </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>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

-- 
http://lists.linuxfromscratch.org/sympa/info/alfs-discuss
Unsubscribe: See the above information page
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.