guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

09/17: utils: 'edit-expression' modifies the file only if necessary.


From: guix-commits
Subject: 09/17: utils: 'edit-expression' modifies the file only if necessary.
Date: Sat, 10 Jul 2021 19:07:11 -0400 (EDT)

civodul pushed a commit to branch core-updates
in repository guix.

commit f05433f2083d467bdf0aafe18dd57bf35f0a7343
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Mon Jun 21 13:56:59 2021 +0200

    utils: 'edit-expression' modifies the file only if necessary.
    
    * guix/utils.scm (edit-expression): Check whether STR* equals STR.
---
 guix/utils.scm | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/guix/utils.scm b/guix/utils.scm
index f8f6672..e6d0761 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -423,17 +423,19 @@ This procedure returns #t on success."
                            (port-encoding in)))
                  (post-bv (get-bytevector-all in))
                  (str*    (proc str)))
-            ;; Verify the edited expression is still a scheme expression.
-            (call-with-input-string str* read)
-            ;; Update the file with edited expression.
-            (with-atomic-file-output file
-              (lambda (out)
-                (put-bytevector out pre-bv)
-                (display str* out)
-                ;; post-bv maybe the end-of-file object.
-                (when (not (eof-object? post-bv))
-                  (put-bytevector out post-bv))
-                #t))))))))
+            ;; Modify FILE only if there are changes.
+            (unless (string=? str* str)
+              ;; Verify the edited expression is still a scheme expression.
+              (call-with-input-string str* read)
+              ;; Update the file with edited expression.
+              (with-atomic-file-output file
+                (lambda (out)
+                  (put-bytevector out pre-bv)
+                  (display str* out)
+                  ;; post-bv maybe the end-of-file object.
+                  (when (not (eof-object? post-bv))
+                    (put-bytevector out post-bv))
+                  #t)))))))))
 
 
 ;;;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]