5 #define DEFAULT_SECTOR_SIZE 512
6 #define MAX_SECTOR_SIZE 2048
7 #define SECTOR_SIZE 512 /* still used in BSD code */
8 #define MAXIMUM_PARTS 60
10 #define ACTIVE_FLAG 0x80
13 #define WIN98_EXTENDED 0x0f
14 #define LINUX_PARTITION 0x81
15 #define LINUX_SWAP 0x82
16 #define LINUX_NATIVE 0x83
17 #define LINUX_EXTENDED 0x85
18 #define LINUX_LVM 0x8e
19 #define LINUX_RAID 0xfd
21 #define IS_EXTENDED(i) \
22 ((i) == EXTENDED || (i) == WIN98_EXTENDED || (i) == LINUX_EXTENDED)
24 #define SIZE(a) (sizeof(a)/sizeof((a)[0]))
26 #define cround(n) (display_in_cyl_units ? ((n)/units_per_sector)+1 : (n))
27 #define scround(x) (((x)+units_per_sector-1)/units_per_sector)
29 #if defined(__GNUC__) && (defined(__arm__) || defined(__alpha__))
30 # define PACKED __attribute__ ((packed))
36 unsigned char boot_ind; /* 0x80 - active */
37 unsigned char head; /* starting head */
38 unsigned char sector; /* starting sector */
39 unsigned char cyl; /* starting cylinder */
40 unsigned char sys_ind; /* What partition type */
41 unsigned char end_head; /* end head */
42 unsigned char end_sector; /* end sector */
43 unsigned char end_cyl; /* end cylinder */
44 unsigned char start4[4]; /* starting sector counting from 0 */
45 unsigned char size4[4]; /* nr of sectors in partition */
48 enum failure {usage, usage2, ioctl_error,
49 unable_to_open, unable_to_read, unable_to_seek,
50 unable_to_write, out_of_memory};
52 enum action {fdisk, require, try_only, create_empty_dos, create_empty_sun};
57 unsigned int cylinders;
60 /* prototypes for fdisk.c */
61 extern char *disk_device, *line_ptr;
62 extern int fd, partitions;
63 extern unsigned int display_in_cyl_units, units_per_sector;
64 extern void change_units(void);
65 extern void fatal(enum failure why);
66 extern void get_geometry(int fd, struct geom *);
67 extern int get_boot(enum action what);
68 extern int get_partition(int warn, int max);
69 extern void list_types(struct systypes *sys);
70 extern int read_line (void);
71 extern char read_char(char *mesg);
72 extern int read_hex(struct systypes *sys);
73 extern void reread_partition_table(int leave);
74 extern struct partition *get_part_table(int);
75 extern int valid_part_table_flag(unsigned char *b);
76 extern unsigned int read_int(unsigned int low, unsigned int dflt,
77 unsigned int high, unsigned int base, char *mesg);
79 extern unsigned char MBRbuffer[MAX_SECTOR_SIZE];
80 extern unsigned int heads, cylinders, sector_size;
81 extern unsigned long long sectors;
82 extern char *partition_type(unsigned char type);
83 extern void update_units(void);
84 extern char read_chars(char *mesg);
85 extern void set_changed(int);
86 extern void set_all_unchanged(void);
90 extern const char * str_units(int);
92 extern unsigned long long get_start_sect(struct partition *p);
93 extern unsigned long long get_nr_sects(struct partition *p);
101 /* prototypes for fdiskbsdlabel.c */
102 extern void bselect(void);
103 extern int check_osf_label(void);
104 extern int btrydev(char * dev);
105 extern void xbsd_print_disklabel(int);
107 /* prototypes for fdisksgilabel.c */
108 extern int valid_part_table_flag(unsigned char *b);
110 #define PROC_PARTITIONS "/proc/partitions"