static void check_architecture (guestfs_h *g, struct inspect_fs *fs) { const char *binaries[] = { "/bin/bash", "/bin/ls", "/bin/echo", "/bin/rm", "/bin/sh" }; size_t i; char *arch; for (i = 0; i < sizeof binaries / sizeof binaries[0]; ++i) { if (guestfs_is_file (g, binaries[i]) > 0) { /* Ignore errors from file_architecture call. */ guestfs_push_error_handler (g, NULL, NULL); arch = guestfs_file_architecture (g, binaries[i]); guestfs_pop_error_handler (g); if (arch) { /* String will be owned by handle, freed by * guestfs___free_inspect_info. */ fs->arch = arch; break; } } } }
static int check_windows_arch (guestfs_h *g, struct inspect_fs *fs) { size_t len = strlen (fs->windows_systemroot) + 32; char cmd_exe[len]; snprintf (cmd_exe, len, "%s/system32/cmd.exe", fs->windows_systemroot); /* Should exist because of previous check above in get_windows_systemroot. */ CLEANUP_FREE char *cmd_exe_path = guestfs_case_sensitive_path (g, cmd_exe); if (!cmd_exe_path) return -1; char *arch = guestfs_file_architecture (g, cmd_exe_path); if (arch) fs->arch = arch; /* freed by guestfs___free_inspect_info */ return 0; }