I'm checking this in as an obvious improvement. All it does is add "const" attributes, with the exception of mac.c, where I've added a FIXME comment, along with the cast that forces the inconsistent mac_write into the now-const mold.
------------------------------------------------------------------------------- constify-labels-part-1 ------------------------------------------------------------------------------- Begin making libparted/labels/*.c const-correct. For an introduction, see http://mail-archive.com/[email protected]/msg00930.html In particular, I've used a const-adding case in mac.c to work around the current, inconsistent semantics of mac_write. --- libparted/labels/aix.c | 2 +- libparted/labels/bsd.c | 6 +++-- libparted/labels/dasd.c | 6 +++-- libparted/labels/dos.c | 52 +++++++++++++++++++++++++---------------------- libparted/labels/dvh.c | 7 +++--- libparted/labels/gpt.c | 5 ++--- libparted/labels/loop.c | 3 +-- libparted/labels/mac.c | 4 +++- libparted/labels/pc98.c | 2 +- libparted/labels/rdb.c | 6 +++-- libparted/labels/sun.c | 5 ++--- 11 files changed, 50 insertions(+), 48 deletions(-) diff --git a/libparted/labels/aix.c b/libparted/labels/aix.c index 0259a10..e051789 100644 --- a/libparted/labels/aix.c +++ b/libparted/labels/aix.c @@ -118,7 +118,7 @@ aix_read (PedDisk* disk) #ifndef DISCOVER_ONLY static int -aix_write (PedDisk* disk) +aix_write (const PedDisk* disk) { ped_exception_throw (PED_EXCEPTION_NO_FEATURE, PED_EXCEPTION_CANCEL, diff --git a/libparted/labels/bsd.c b/libparted/labels/bsd.c index ebcc714..b9f5dd2 100644 --- a/libparted/labels/bsd.c +++ b/libparted/labels/bsd.c @@ -1,7 +1,7 @@ /* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- libparted - a library for manipulating disk partitions - Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -305,7 +305,7 @@ error: } static void -_probe_and_add_boot_code (PedDisk* disk) +_probe_and_add_boot_code (const PedDisk* disk) { BSDDiskData* bsd_specific; BSDRawLabel* old_label; @@ -323,7 +323,7 @@ _probe_and_add_boot_code (PedDisk* disk) #ifndef DISCOVER_ONLY static int -bsd_write (PedDisk* disk) +bsd_write (const PedDisk* disk) { BSDDiskData* bsd_specific; BSDRawLabel* label; diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c index 1ea5b49..9a72bdc 100644 --- a/libparted/labels/dasd.c +++ b/libparted/labels/dasd.c @@ -77,7 +77,7 @@ typedef struct { static int dasd_probe (const PedDevice *dev); static int dasd_clobber (PedDevice* dev); static int dasd_read (PedDisk* disk); -static int dasd_write (PedDisk* disk); +static int dasd_write (const PedDisk* disk); static PedPartition* dasd_partition_new (const PedDisk* disk, PedPartitionType part_type, @@ -443,7 +443,7 @@ error_close_dev: } static int -dasd_update_type (PedDisk* disk) +dasd_update_type (const PedDisk* disk) { PedPartition* part; LinuxSpecific* arch_specific; @@ -519,7 +519,7 @@ dasd_update_type (PedDisk* disk) } static int -dasd_write (PedDisk* disk) +dasd_write (const PedDisk* disk) { DasdPartitionData* dasd_data; PedPartition* part; diff --git a/libparted/labels/dos.c b/libparted/labels/dos.c index ef2231a..6b135aa 100644 --- a/libparted/labels/dos.c +++ b/libparted/labels/dos.c @@ -272,7 +272,7 @@ chs_get_sector (const RawCHS* chs) } static PedSector -chs_to_sector (PedDevice* dev, const PedCHSGeometry *bios_geom, +chs_to_sector (const PedDevice* dev, const PedCHSGeometry *bios_geom, const RawCHS* chs) { PedSector c; /* not measured in sectors, but need */ @@ -295,7 +295,7 @@ chs_to_sector (PedDevice* dev, const PedCHSGeometry *bios_geom, } static void -sector_to_chs (PedDevice* dev, const PedCHSGeometry* bios_geom, +sector_to_chs (const PedDevice* dev, const PedCHSGeometry* bios_geom, PedSector sector, RawCHS* chs) { PedSector real_c, real_h, real_s; @@ -324,7 +324,7 @@ sector_to_chs (PedDevice* dev, const PedCHSGeometry* bios_geom, } static PedSector -legacy_start (PedDisk* disk, const PedCHSGeometry* bios_geom, +legacy_start (const PedDisk* disk, const PedCHSGeometry* bios_geom, const DosRawPartition* raw_part) { PED_ASSERT (disk != NULL, return 0); @@ -334,7 +334,7 @@ legacy_start (PedDisk* disk, const PedCHSGeometry* bios_geom, } static PedSector -legacy_end (PedDisk* disk, const PedCHSGeometry* bios_geom, +legacy_end (const PedDisk* disk, const PedCHSGeometry* bios_geom, const DosRawPartition* raw_part) { PED_ASSERT (disk != NULL, return 0); @@ -395,7 +395,7 @@ partition_check_bios_geometry (PedPartition* part, PedCHSGeometry* bios_geom) } static int -disk_check_bios_geometry (PedDisk* disk, PedCHSGeometry* bios_geom) +disk_check_bios_geometry (const PedDisk* disk, PedCHSGeometry* bios_geom) { PedPartition* part = NULL; @@ -501,7 +501,7 @@ end: * the algorithm. We know, however, that C > 0. */ static int -probe_partition_for_geom (PedPartition* part, PedCHSGeometry* bios_geom) +probe_partition_for_geom (const PedPartition* part, PedCHSGeometry* bios_geom) { DosPartitionData* dos_data; RawCHS* start_chs; @@ -637,7 +637,8 @@ probe_partition_for_geom (PedPartition* part, PedCHSGeometry* bios_geom) } static void -partition_probe_bios_geometry (PedPartition* part, PedCHSGeometry* bios_geom) +partition_probe_bios_geometry (const PedPartition* part, + PedCHSGeometry* bios_geom) { PED_ASSERT (part != NULL, return); PED_ASSERT (part->disk != NULL, return); @@ -662,7 +663,7 @@ partition_probe_bios_geometry (PedPartition* part, PedCHSGeometry* bios_geom) } static void -disk_probe_bios_geometry (PedDisk* disk, PedCHSGeometry* bios_geom) +disk_probe_bios_geometry (const PedDisk* disk, PedCHSGeometry* bios_geom) { PedPartition* part; @@ -760,7 +761,7 @@ raw_part_is_lba (const DosRawPartition* raw_part) } PedPartition* -raw_part_parse (PedDisk* disk, const DosRawPartition* raw_part, +raw_part_parse (const PedDisk* disk, const DosRawPartition* raw_part, PedSector lba_offset, PedPartitionType type) { PedPartition* part; @@ -948,7 +949,8 @@ msdos_read (PedDisk* disk) #ifndef DISCOVER_ONLY static int -fill_raw_part (DosRawPartition* raw_part, PedPartition* part, PedSector offset) +fill_raw_part (DosRawPartition* raw_part, + const PedPartition* part, PedSector offset) { DosPartitionData* dos_data; PedCHSGeometry bios_geom; @@ -984,8 +986,9 @@ fill_raw_part (DosRawPartition* raw_part, PedPartition* part, PedSector offset) } static int -fill_ext_raw_part_geom (DosRawPartition* raw_part, PedCHSGeometry* bios_geom, - PedGeometry* geom, PedSector offset) +fill_ext_raw_part_geom (DosRawPartition* raw_part, + const PedCHSGeometry* bios_geom, + const PedGeometry* geom, PedSector offset) { PED_ASSERT (raw_part != NULL, return 0); PED_ASSERT (geom != NULL, return 0); @@ -1006,7 +1009,8 @@ fill_ext_raw_part_geom (DosRawPartition* raw_part, PedCHSGeometry* bios_geom, } static int -write_ext_table (PedDisk* disk, PedSector sector, PedPartition* logical) +write_ext_table (const PedDisk* disk, + PedSector sector, const PedPartition* logical) { DosRawTable table; PedPartition* part; @@ -1046,7 +1050,7 @@ write_ext_table (PedDisk* disk, PedSector sector, PedPartition* logical) } static int -write_empty_table (PedDisk* disk, PedSector sector) +write_empty_table (const PedDisk* disk, PedSector sector) { DosRawTable table; @@ -1061,7 +1065,7 @@ write_empty_table (PedDisk* disk, PedSector sector) /* Find the first logical partition, and write the partition table for it. */ static int -write_extended_partitions (PedDisk* disk) +write_extended_partitions (const PedDisk* disk) { PedPartition* ext_part; PedPartition* part; @@ -1078,7 +1082,7 @@ write_extended_partitions (PedDisk* disk) return write_empty_table (disk, ext_part->geom.start); } -static inline uint32_t generate_random_id() +static inline uint32_t generate_random_id (void) { struct timeval tv; int rc; @@ -1089,7 +1093,7 @@ static inline uint32_t generate_random_id() } static int -msdos_write (PedDisk* disk) +msdos_write (const PedDisk* disk) { DosRawTable table; PedPartition* part; @@ -1541,8 +1545,9 @@ _primary_constraint (PedDisk* disk, const PedCHSGeometry* bios_geom, * must start on the 2nd head of the 1st cylinder. */ static PedConstraint* -_primary_start_constraint (PedDisk* disk, const PedCHSGeometry* bios_geom, - PedGeometry* min_geom) +_primary_start_constraint (const PedDisk* disk, + const PedCHSGeometry* bios_geom, + const PedGeometry* min_geom) { PedDevice* dev = disk->dev; PedSector cylinder_size = bios_geom->sectors * bios_geom->heads; @@ -1828,7 +1833,7 @@ _align (PedPartition* part, const PedCHSGeometry* bios_geom, } static PedConstraint* -_no_geom_constraint (PedDisk* disk, PedSector start, PedSector end) +_no_geom_constraint (const PedDisk* disk, PedSector start, PedSector end) { PedGeometry max; @@ -1837,7 +1842,7 @@ _no_geom_constraint (PedDisk* disk, PedSector start, PedSector end) } static PedConstraint* -_no_geom_extended_constraint (PedPartition* part) +_no_geom_extended_constraint (const PedPartition* part) { PedDevice* dev = part->disk->dev; PedGeometry* min = _get_min_extended_part_geom (part, NULL); @@ -1982,7 +1987,7 @@ error: * tables, etc. */ static int -add_logical_part_metadata (PedDisk* disk, PedPartition* log_part) +add_logical_part_metadata (PedDisk* disk, const PedPartition* log_part) { PedPartition* ext_part = ped_disk_extended_partition (disk); PedPartition* prev = log_part->prev; @@ -2022,7 +2027,7 @@ add_logical_part_metadata (PedDisk* disk, PedPartition* log_part) } static PedPartition* -get_last_part (PedDisk* disk) +get_last_part (const PedDisk* disk) { PedPartition* first_part = disk->part_list; PedPartition* walk; @@ -2209,4 +2214,3 @@ ped_disk_msdos_done () { ped_disk_type_unregister (&msdos_disk_type); } - diff --git a/libparted/labels/dvh.c b/libparted/labels/dvh.c index 77122d3..dce8e5c 100644 --- a/libparted/labels/dvh.c +++ b/libparted/labels/dvh.c @@ -263,7 +263,7 @@ _parse_boot_file (PedDisk* disk, struct volume_directory* vd) return part; } -static int dvh_write (PedDisk* disk); +static int dvh_write (const PedDisk* disk); /* YUCK * @@ -273,7 +273,7 @@ static int dvh_write (PedDisk* disk); * new partition numbers, and before we write to disk. */ static void -_flush_stale_flags (PedDisk* disk) +_flush_stale_flags (const PedDisk* disk) { DVHDiskData* dvh_disk_data = disk->disk_specific; @@ -437,7 +437,7 @@ _generate_boot_file (PedPartition* part, struct volume_directory* vd) } static int -dvh_write (PedDisk* disk) +dvh_write (const PedDisk* disk) { DVHDiskData* dvh_disk_data = disk->disk_specific; struct volume_header vh; @@ -910,4 +910,3 @@ ped_disk_dvh_done () { ped_disk_type_unregister (&dvh_disk_type); } - diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c index 94cafe5..263b38a 100644 --- a/libparted/labels/gpt.c +++ b/libparted/labels/gpt.c @@ -950,7 +950,7 @@ _write_pmbr (PedDevice * dev) } static void -_generate_header (PedDisk* disk, int alternate, uint32_t ptes_crc, +_generate_header (const PedDisk* disk, int alternate, uint32_t ptes_crc, GuidPartitionTableHeader_t** gpt_p) { GPTDiskData* gpt_disk_data = disk->disk_specific; @@ -1017,7 +1017,7 @@ _partition_generate_part_entry (PedPartition* part, GuidPartitionEntry_t* pte) } static int -gpt_write(PedDisk * disk) +gpt_write(const PedDisk * disk) { GPTDiskData* gpt_disk_data; GuidPartitionEntry_t* ptes; @@ -1502,4 +1502,3 @@ ped_disk_gpt_done() { ped_disk_type_unregister (&gpt_disk_type); } - diff --git a/libparted/labels/loop.c b/libparted/labels/loop.c index a899457..2dd87ad 100644 --- a/libparted/labels/loop.c +++ b/libparted/labels/loop.c @@ -165,7 +165,7 @@ error: #ifndef DISCOVER_ONLY static int -loop_write (PedDisk* disk) +loop_write (const PedDisk* disk) { char buf [512]; @@ -332,4 +332,3 @@ ped_disk_loop_done () { ped_disk_type_unregister (&loop_disk_type); } - diff --git a/libparted/labels/mac.c b/libparted/labels/mac.c index 9ccce69..aeb0f5a 100644 --- a/libparted/labels/mac.c +++ b/libparted/labels/mac.c @@ -1572,7 +1572,9 @@ static PedDiskOps mac_disk_ops = { free: mac_free, read: mac_read, #ifndef DISCOVER_ONLY - write: mac_write, + /* FIXME: remove this cast, once mac_write is fixed not to + modify its *DISK parameter. */ + write: (int (*) (const PedDisk*)) mac_write, #else write: NULL, #endif diff --git a/libparted/labels/pc98.c b/libparted/labels/pc98.c index df3ed20..9d12689 100644 --- a/libparted/labels/pc98.c +++ b/libparted/labels/pc98.c @@ -499,7 +499,7 @@ fill_raw_part (PC98RawPartition* raw_part, const PedPartition* part) } static int -pc98_write (PedDisk* disk) +pc98_write (const PedDisk* disk) { PC98RawTable table; PedPartition* part; diff --git a/libparted/labels/rdb.c b/libparted/labels/rdb.c index 216098b..c5d52af 100644 --- a/libparted/labels/rdb.c +++ b/libparted/labels/rdb.c @@ -565,7 +565,7 @@ amiga_read (PedDisk* disk) } static int -_amiga_find_free_blocks(PedDisk *disk, uint32_t *table, +_amiga_find_free_blocks(const PedDisk *disk, uint32_t *table, struct LinkedBlock *block, uint32_t first, uint32_t type) { PedSector next; @@ -623,7 +623,7 @@ _amiga_next_free_block(uint32_t *table, uint32_t start, uint32_t type) { return i; } static PedPartition * -_amiga_next_real_partition(PedDisk *disk, PedPartition *part) { +_amiga_next_real_partition(const PedDisk *disk, PedPartition *part) { PedPartition *next; for (next = ped_disk_next_partition (disk, part); @@ -633,7 +633,7 @@ _amiga_next_real_partition(PedDisk *disk, PedPartition *part) { } #ifndef DISCOVER_ONLY static int -amiga_write (PedDisk* disk) +amiga_write (const PedDisk* disk) { struct RigidDiskBlock *rdb; struct LinkedBlock *block; diff --git a/libparted/labels/sun.c b/libparted/labels/sun.c index 586b07f..602dc2e 100644 --- a/libparted/labels/sun.c +++ b/libparted/labels/sun.c @@ -363,7 +363,7 @@ sun_read (PedDisk* disk) #ifndef DISCOVER_ONLY static void -_probe_and_use_old_info (PedDisk* disk) +_probe_and_use_old_info (const PedDisk* disk) { SunDiskData* sun_specific; SunRawLabel old_label; @@ -378,7 +378,7 @@ _probe_and_use_old_info (PedDisk* disk) } static int -sun_write (PedDisk* disk) +sun_write (const PedDisk* disk) { SunRawLabel* label; SunPartitionData* sun_data; @@ -851,4 +851,3 @@ ped_disk_sun_done () { ped_disk_type_unregister (&sun_disk_type); } - _______________________________________________ parted-devel mailing list [email protected] http://lists.alioth.debian.org/mailman/listinfo/parted-devel

