From: Richard W.M. Jones Date: Thu, 13 Oct 2011 13:30:35 +0000 (+0100) Subject: virt-sysprep: Add prepend_line utility function. X-Git-Tag: 1.13.21~17 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=17b26be2325348da1c7f6edf28397b8e45e9e499;p=libguestfs.git virt-sysprep: Add prepend_line utility function. --- 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