/* * PSX-Tools Bundle Pack * Copyright (C) 2002 Nicolas "Pixel" Noble * * 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 * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __CDUTILS_H__ #define __CDUTILS_H__ #include "yazedc.h" #include "generic.h" #define GUESS 5 struct DirEntry { unsigned char R; unsigned char NExt; unsigned long Sector; unsigned long BESector; unsigned long Size; unsigned long BESize; unsigned char Year; unsigned char Month; unsigned char Day; unsigned char Hour; unsigned char Minute; unsigned char Second; unsigned char Offset; unsigned char Flags; unsigned char FileUnit; unsigned char FileGap; unsigned short VolSeq; unsigned short BEVolSeq; unsigned char N; char id; } PACKED; extern struct DirEntry rootDir; extern long sec_sizes[]; extern long sec_offsts[]; extern char * sec_modes[]; FILE * open_ppf(char * ppf, FILE * iso, char * comment); FILE * open_ppf(char * ppf, int iso, char * comment); unsigned short int swap_word(unsigned short int i); unsigned long int swap_dword(unsigned long int i); int guess_type(FILE * f_iso, int number); int guess_type(int f_iso, int number); void sector_seek(FILE * f_iso, long sector); void sector_seek(int f_iso, long sector); long read_sector(FILE * f_iso, unsigned char * buffer, char type, int number = -1); long read_sector(int f_iso, unsigned char * buffer, char type, int number = -1); void read_datas(FILE * f_iso, unsigned char * buffer, int type, int number, long size); void read_datas(int f_iso, unsigned char * buffer, int type, int number, long size); void read_file(FILE * f_iso, FILE * file, char type, int number, long size); void read_file(int f_iso, int file, char type, int number, long size); void write_sector(FILE * f_iso_r, FILE * f_iso_w, unsigned char * buffer, char type, int number = -1); void write_sector(int f_iso_r, int f_iso_w, unsigned char * buffer, char type, int number = -1); void write_datas(FILE * f_iso_r, FILE * f_iso_w, unsigned char * buffer, char type, int number, long size); void write_datas(int f_iso_r, int f_iso_w, unsigned char * buffer, char type, int number, long size); void write_file(FILE * f_iso_r, FILE * f_iso_w, FILE * file, char type, int number = -1); void write_file(int f_iso_r, int f_iso_w, int file, char type, int number = -1); int get_iso_infos(FILE * h); int get_iso_infos(int h); int show_iso_infos(FILE * h); int show_iso_infos(int h); int get_pt_infos(FILE * h); int get_pt_infos(int h); int show_pt_infos(FILE * h); int show_pt_infos(int h); struct DirEntry find_path(FILE * h, char * path); struct DirEntry find_path(int h, char * path); struct DirEntry find_parent(FILE * h, char * path); struct DirEntry find_parent(int h, char * path); void show_head_entry(void); int show_entry(struct DirEntry * dir); int show_dir(FILE * h, struct DirEntry * dir); int show_dir(int h, struct DirEntry * dir); struct DirEntry find_dir_entry(FILE * h, struct DirEntry * dir, char * name); struct DirEntry find_dir_entry(int h, struct DirEntry * dir, char * name); struct DirEntry * find_dir_entry(FILE * h, unsigned char ** buffer, struct DirEntry * dir, char * name); struct DirEntry * find_dir_entry(int h, unsigned char ** buffer, struct DirEntry * dir, char * name); unsigned char from_BCD(unsigned char x); unsigned char to_BCD(unsigned char x); int is_valid_BCD(unsigned char x); unsigned long from_MSF(unsigned long msf, unsigned long start = 150); unsigned long from_MSF(unsigned char m, unsigned char s, unsigned char f, unsigned long start = 150); #endif