]> sourceware.org Git - lvm2.git/commitdiff
build: fix x32 arch
authorMikulas Patocka <mpatocka@redhat.com>
Wed, 15 Feb 2017 16:01:49 +0000 (11:01 -0500)
committerZdenek Kabelac <zkabelac@redhat.com>
Mon, 27 Mar 2017 18:50:19 +0000 (20:50 +0200)
This patch fixed lvm2 compilation running on x32 arch.
(Using 64bit x86 cpu features but running on 32b address space,
so consuming less mem in VM).

On x32 arch 'time_t' is 64bit while 'long' is 32bit.

lib/format1/import-export.c
lib/format_text/export.c
lib/report/report.c

index c174031271a0e3aaa83baa70046445e840b0a30f..c29527b67752520cc18495fe714cf519e182004f 100644 (file)
@@ -128,8 +128,8 @@ int import_pv(const struct format_type *fmt, struct dm_pool *mem,
 int generate_lvm1_system_id(struct cmd_context *cmd, char *s, const char *prefix)
 {
 
-       if (dm_snprintf(s, NAME_LEN, "%s%s%lu",
-                        prefix, cmd->hostname, time(NULL)) < 0) {
+       if (dm_snprintf(s, NAME_LEN, "%s%s" FMTu64,
+                       prefix, cmd->hostname, (uint64_t)time(NULL)) < 0) {
                log_error("Generated LVM1 format system_id too long");
                return 0;
        }
index 899ff45cbf8c44b70db36f42026cbcf383fcb945..473275d4c6cf25f21f116f4344583cd452d36d54 100644 (file)
@@ -350,7 +350,7 @@ static int _print_header(struct cmd_context *cmd, struct formatter *f,
             _utsname.version, _utsname.machine);
        if (cmd->system_id && *cmd->system_id)
                outf(f, "creation_host_system_id = \"%s\"", cmd->system_id);
-       outf(f, "creation_time = %lu\t# %s", t, ctime(&t));
+       outf(f, "creation_time = " FMTu64 "\t# %s", (uint64_t)t, ctime(&t));
 
        return 1;
 }
index 1421b31fa48a92d6ded75dda1717319827968b68..d9880b2061035958e165446a6a47f5484f8fe792 100644 (file)
@@ -1008,7 +1008,7 @@ static int _translate_time_items(struct dm_report *rh, struct time_info *info,
        dm_pool_free(info->mem, info->ti_list);
        info->ti_list = NULL;
 
-       if (dm_snprintf(buf, sizeof(buf), "@%ld:@%ld", t1, t2) == -1) {
+       if (dm_snprintf(buf, sizeof(buf), "@" FMTd64 ":@" FMTd64, (int64_t)t1, (int64_t)t2) == -1) {
                log_error("_translate_time_items: dm_snprintf failed");
                return 0;
        }
@@ -1063,10 +1063,10 @@ static void *_lv_time_handler_get_dynamic_value(struct dm_report *rh,
                                                struct dm_pool *mem,
                                                const char *data_in)
 {
-       time_t t1, t2;
+       int64_t t1, t2;
        time_t *result;
 
-       if (sscanf(data_in, "@%ld:@%ld", &t1, &t2) != 2) {
+       if (sscanf(data_in, "@" FMTd64 ":@" FMTd64, &t1, &t2) != 2) {
                log_error("Failed to get value for parsed time specification.");
                return NULL;
        }
@@ -1076,8 +1076,8 @@ static void *_lv_time_handler_get_dynamic_value(struct dm_report *rh,
                return NULL;
        }
 
-       result[0] = t1;
-       result[1] = t2;
+       result[0] = (time_t) t1; /* Validate range for 32b arch ? */
+       result[1] = (time_t) t2;
 
        return result;
 }
This page took 0.043202 seconds and 5 git commands to generate.