[pve-devel] [PATCH v4 pve-storage 08/16] cephconfig: support escaped comment literals

Max Carrara m.carrara at proxmox.com
Tue Mar 5 16:07:50 CET 2024


This commit allows our parser and writer implementations to support
escaping and un-escaping the comment literals '#' and ';' [0].

[0]: https://git.proxmox.com/?p=ceph.git;a=blob;f=ceph/src/common/ConfUtils.cc;h=2f78fd02bf9e27467275752e6f3bca0c5e3946ce;hb=refs/heads/master#l179

Signed-off-by: Max Carrara <m.carrara at proxmox.com>
---
Changes v3 --> v4:
  * new

 src/PVE/CephConfig.pm | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/PVE/CephConfig.pm b/src/PVE/CephConfig.pm
index 32ea544..6b7bbd4 100644
--- a/src/PVE/CephConfig.pm
+++ b/src/PVE/CephConfig.pm
@@ -40,6 +40,9 @@ sub parse_ceph_config {
 	    $line .= $next_line;
 	}
 
+	# un-escape escaped comment literals
+	$line =~ s/\\(#|;)/$1/g;
+
 	push(@lines_normalized, $line);
     }
 
@@ -99,7 +102,11 @@ sub write_ceph_config {
 
 	    $out .= "[$section]\n";
 	    foreach my $key (sort keys %{$cfg->{$section}}) {
-		$out .= "\t $key = $cfg->{$section}->{$key}\n";
+		my $value = $cfg->{$section}->{$key};
+		# escape comment literals
+		$value =~ s/(#|;)/\\$1/g;
+
+		$out .= "\t $key = $value\n";
 	    }
 	    $out .= "\n";
 
-- 
2.39.2





More information about the pve-devel mailing list