limine-install: Misc adjustments
diff --git a/Makefile b/Makefile
index ea662114..ad7291d1 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ PATH := $(shell pwd)/toolchain/bin:$(PATH)
all: limine-install
limine-install: limine-install.c limine.o
- $(CC) $(CFLAGS) limine.o limine-install.c -o limine-install
+ $(CC) $(CFLAGS) -std=c11 limine.o limine-install.c -o limine-install
limine.o: limine.bin
$(OBJCOPY) -I binary -O default limine.bin limine.o
diff --git a/limine-install.c b/limine-install.c
index 1f28b828..9e5af009 100644
--- a/limine-install.c
+++ b/limine-install.c
@@ -121,18 +121,18 @@ static bool device_init(void) {
for (size_t i = 0; i < sizeof(guesses) / sizeof(size_t); i++) {
void *tmp = realloc(cache, guesses[i]);
if (tmp == NULL) {
- perror("Error");
+ perror("ERROR");
return false;
}
cache = tmp;
if (lseek(device, 0, SEEK_SET) == (off_t)-1) {
- perror("Error");
+ perror("ERROR");
return false;
}
ssize_t ret = read(device, cache, guesses[i]);
if (ret == -1) {
- perror("Error");
+ perror("ERROR");
return false;
}
block_size = ret;
@@ -146,7 +146,7 @@ static bool device_init(void) {
}
}
- fprintf(stderr, "Error: Couldn't determine block size of device.\n");
+ fprintf(stderr, "ERROR: Couldn't determine block size of device.\n");
return false;
}
@@ -155,17 +155,17 @@ static bool device_flush_cache(void) {
return true;
if (lseek(device, cached_block * block_size, SEEK_SET) == (off_t)-1) {
- perror("Error");
+ perror("ERROR");
return false;
}
ssize_t ret = write(device, cache, block_size);
if (ret == -1) {
- perror("Error");
+ perror("ERROR");
return false;
}
if ((size_t)ret != block_size) {
- fprintf(stderr, "Error: Wrote back less bytes than cache size.\n");
+ fprintf(stderr, "ERROR: Wrote back less bytes than cache size.\n");
return false;
}
@@ -183,17 +183,17 @@ static bool device_cache_block(uint64_t block) {
}
if (lseek(device, block * block_size, SEEK_SET) == (off_t)-1) {
- perror("Error");
+ perror("ERROR");
return false;
}
ssize_t ret = read(device, cache, block_size);
if (ret == -1) {
- perror("Error");
+ perror("ERROR");
return false;
}
if ((size_t)ret != block_size) {
- fprintf(stderr, "Error: Read back less bytes than cache size.\n");
+ fprintf(stderr, "ERROR: Read back less bytes than cache size.\n");
return false;
}
@@ -208,7 +208,7 @@ static bool _device_read(void *buffer, uint64_t loc, size_t count) {
uint64_t block = (loc + progress) / block_size;
if (!device_cache_block(block)) {
- fprintf(stderr, "Error: Read error.\n");
+ fprintf(stderr, "ERROR: Read error.\n");
return false;
}
@@ -230,7 +230,7 @@ static bool _device_write(const void *buffer, uint64_t loc, size_t count) {
uint64_t block = (loc + progress) / block_size;
if (!device_cache_block(block)) {
- fprintf(stderr, "Error: Write error.\n");
+ fprintf(stderr, "ERROR: Write error.\n");
return false;
}
@@ -268,6 +268,11 @@ int main(int argc, char *argv[]) {
(size_t)_binary_limine_bin_end - (size_t)_binary_limine_bin_start;
uint8_t orig_mbr[70], timestamp[6];
+ if (sizeof(off_t) != 8) {
+ fprintf(stderr, "ERROR: off_t type is not 64-bit.\n");
+ goto cleanup;
+ }
+
if (argc > 1 && strstr("limine.bin", argv[1]) != NULL) {
fprintf(stderr,
"WARNING: Passing the bootloader binary as a file argument is\n"
@@ -279,12 +284,12 @@ int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <device> [GPT partition index]\n", argv[0]);
- return 1;
+ goto cleanup;
}
device = open(argv[1], O_RDWR);
if (device == -1) {
- perror("Error");
+ perror("ERROR");
goto cleanup;
}
@@ -337,7 +342,7 @@ int main(int argc, char *argv[]) {
sscanf(argv[3], "%" SCNu32, &partition_num);
partition_num--;
if (partition_num > gpt_header.number_of_partition_entries) {
- fprintf(stderr, "error: Partition number is too large.\n");
+ fprintf(stderr, "ERROR: Partition number is too large.\n");
goto cleanup;
}
@@ -349,7 +354,7 @@ int main(int argc, char *argv[]) {
if (gpt_entry.unique_partition_guid[0] == 0 &&
gpt_entry.unique_partition_guid[1] == 0) {
- fprintf(stderr, "error: No such partition.\n");
+ fprintf(stderr, "ERROR: No such partition.\n");
goto cleanup;
}
@@ -392,7 +397,7 @@ int main(int argc, char *argv[]) {
new_partition_array_lba_size * partition_entries_per_lb;
if ((ssize_t)new_partition_entry_count <= max_partition_entry_used) {
- fprintf(stderr, "error: Cannot embed because there are too many used partition entries.\n");
+ fprintf(stderr, "ERROR: Cannot embed because there are too many used partition entries.\n");
goto cleanup;
}
@@ -401,7 +406,7 @@ int main(int argc, char *argv[]) {
uint8_t *partition_array =
malloc(new_partition_entry_count * gpt_header.size_of_partition_entry);
if (partition_array == NULL) {
- perror("Error");
+ perror("ERROR");
goto cleanup;
}
@@ -469,6 +474,8 @@ int main(int argc, char *argv[]) {
if (!device_flush_cache())
goto cleanup;
+ fprintf(stderr, "Limine installed successfully!\n");
+
ok = 0;
cleanup:
