/* fdisk.h */ #include "c.h" #define DEFAULT_SECTOR_SIZE 512 #define MAX_SECTOR_SIZE 2048 #define SECTOR_SIZE 512 /* still used in BSD code */ #define MAXIMUM_PARTS 60 #define ACTIVE_FLAG 0x80 #define EXTENDED 0x05 #define WIN98_EXTENDED 0x0f #define LINUX_PARTITION 0x81 #define LINUX_SWAP 0x82 #define LINUX_NATIVE 0x83 #define LINUX_EXTENDED 0x85 #define LINUX_LVM 0x8e #define LINUX_RAID 0xfd #define IS_EXTENDED(i) \ ((i) == EXTENDED || (i) == WIN98_EXTENDED || (i) == LINUX_EXTENDED) #define cround(n) (display_in_cyl_units ? ((n)/units_per_sector)+1 : (n)) #define scround(x) (((x)+units_per_sector-1)/units_per_sector) #if defined(__GNUC__) && (defined(__arm__) || defined(__alpha__)) # define PACKED __attribute__ ((packed)) #else # define PACKED #endif struct partition { unsigned char boot_ind; /* 0x80 - active */ unsigned char head; /* starting head */ unsigned char sector; /* starting sector */ unsigned char cyl; /* starting cylinder */ unsigned char sys_ind; /* What partition type */ unsigned char end_head; /* end head */ unsigned char end_sector; /* end sector */ unsigned char end_cyl; /* end cylinder */ unsigned char start4[4]; /* starting sector counting from 0 */ unsigned char size4[4]; /* nr of sectors in partition */ } PACKED; enum failure {usage, usage2, ioctl_error, unable_to_open, unable_to_read, unable_to_seek, unable_to_write, out_of_memory}; enum action {fdisk, require, try_only, create_empty_dos, create_empty_sun}; struct geom { unsigned int heads; unsigned int sectors; unsigned int cylinders; }; /* prototypes for fdisk.c */ extern char *disk_device, *line_ptr; extern int fd, partitions; extern unsigned int display_in_cyl_units, units_per_sector; extern void change_units(void); extern void fatal(enum failure why); extern void get_geometry(int fd, struct geom *); extern int get_boot(enum action what); extern int get_partition(int warn, int max); extern void list_types(struct systypes *sys); extern int read_line (void); extern char read_char(char *mesg); extern int read_hex(struct systypes *sys); extern void reread_partition_table(int leave); extern struct partition *get_part_table(int); extern int valid_part_table_flag(unsigned char *b); extern unsigned int read_int(unsigned int low, unsigned int dflt, unsigned int high, unsigned int base, char *mesg); extern unsigned char *MBRbuffer; extern void zeroize_mbr_buffer(void); extern unsigned int heads, cylinders, sector_size; extern unsigned long long sectors; extern char *partition_type(unsigned char type); extern void update_units(void); extern char read_chars(char *mesg); extern void set_changed(int); extern void set_all_unchanged(void); #define PLURAL 0 #define SINGULAR 1 extern const char * str_units(int); extern unsigned long long get_start_sect(struct partition *p); extern unsigned long long get_nr_sects(struct partition *p); extern int osf_label; extern int sun_label; extern int sgi_label; extern int aix_label; extern int mac_label; /* prototypes for fdiskbsdlabel.c */ extern void bselect(void); extern int check_osf_label(void); extern int btrydev(char * dev); extern void xbsd_print_disklabel(int); /* prototypes for fdisksgilabel.c */ extern int valid_part_table_flag(unsigned char *b); #define PROC_PARTITIONS "/proc/partitions"