home *** CD-ROM | disk | FTP | other *** search
- #ifndef _PART_H
- #define _PART_H
-
- #include <conio.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <malloc.h>
-
- #include "conio.h"
- #include "diskio.h"
-
- struct part_rec
- {
- unsigned char boot_flag;
- unsigned char start_head;
- unsigned start_sect:6;
- unsigned start_cylH:2;
- unsigned char start_cylL;
- unsigned char os_id;
- unsigned char end_head;
- unsigned end_sect:6;
- unsigned end_cylH:2;
- unsigned char end_cylL;
- unsigned long rel_sect; /* Number os sectors before partition */
- unsigned long num_sect; /* Number of sectors in the partition */
- };
-
- struct mbr
- {
- unsigned char xcode[0x1BE];
- struct part_rec part_rec[4];
- unsigned short magic; /* Magic number (must be 0xAA55) */
- };
-
- struct part_long
- {
- int num;
- int active;
- int valid;
- int empty;
- int os_id;
- int os_num;
- unsigned long start_cyl;
- unsigned long start_head;
- unsigned long start_sect;
- unsigned long end_cyl;
- unsigned long end_head;
- unsigned long end_sect;
- unsigned long rel_sect;
- unsigned long num_sect;
- struct disk_addr *daddr;
- unsigned long container_base;
- };
-
- struct os_desc
- {
- int os_id;
- char *name;
- int (*setup)(struct disk_info *, struct part_long *);
- int (*format)(struct disk_info *, struct part_long *, char **argv, int (*func)(char*) );
- int (*printinfo)(struct disk_info *, struct part_long *);
- };
-
- struct ipl_desc
- {
- int ipl_id;
- int chk_sum;
- char *name;
- char *code;
- int (*setup)(int ipl_id, char *code);
- };
-
- #define OS_UNKN 300 /* Anything > 256 */
- #define OS_HIDDEN 255
-
- #define MODE_CHS 0
- #define MODE_LBA 1
-
- #define FORMAT_OK 0
- #define FORMAT_FAILED -1
- #define FORMAT_CANCEL -2
-
- #define NUM_MESSAGES 120
-
- void html_view(char *text, char *target);
- void html_dump(FILE *f, char *text, char *target);
-
- char *progress_bar(int percent);
-
- int disk_read_rel(struct disk_info *dinfo, struct part_long *p, unsigned long sect, void *buf, int num_sect);
- int disk_write_rel(struct disk_info *dinfo, struct part_long *p, unsigned long sect, void *buf, int num_sect);
-
- int generic_verify(struct disk_info *di, struct part_long *p, int bbt_size, unsigned long *bbt, int (*progress)(char*) );
- int generic_format(struct disk_info *di, struct part_long *p, int bbt_size, unsigned long *bbt, int (*progress)(char*) );
-
- void start_gui(void);
-
- int setup_mbr(struct disk_info *dinfo, struct part_long *p);
-
- int validate_table(struct disk_info *dinfo, struct part_long *part,
- struct part_long *container, int recalculate );
-
- int write_int(int attr, int x, int y, int w, unsigned long xx);
-
- void parse_arg(char *str, char **argv, int argv_size);
-
- char *sprintf_long(char *tmp, unsigned long num);
- char *sprintf_systype(char *tmp, int os_num);
- char *sprintf_os_name(char *tmp, struct part_long *);
- char *sprintf_partrec(char *tmp, struct part_long *);
-
- void detect_os_type(struct part_long *);
-
- void unpack_part(struct part_rec *pr, struct part_long *prl);
- void pack_part(struct part_long *prl, struct part_rec *pr);
-
- void show_error(char *);
- void select_system_type(struct part_long *p);
- int enter_string(int x, int y, char *prompt, int maxlen, char *name, char *help_target);
-
- void format_progress_init(void);
- int format_progress(char *msg);
- void format_progress_done(void);
-
- void copy_xcode(struct mbr *from, struct mbr *to);
- int save_to_file(char *filename, void *buf, int len);
- int load_from_file(char *filename, void *buf, int len);
-
- void usage(void);
- void command_line(int argc, char **argv);
-
- int print_mbr(struct disk_info *dinfo, struct part_long *p );
- int format_ext(struct disk_info *dinfo, struct part_long *p, char **argv,
- int (*progress)(char*) );
-
- int print_fat(struct disk_info *dinfo, struct part_long *p );
- int format_fat(struct disk_info *dinfo, struct part_long *p, char **argv,
- int (*progress)(char*) );
-
- void messages_eng(void);
-
-
- #ifdef _PART_C
- int mode;
- int interactive;
- char *message[NUM_MESSAGES];
-
- struct os_desc os_desc[] = {
-
- /* os_id, "123456789 123456789 123", setup, format, printinfo */
-
- { 0x00, "Unused", 0, 0, 0 },
- { 0x01, "DOS FAT-12", 0, format_fat, print_fat },
- { 0x04, "DOS FAT-16 (<=32Mb)", 0, format_fat, print_fat },
- { 0x05, "DOS Extended", setup_mbr, format_ext, print_mbr },
- { 0x06, "BIGDOS FAT-16 (>=32Mb)", 0, format_fat, print_fat },
- { 0x07, "Windows NT NTFS", 0, 0, 0 },
- { 0x0B, "Windows 95 FAT-32", 0, 0, 0 },
- { 0x0C, "Windows 95 FAT-32 (LBA)", 0, 0, 0 },
- { 0x0E, "LBA VFAT (BIGDOS/FAT16)", 0, 0, 0 },
- { 0x0F, "LBA VFAT (DOS Extended)", 0, 0, 0 },
- { 0x54, "OnTrack Disk Mgr (DDO)", 0, 0, 0 },
- { 0x63, "SCO UnixWare (386/ix)", 0, 0, 0 },
- { 0x81, "Linux", 0, 0, 0 },
- { 0x82, "Solaris x86", 0, 0, 0 },
- { 0xA5, "FreeBSD, BSD/386", 0, 0, 0 },
-
- { 0xFF, "Hidden (0xFF)", 0, 0, 0 },
- { OS_UNKN,"End of table trailer.", 0, 0, 0 }
- };
-
- #else
- extern int mode;
- extern int interactive;
- extern struct os_desc os_desc[];
- extern char *message[NUM_MESSAGES];
- #endif
-
-
- #define HEADER_MAIN (message[0])
- #define HEADER_GET (message[1])
- #define HEADER_HD (message[2])
- #define HEADER_EXT (message[3])
- #define HEADER_EXT2 (message[4])
- #define HEADER_READ (message[5])
- #define HEADER_SYSTYPE (message[6])
-
- #define HEADER_CHS (message[11])
- #define HEADER_CHS2 (message[12])
- #define HEADER_CHS3 (message[13])
-
- #define HEADER_LBA (message[14])
- #define HEADER_LBA2 (message[15])
- #define HEADER_LBA3 (message[16])
-
-
- #define MENU_HELP (message[21])
- #define MENU_SAVE (message[22])
- #define MENU_UNDO (message[23])
- #define MENU_MODE (message[24])
- #define MENU_DISK (message[25])
- #define MENU_QUIT (message[26])
-
- #define MENU_HIDE (message[31])
- #define MENU_FORMAT (message[32])
- #define MENU_VERIFY (message[33])
-
- #define MENU_SAVE_FILE (message[34])
- #define MENU_LOAD_FILE (message[35])
- #define MENU_INST_CODE (message[36])
-
- #define MENU_INSTALL (message[41])
- #define MENU_UNINSTALL (message[42])
-
- #define MENU_INST_EXT (message[43])
- #define MENU_MOVE_PRI (message[44])
-
- #define ERROR_MALLOC (message[51])
- #define ERROR_DISK_INFO (message[52])
- #define ERROR_READ_MBR (message[53])
- #define MESG_ONLY_1HD (message[54])
-
-
- #define HINT_ACTIVE (message[61])
- #define HINT_SYSTYPE (message[62])
- #define HINT_LOC_CHS (message[63])
- #define HINT_LOC_LBA (message[64])
-
- #define WARN_CONFLICT (message[65])
- #define ERROR_INVALID (message[66])
-
- #define WARN_WRITE_MBR (message[71])
- #define WARN_LOAD_FILE (message[72])
- #define WARN_SAVE_FILE (message[73])
-
- #define MESG_MBR_SAVED (message[74])
- #define MESG_INSTALL (message[75])
- #define MESG_UNINSTALL (message[76])
- #define MESG_FILE_SAVED (message[77])
- #define MESG_FILE_LOADED (message[78])
- #define MESG_NOT_SAVED (message[79])
-
- #define ERROR_NO_HELP (message[81])
- #define ERROR_NO_FORMAT (message[82])
- #define ERROR_NO_SETUP (message[83])
- #define ERROR_NO_PRINT (message[84])
-
- #define HELP_TEXT (message[91])
- #define PRESS_ESC (message[92])
- #define PROMPT_FILE (message[93])
- #define PROMPT_FORMAT (message[94])
- #define PROMPT_FSTYPE (message[95])
-
- #define MESG_VERIFYING (message[101])
- #define MESG_FORMATTING (message[102])
-
- #define MESG_FORMAT_OK (message[103])
- #define WARN_FORMAT_CANCEL (message[104])
- #define ERROR_FORMAT_FAILED (message[105])
-
- #define MESG_VERIFY_OK (message[106])
- #define WARN_VERIFY_CANCEL (message[107])
- #define ERROR_VERIFY_FAILED (message[108])
-
- #define ERROR_FIX_FIRST (message[111])
- #define ERROR_FORMAT_GEN (message[112])
- #define ERROR_FORMAT_WIN95 (message[113])
- #define ERROR_FORMAT_EMPTY (message[114])
- #define ERROR_FORMAT_FRACTION (message[115])
-
- #endif
-