On RHEL 5, 'file' command prints 'AMD x86-64' for 'x86-64' arch.
[libguestfs.git] / perl / lib / Sys / Guestfs / Lib.pm
index 1e5638e..be17a30 100644 (file)
@@ -381,6 +381,8 @@ sub _elf_arch_to_canonical
        return "i486";  # probably not in the wild
     } elsif ($_ eq "x86-64") {
        return "x86_64";
+    } elsif ($_ eq "AMD x86-64") {
+       return "x86_64";
     } elsif (/SPARC32/) {
        return "sparc";
     } elsif (/SPARC V9/) {
@@ -433,16 +435,14 @@ sub file_architecture
        $g->download ($path, "$dir/initrd");
 
        my $bins = join " ", map { "bin/$_" } @_initrd_binaries;
-       my $cmd = "cd $dir && $zcat initrd | cpio -id $bins";
+       my $cmd = "cd $dir && $zcat initrd | cpio --quiet -id $bins";
        my $r = system ($cmd);
        die __x("cpio command failed: {error}", error => $?)
            unless $r == 0;
 
        foreach my $bin (@_initrd_binaries) {
            if (-f "$dir/bin/$bin") {
-               open PIPE, "file $dir/bin/$bin |";
-               local $/ = undef;
-               $_ = <PIPE>;
+               $_ = `file $dir/bin/$bin`;
                if (/ELF.*executable, (.+?),/) {
                    return _elf_arch_to_canonical ($1);
                }