diff options
author | Paul Kocialkowski | 2016-01-27 20:54:50 +0100 |
---|---|---|
committer | Paul Kocialkowski | 2016-01-27 20:58:23 +0100 |
commit | d036034922795d8af1d8cefc5bf466882262782f (patch) | |
tree | e92be65561abdaa453b98246188135c85e110cc0 /src/gpt.c | |
parent | 2e31eedce5bc7d2fc37f8cd6be1a7177dd7f6da7 (diff) |
Use fixed-size stdint types and sys types
Generic C types only guarantee a minimum size, not a fixed size, so it is
necessary to use stdint types for fixed-size variables.
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'src/gpt.c')
-rw-r--r-- | src/gpt.c | 50 |
1 files changed, 26 insertions, 24 deletions
@@ -17,15 +17,17 @@ #include <stdlib.h> #include <stdio.h> +#include <stdint.h> #include <string.h> #include <ctype.h> +#include <sys/types.h> #include "lg-downloader.h" #include "download.h" #include "gpt.h" /* Lookup table for CRC32 with generator polynomial 0x04C11Db7. */ -static const unsigned int gpt_crc_table[] = { +static const uint32_t gpt_crc_table[] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, @@ -80,20 +82,20 @@ static const unsigned int gpt_crc_table[] = { 0x2d02ef8d }; -static unsigned int gpt_crc_step(unsigned int crc, unsigned char data) +static uint32_t gpt_crc_step(uint32_t crc, uint8_t data) { return ((crc >> 8) ^ gpt_crc_table[(crc ^ data) & 0xff]); } -static unsigned int gpt_crc_final(unsigned int crc) +static uint32_t gpt_crc_final(uint32_t crc) { return crc ^ GPT_CRC_SEED; } static void gpt_partition_name(struct gpt_partition *partition, char *name) { - unsigned int i; - unsigned int j; + size_t i; + size_t j; char c; if (partition == NULL || name == NULL) @@ -112,9 +114,9 @@ static void gpt_partition_name(struct gpt_partition *partition, char *name) int gpt_header_verify(struct gpt_header *header) { struct gpt_header header_copy; - unsigned char *p; - unsigned int crc; - unsigned int i; + uint8_t *p; + uint32_t crc; + size_t i; if (header == NULL) return -1; @@ -133,7 +135,7 @@ int gpt_header_verify(struct gpt_header *header) header_copy.crc = 0; crc = GPT_CRC_SEED; - p = (unsigned char *) &header_copy; + p = (uint8_t *) &header_copy; for (i = 0; i < sizeof(struct gpt_header); i++) crc = gpt_crc_step(crc, *p++); @@ -159,8 +161,8 @@ int gpt_header_verify(struct gpt_header *header) int gpt_header_read(struct context *context, struct gpt_header *header) { - unsigned int address; - unsigned int length; + off_t address; + size_t length; int rc; address = GPT_HEADER_LBA; @@ -183,11 +185,11 @@ int gpt_partition_find(struct context *context) struct gpt_partition *partition; void *buffer = NULL; char name[GPT_PARTITION_NAME_COUNT + 1]; - unsigned int address; - unsigned int length; - unsigned int count; - unsigned int index; - unsigned int i; + off_t address; + size_t length; + size_t count; + size_t index; + size_t i; int rc; if (context == NULL || context->partition == NULL) @@ -243,8 +245,8 @@ int gpt_partition_find(struct context *context) if (strcmp(name, context->partition) == 0) { printf("Matched GPT partition: %s\n", name); - context->address = (unsigned int) le64toh(partition->first_lba); - context->length = (unsigned int) (le64toh(partition->last_lba) - le64toh(partition->first_lba) + 1) * GPT_BLOCK_SIZE; + context->address = (uint32_t) le64toh(partition->first_lba); + context->length = (uint32_t) (le64toh(partition->last_lba) - le64toh(partition->first_lba) + 1) * GPT_BLOCK_SIZE; rc = 0; goto complete; @@ -271,11 +273,11 @@ int gpt_partitions_print(struct context *context) struct gpt_partition *partition; void *buffer = NULL; char name[GPT_PARTITION_NAME_COUNT + 1]; - unsigned int address; - unsigned int length; - unsigned int count; - unsigned int index; - unsigned int i; + off_t address; + size_t length; + size_t count; + size_t index; + size_t i; int rc; if (context == NULL) @@ -325,7 +327,7 @@ int gpt_partitions_print(struct context *context) gpt_partition_name(partition, (char *) &name); if (name[0] != '\0') - printf("Partition name: %s, size: %d bytes\n", name, (unsigned int) (le64toh(partition->last_lba) - le64toh(partition->first_lba) + 1) * GPT_BLOCK_SIZE); + printf("Partition name: %s, size: %d bytes\n", name, (int) (le64toh(partition->last_lba) - le64toh(partition->first_lba) + 1) * GPT_BLOCK_SIZE); } rc = 0; |