From 17b26be2325348da1c7f6edf28397b8e45e9e499 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 13 Oct 2011 14:30:35 +0100 Subject: [PATCH] virt-sysprep: Add prepend_line utility function. --- clone/virt-sysprep.in | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/clone/virt-sysprep.in b/clone/virt-sysprep.in index 792282c..b98e4b0 100644 --- a/clone/virt-sysprep.in +++ b/clone/virt-sysprep.in @@ -222,6 +222,18 @@ erase_line () $gf upload "$tmpdir/file.1" "$1" } +# prepend_line filename line +# +# Prepend a line to a file (this is better than appending, because it +# works even when the original file isn't terminated with a newline). +prepend_line () +{ + $gf download "$1" "$tmpdir/file" + echo "$2" > "$tmpdir/file.1" + cat "$tmpdir/file.1" "$tmpdir/file" >> "$tmpdir/file.2" + $gf upload "$tmpdir/file.2" "$1" +} + # rm_files wildcard # # Remove files. Doesn't fail if no files exist. Note the wildcard @@ -253,12 +265,12 @@ rm_file () if [ "$hostname" = "yes" ]; then case "$type/$distro" in linux/fedora) - $gf download /etc/sysconfig/network "$tmpdir/network" - echo "HOSTNAME=$hostname_param" > "$tmpdir/network.1" - sed '/^HOSTNAME=/d' < "$tmpdir/network" >> "$tmpdir/network.1" - $gf upload "$tmpdir/network.1" /etc/sysconfig/network ;; + erase_line /etc/sysconfig/network "^HOSTNAME=" + prepend_line /etc/sysconfig/network "HOSTNAME=$hostname_param" + ;; linux/debian|linux/ubuntu) $gf write /etc/hostname "$hostname_param" + ;; esac fi @@ -270,6 +282,7 @@ if [ "$net_hwaddr" = "yes" ]; then for f in $files; do erase_line "$f" "^HWADDR=" done + ;; esac fi -- 1.8.3.1