Do this somewhat differently so as to not break makebootable on non-Haiku hosts. Thanks to luroh for pointing this out.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26988 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rene Gollent
2008-08-16 04:26:27 +00:00
parent adf42886f2
commit 99b25014bb
@@ -16,7 +16,6 @@
#include <Entry.h> #include <Entry.h>
#include <File.h> #include <File.h>
#include <fs_info.h> #include <fs_info.h>
#include <image.h>
#include <Resources.h> #include <Resources.h>
#include <TypeConstants.h> #include <TypeConstants.h>
@@ -36,6 +35,8 @@
# include "PartitionMap.h" # include "PartitionMap.h"
# include "PartitionMapParser.h" # include "PartitionMapParser.h"
#elif HAIKU_HOST_PLATFORM_HAIKU
# include <image.h>
#endif #endif
@@ -107,24 +108,14 @@ print_usage_and_exit(bool error)
// read_boot_code_data // read_boot_code_data
static uint8 * static uint8 *
read_boot_code_data(void) read_boot_code_data(const char* programPath)
{ {
image_info info; // open our executable
int32 cookie = 0;
BFile executableFile; BFile executableFile;
status_t error = executableFile.SetTo(programPath, B_READ_ONLY);
status_t error = get_next_image_info(0, &cookie, &info); if (error != B_OK) {
if (error == B_OK) { fprintf(stderr, "Error: Failed to open my executable file (\"%s\": "
// open our executable "%s\n", programPath, strerror(error));
error = executableFile.SetTo(info.name, B_READ_ONLY);
if (error != B_OK) {
fprintf(stderr, "Error: Failed to open my executable file (\"%s\": "
"%s\n", info.name, strerror(error));
exit(1);
}
} else {
fprintf(stderr, "Error: Failed to get image info for executable file, "
"error: %s\n", strerror(error));
exit(1); exit(1);
} }
@@ -236,7 +227,15 @@ main(int argc, const char *const *argv)
print_usage_and_exit(true); print_usage_and_exit(true);
// read the boot code // read the boot code
uint8 *bootCodeData = read_boot_code_data(); uint8 *bootCodeData = NULL;
#ifndef HAIKU_HOST_PLATFORM_HAIKU
bootCodeData = read_boot_code_data(argv[0]);
#else
image_info info;
int32 cookie = 0;
if (get_next_image_info(0, &cookie, &info) == B_OK)
bootCodeData = read_boot_code_data(info.name);
#endif
if (!bootCodeData) { if (!bootCodeData) {
fprintf(stderr, "Error: Failed to read "); fprintf(stderr, "Error: Failed to read ");
exit(1); exit(1);