extern int
ped_constraint_is_solution (const PedConstraint* constraint,
- const PedGeometry* geom);
+ const PedGeometry* geom) _GL_ATTRIBUTE_PURE;
extern PedConstraint*
ped_constraint_any (const PedDevice* dev);
*/
extern uint32_t __efi_crc32 (const void *buf, unsigned long len,
- uint32_t seed);
+ uint32_t seed) _GL_ATTRIBUTE_PURE;
#endif /* _CRC32_H */
/*
libparted - a library for manipulating disk partitions
- Copyright (C) 1998 - 2001, 2005, 2007-2008 Free Software Foundation, Inc.
+ Copyright (C) 1998-2001, 2005, 2007-2008, 2011 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
extern void ped_device_free_all ();
extern PedDevice* ped_device_get (const char* name);
-extern PedDevice* ped_device_get_next (const PedDevice* dev);
+extern PedDevice* ped_device_get_next (const PedDevice* dev) _GL_ATTRIBUTE_PURE;
extern int ped_device_is_busy (PedDevice* dev);
extern int ped_device_open (PedDevice* dev);
extern int ped_device_close (PedDevice* dev);
extern void ped_disk_type_register (PedDiskType* type);
extern void ped_disk_type_unregister (PedDiskType* type);
-extern PedDiskType* ped_disk_type_get_next (PedDiskType const *type);
-extern PedDiskType* ped_disk_type_get (const char* name);
+extern PedDiskType* ped_disk_type_get_next (PedDiskType const *type)
+ _GL_ATTRIBUTE_PURE;
+extern PedDiskType* ped_disk_type_get (const char* name)
+ _GL_ATTRIBUTE_PURE;
extern int ped_disk_type_check_feature (const PedDiskType* disk_type,
- PedDiskTypeFeature feature);
+ PedDiskTypeFeature feature)
+ _GL_ATTRIBUTE_PURE;
extern PedDiskType* ped_disk_probe (PedDevice* dev);
extern int ped_disk_clobber (PedDevice* dev);
extern int ped_disk_check (const PedDisk* disk);
extern void ped_disk_print (const PedDisk* disk);
-extern int ped_disk_get_primary_partition_count (const PedDisk* disk);
-extern int ped_disk_get_last_partition_num (const PedDisk* disk);
+extern int ped_disk_get_primary_partition_count (const PedDisk* disk)
+ _GL_ATTRIBUTE_PURE;
+extern int ped_disk_get_last_partition_num (const PedDisk* disk)
+ _GL_ATTRIBUTE_PURE;
extern int ped_disk_get_max_primary_partition_count (const PedDisk* disk);
extern bool ped_disk_get_max_supported_partition_count(const PedDisk* disk,
int* supported);
extern const char *ped_disk_flag_get_name(PedDiskFlag flag);
extern PedDiskFlag ped_disk_flag_get_by_name(const char *name);
-extern PedDiskFlag ped_disk_flag_next(PedDiskFlag flag);
+extern PedDiskFlag ped_disk_flag_next(PedDiskFlag flag) _GL_ATTRIBUTE_CONST;
/** @} */
PedSector start,
PedSector end);
extern void ped_partition_destroy (PedPartition* part);
-extern int ped_partition_is_active (const PedPartition* part);
+extern int ped_partition_is_active (const PedPartition* part) _GL_ATTRIBUTE_PURE;
extern int ped_partition_set_flag (PedPartition* part, PedPartitionFlag flag,
int state);
extern int ped_partition_get_flag (const PedPartition* part,
extern int ped_partition_is_busy (const PedPartition* part);
extern char* ped_partition_get_path (const PedPartition* part);
-extern const char* ped_partition_type_get_name (PedPartitionType part_type);
+extern const char* ped_partition_type_get_name (PedPartitionType part_type)
+ _GL_ATTRIBUTE_CONST;
extern const char* ped_partition_flag_get_name (PedPartitionFlag flag);
extern PedPartitionFlag ped_partition_flag_get_by_name (const char* name);
-extern PedPartitionFlag ped_partition_flag_next (PedPartitionFlag flag);
+extern PedPartitionFlag ped_partition_flag_next (PedPartitionFlag flag)
+ _GL_ATTRIBUTE_CONST;
/** @} */
extern int ped_disk_minimize_extended_partition (PedDisk* disk);
extern PedPartition* ped_disk_next_partition (const PedDisk* disk,
- const PedPartition* part);
-extern PedPartition* ped_disk_get_partition (const PedDisk* disk, int num);
+ const PedPartition* part)
+ _GL_ATTRIBUTE_PURE;
+extern PedPartition* ped_disk_get_partition (const PedDisk* disk, int num)
+ _GL_ATTRIBUTE_PURE;
extern PedPartition* ped_disk_get_partition_by_sector (const PedDisk* disk,
- PedSector sect);
-extern PedPartition* ped_disk_extended_partition (const PedDisk* disk);
+ PedSector sect)
+ _GL_ATTRIBUTE_PURE;
+extern PedPartition* ped_disk_extended_partition (const PedDisk* disk)
+ _GL_ATTRIBUTE_PURE;
extern PedSector ped_disk_max_partition_length (const PedDisk *disk);
extern PedSector ped_disk_max_partition_start_sector (const PedDisk *disk);
extern int ped_exception; /* set to true if there's an exception */
-extern char* ped_exception_get_type_string (PedExceptionType ex_type);
-extern char* ped_exception_get_option_string (PedExceptionOption ex_opt);
+extern char* ped_exception_get_type_string (PedExceptionType ex_type)
+ _GL_ATTRIBUTE_CONST;
+extern char* ped_exception_get_option_string (PedExceptionOption ex_opt)
+ _GL_ATTRIBUTE_PURE;
extern void ped_exception_set_handler (PedExceptionHandler* handler);
-extern PedExceptionHandler *ped_exception_get_handler(void);
+extern PedExceptionHandler *ped_exception_get_handler(void)
+ _GL_ATTRIBUTE_PURE;
extern PedExceptionOption ped_exception_default_handler (PedException* ex);
extern PedFileSystemType* ped_file_system_type_get (const char* name);
extern PedFileSystemType*
-ped_file_system_type_get_next (const PedFileSystemType* fs_type);
+ped_file_system_type_get_next (const PedFileSystemType* fs_type)
+ _GL_ATTRIBUTE_PURE;
extern PedFileSystemAlias*
-ped_file_system_alias_get_next (const PedFileSystemAlias* fs_alias);
+ped_file_system_alias_get_next (const PedFileSystemAlias* fs_alias)
+ _GL_ATTRIBUTE_PURE;
extern PedFileSystemType* ped_file_system_probe (PedGeometry* geom);
extern PedGeometry* ped_file_system_probe_specific (
extern int ped_geometry_set_start (PedGeometry* geom, PedSector start);
extern int ped_geometry_set_end (PedGeometry* geom, PedSector end);
extern int ped_geometry_test_overlap (const PedGeometry* a,
- const PedGeometry* b);
+ const PedGeometry* b) _GL_ATTRIBUTE_PURE;
extern int ped_geometry_test_inside (const PedGeometry* a,
- const PedGeometry* b);
-extern int ped_geometry_test_equal (const PedGeometry* a, const PedGeometry* b);
+ const PedGeometry* b) _GL_ATTRIBUTE_PURE;
+extern int ped_geometry_test_equal (const PedGeometry* a, const PedGeometry* b)
+ _GL_ATTRIBUTE_PURE;
extern int ped_geometry_test_sector_inside (const PedGeometry* geom,
- PedSector sect);
+ PedSector sect) _GL_ATTRIBUTE_PURE;
extern int ped_geometry_read (const PedGeometry* geom, void* buffer,
PedSector offset, PedSector count);
/* returns -1 if "sector" is not within dest's space. */
extern PedSector ped_geometry_map (const PedGeometry* dst,
const PedGeometry* src,
- PedSector sector);
+ PedSector sector) _GL_ATTRIBUTE_PURE;
#endif /* PED_GEOM_H_INCLUDED */
PedSector grain_size;
};
-extern PedSector ped_round_up_to (PedSector sector, PedSector grain_size);
-extern PedSector ped_round_down_to (PedSector sector, PedSector grain_size);
-extern PedSector ped_round_to_nearest (PedSector sector, PedSector grain_size);
-extern PedSector ped_greatest_common_divisor (PedSector a, PedSector b);
+extern PedSector ped_round_up_to (PedSector sector, PedSector grain_size)
+ _GL_ATTRIBUTE_CONST;
+extern PedSector ped_round_down_to (PedSector sector, PedSector grain_size)
+ _GL_ATTRIBUTE_CONST;
+extern PedSector ped_round_to_nearest (PedSector sector, PedSector grain_size)
+ _GL_ATTRIBUTE_CONST;
+extern PedSector ped_greatest_common_divisor (PedSector a, PedSector b)
+ _GL_ATTRIBUTE_PURE;
extern int ped_alignment_init (PedAlignment* align, PedSector offset,
PedSector grain_size);
extern PedSector
ped_alignment_align_up (const PedAlignment* align, const PedGeometry* geom,
- PedSector sector);
+ PedSector sector) _GL_ATTRIBUTE_PURE;
extern PedSector
ped_alignment_align_down (const PedAlignment* align, const PedGeometry* geom,
- PedSector sector);
+ PedSector sector) _GL_ATTRIBUTE_PURE;
extern PedSector
ped_alignment_align_nearest (const PedAlignment* align, const PedGeometry* geom,
- PedSector sector);
+ PedSector sector) _GL_ATTRIBUTE_PURE;
extern int
ped_alignment_is_aligned (const PedAlignment* align, const PedGeometry* geom,
- PedSector sector);
+ PedSector sector) _GL_ATTRIBUTE_PURE;
extern const PedAlignment* ped_alignment_any;
extern const PedAlignment* ped_alignment_none;
#include <stdlib.h>
#include <string.h>
-extern const char* ped_get_version ();
+extern const char* ped_get_version () _GL_ATTRIBUTE_CONST;
extern void* ped_malloc (size_t size);
extern void* ped_calloc (size_t size);
#define PED_UNIT_LAST PED_UNIT_TEBIBYTE
extern long long ped_unit_get_size (const PedDevice* dev, PedUnit unit);
-extern const char* ped_unit_get_name (PedUnit unit);
-extern PedUnit ped_unit_get_by_name (const char* unit_name);
+extern const char *ped_unit_get_name (PedUnit unit)
+ _GL_ATTRIBUTE_PURE _GL_ATTRIBUTE_CONST;
+extern PedUnit ped_unit_get_by_name (const char* unit_name) _GL_ATTRIBUTE_PURE;
extern void ped_unit_set_default (PedUnit unit);
extern PedUnit ped_unit_get_default ();
* Motivation: accept devices looking like /dev/rd/c0d0, but
* not looking like /dev/hda1 and /dev/rd/c0d0p1
*/
-static int
+static int _GL_ATTRIBUTE_PURE
_match_rd_device (const char* name)
{
const char* pos;
size_t len;
};
-static int
+static int _GL_ATTRIBUTE_PURE
_skip_entry (const char *name)
{
struct _entry *i;
return !!status;
}
-static int
+static int _GL_ATTRIBUTE_PURE
_has_partitions (const PedDisk* disk)
{
PED_ASSERT(disk != NULL);
* gcd = greatest common divisor of a and b
* gcd = x*a + y*b
*/
-static EuclidTriple
+static EuclidTriple _GL_ATTRIBUTE_PURE
extended_euclid (int a, int b)
{
EuclidTriple result;
/* This function returns the sector closest to "sector" that lies inside
* geom and satisfies the alignment constraint.
*/
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
_closest_inside_geometry (const PedAlignment* align, const PedGeometry* geom,
PedSector sector)
{
/* Given a partition table type NAME, e.g., "gpt", return its PedDiskType
handle. If no known type has a name matching NAME, return NULL. */
-static PedDiskType const *
+static PedDiskType const * _GL_ATTRIBUTE_PURE
find_disk_type (char const *name)
{
PedDiskType const *t;
/** @} */
#ifdef DEBUG
-static int
+static int _GL_ATTRIBUTE_PURE
_disk_check_sanity (PedDisk* disk)
{
PedPartition* walk;
* Note: overlap with an extended partition is also allowed, provided that
* \p geom lies completely inside the extended partition.
*/
-static int
+static int _GL_ATTRIBUTE_PURE
_disk_check_part_overlaps (PedDisk* disk, PedPartition* part)
{
PedPartition* walk;
#include <parted/parted.h>
#include <parted/debug.h>
+#include <parted/exception.h>
#define N_(String) String
#if ENABLE_NLS
/* FIXME: move this out to the prospective math.c */
/* FIXME: this can probably be done more efficiently */
-static int
+static int _GL_ATTRIBUTE_PURE
ped_log2 (int n)
{
int x;
struct AmigaIds * _amiga_add_id (uint32_t id, struct AmigaIds *ids);
void _amiga_free_ids (struct AmigaIds *ids);
-int _amiga_id_in_list (uint32_t id, struct AmigaIds *ids);
+int _amiga_id_in_list (uint32_t id, struct AmigaIds *ids) _GL_ATTRIBUTE_PURE;
return 0;
}
-static int
+static int _GL_ATTRIBUTE_CONST
aix_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
{
return 0;
return true;
}
-static int
+static int _GL_ATTRIBUTE_PURE
aix_partition_align (PedPartition* part, const PedConstraint* constraint)
{
PED_ASSERT (part != NULL);
return 1;
}
-static int
+static int _GL_ATTRIBUTE_PURE
aix_partition_enumerate (PedPartition* part)
{
return 1;
}
-static int
+static int _GL_ATTRIBUTE_PURE
aix_alloc_metadata (PedDisk* disk)
{
return 1;
return 0;
}
-static int
+static int _GL_ATTRIBUTE_PURE
bsd_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
{
BSDPartitionData* bsd_data;
return (chs->sector & 0x3f) - 1;
}
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
chs_to_sector (const PedDevice* dev, const PedCHSGeometry *bios_geom,
const RawCHS* chs)
{
chs->sector = real_s + 1 + (real_c >> 8 << 6);
}
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
legacy_start (const PedDisk* disk, const PedCHSGeometry* bios_geom,
const DosRawPartition* raw_part)
{
return chs_to_sector (disk->dev, bios_geom, &raw_part->chs_start);
}
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
legacy_end (const PedDisk* disk, const PedCHSGeometry* bios_geom,
const DosRawPartition* raw_part)
{
return chs_to_sector (disk->dev, bios_geom, &raw_part->chs_end);
}
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
linear_start (const PedDisk* disk, const DosRawPartition* raw_part,
PedSector offset)
{
return offset + PED_LE32_TO_CPU (raw_part->start);
}
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
linear_end (const PedDisk* disk, const DosRawPartition* raw_part,
PedSector offset)
{
}
#ifndef DISCOVER_ONLY
-static int
+static int _GL_ATTRIBUTE_PURE
partition_check_bios_geometry (PedPartition* part, PedCHSGeometry* bios_geom)
{
PedSector leg_start, leg_end;
return 1;
}
-static int
+static int _GL_ATTRIBUTE_PURE
disk_check_bios_geometry (const PedDisk* disk, PedCHSGeometry* bios_geom)
{
PedPartition* part = NULL;
}
#endif /* !DISCOVER_ONLY */
-static int
+static int _GL_ATTRIBUTE_PURE
raw_part_is_extended (const DosRawPartition* raw_part)
{
PED_ASSERT (raw_part != NULL);
return 0;
}
-static int
+static int _GL_ATTRIBUTE_PURE
raw_part_is_hidden (const DosRawPartition* raw_part)
{
PED_ASSERT (raw_part != NULL);
return 0;
}
-static int
+static int _GL_ATTRIBUTE_PURE
raw_part_is_lba (const DosRawPartition* raw_part)
{
PED_ASSERT (raw_part != NULL);
}
}
-static int
+static int _GL_ATTRIBUTE_PURE
msdos_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
{
DosPartitionData* dos_data;
return 0;
}
-static int
+static int _GL_ATTRIBUTE_PURE
next_logical (const PedDisk* disk)
{
int i;
}
/* two's complement 32-bit checksum */
-static uint32_t
+static uint32_t _GL_ATTRIBUTE_PURE
_checksum (const uint32_t* base, size_t size)
{
uint32_t sum = 0;
return 1;
}
-static int
+static int _GL_ATTRIBUTE_PURE
dvh_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
{
DVHDiskData* dvh_disk_data = part->disk->disk_specific;
/* Return a 32-bit CRC of the contents of the buffer. */
-uint32_t
+uint32_t _GL_ATTRIBUTE_PURE
__efi_crc32(const void *buf, unsigned long len, uint32_t seed)
{
unsigned long i;
}
/* checks if 'mbr' is a protective MBR partition table */
-static inline int
+static inline int _GL_ATTRIBUTE_PURE
_pmbr_is_valid (const LegacyMBR_t *mbr)
{
int i;
return 1;
}
-static int
+static int _GL_ATTRIBUTE_PURE
gpt_partition_get_flag (const PedPartition *part, PedPartitionFlag flag)
{
GPTPartitionData *gpt_part_data;
return 1;
}
-static int
+static int _GL_ATTRIBUTE_PURE
_rawpart_has_driver (const MacRawPartition* raw_part, MacDiskData* mac_disk_data)
{
MacDeviceDriver *driverlist;
}
/* returns the first empty entry in the partition map */
-static int
+static int _GL_ATTRIBUTE_PURE
_get_first_empty_part_entry (PedDisk* disk, MacRawPartition* part_map)
{
MacDiskData* mac_disk_data = disk->disk_specific;
}
}
-static int
+static int _GL_ATTRIBUTE_PURE
mac_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
{
MacPartitionData* mac_data;
mac_data->volume_name [i] = 0;
}
-static const char*
+static const char* _GL_ATTRIBUTE_PURE
mac_partition_get_name (const PedPartition* part)
{
MacPartitionData* mac_data;
_ped_disk_free (disk);
}
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
chs_to_sector (const PedDevice* dev, int c, int h, int s)
{
PED_ASSERT (dev != NULL);
*s = (sector) % cyl_size % dev->hw_geom.sectors;
}
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
legacy_start (const PedDisk* disk, const PC98RawPartition* raw_part)
{
PED_ASSERT (disk != NULL);
raw_part->head, raw_part->sector);
}
-static PedSector
+static PedSector _GL_ATTRIBUTE_PURE
legacy_end (const PedDisk* disk, const PC98RawPartition* raw_part)
{
PED_ASSERT (disk != NULL);
}
}
-static int
+static int _GL_ATTRIBUTE_PURE
pc98_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
{
PC98PartitionData* pc98_data;
pc98_data->name [i] = 0;
}
-static const char*
+static const char* _GL_ATTRIBUTE_PURE
pc98_partition_get_name (const PedPartition* part)
{
PC98PartitionData* pc98_data;
free (current);
}
}
-static int
+static int _GL_ATTRIBUTE_PURE
_amiga_id_in_list (uint32_t id, struct AmigaIds *ids) {
struct AmigaIds *current;
}
return 1;
}
-static uint32_t
+static uint32_t _GL_ATTRIBUTE_PURE
_amiga_next_free_block(uint32_t *table, uint32_t start, uint32_t type) {
int i;
for (i = start; table[i] != type && table[i] != IDNAME_FREE; i++);
return i;
}
-static PedPartition *
+static PedPartition * _GL_ATTRIBUTE_PURE
_amiga_next_real_partition(const PedDisk *disk, PedPartition *part) {
PedPartition *next;
}
}
-static int
+static int _GL_ATTRIBUTE_PURE
amiga_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
{
struct PartitionBlock *partition;
}
-static int
+static int _GL_ATTRIBUTE_PURE
sun_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
{
SunPartitionData* sun_data;
*
* label: disk label name
*/
-int _implemented_disk_label (const char* label);
+int _implemented_disk_label (const char* label) _GL_ATTRIBUTE_PURE;
/* Test specific exception handler
*
#include <config.h>
#include <parted/parted.h>
#include <parted/debug.h>
+#include <parted/unit.h>
#include <ctype.h>
#include <stdio.h>
/**
* \brief Get the current default unit.
*/
-PedUnit
+PedUnit _GL_ATTRIBUTE_PURE
ped_unit_get_default ()
{
return default_unit;
/* Find non-number suffix. Eg: find_suffix("32Mb") returns a pointer to
* "Mb". */
-static char*
+static char* _GL_ATTRIBUTE_PURE
find_suffix (const char* str)
{
while (str[0] != 0 && (isdigit (str[0]) || strchr(",.-", str[0])))
}
}
-static int
+static int _GL_ATTRIBUTE_PURE
is_chs (const char* str)
{
int punct_count = 0;
#define MIN(a,b) ( (a<b)? a : b )
-int
+static int _GL_ATTRIBUTE_PURE
wchar_strlen (const wchar_t* str)
{
#ifdef ENABLE_NLS
#endif
}
-wchar_t*
+static wchar_t * _GL_ATTRIBUTE_PURE
wchar_strchr (const wchar_t* str, char ch)
{
#ifdef ENABLE_NLS
extern int str_list_match_node (const StrList* list, const char* str);
extern StrList* str_list_match (const StrList* list, const char* str);
-extern int str_list_length (const StrList* list);
+extern int str_list_length (const StrList* list) _GL_ATTRIBUTE_PURE;
#endif /* STRLIST_H_INCLUDED */
return line;
}
-static PedExceptionOption
+static PedExceptionOption _GL_ATTRIBUTE_PURE
option_get_next (PedExceptionOption options, PedExceptionOption current)
{
PedExceptionOption i;
return str_list_length (command_line);
}
-static int
+static int _GL_ATTRIBUTE_PURE
_str_is_spaces (const char* str)
{
while (isspace (*str))
extern char* command_line_pop_word ();
extern char* command_line_peek_word ();
extern void command_line_flush ();
-extern int command_line_get_word_count ();
+extern int command_line_get_word_count () _GL_ATTRIBUTE_PURE;
extern void command_line_prompt_words (const char* prompt, const char* def,
const StrList* possibilities,
int multi_word);