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:
@@ -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,27 +108,17 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 *bootCodeData = new uint8[kBootCodeSize];
|
uint8 *bootCodeData = new uint8[kBootCodeSize];
|
||||||
|
|
||||||
// open our resources
|
// open our resources
|
||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user