Replacing file descriptor read/write calls with FILE fread/fwrite calls for a little more standard portability.

This commit is contained in:
David Schmidt 2010-04-18 03:06:51 +00:00
parent 5f858c9e94
commit 13183e4ce7
9 changed files with 114 additions and 135 deletions

View File

@ -707,7 +707,7 @@ config_load_roms()
int more_than_8mb; int more_than_8mb;
int changed_rom; int changed_rom;
int len; int len;
int fd; FILE *file;
int ret; int ret;
int i; int i;
@ -724,18 +724,18 @@ config_load_roms()
g_config_control_panel = 1; g_config_control_panel = 1;
return; return;
} }
fd = open(&g_cfg_tmp_path[0], O_RDONLY | O_BINARY); file = fopen(&g_cfg_tmp_path[0], "rb");
if(fd < 0) { if(!file) {
fatal_printf("Open ROM file %s failed:%d, errno:%d\n", fatal_printf("Open ROM file %s failed; errno:%d\n",
&g_cfg_tmp_path[0], fd, errno); &g_cfg_tmp_path[0], errno);
g_config_control_panel = 1; g_config_control_panel = 1;
return; return;
} }
ret = fstat(fd, &stat_buf); ret = stat(&g_cfg_tmp_path[0], &stat_buf);
if(ret != 0) { if(ret != 0) {
fatal_printf("fstat returned %d on fd %d, errno: %d\n", fatal_printf("stat returned %d; errno: %d\n",
ret, fd, errno); ret, errno);
g_config_control_panel = 1; g_config_control_panel = 1;
return; return;
} }
@ -746,11 +746,11 @@ config_load_roms()
g_mem_size_base = 256*1024; g_mem_size_base = 256*1024;
memset(&g_rom_fc_ff_ptr[0], 0, 2*65536); memset(&g_rom_fc_ff_ptr[0], 0, 2*65536);
/* Clear banks fc and fd to 0 */ /* Clear banks fc and fd to 0 */
ret = read(fd, &g_rom_fc_ff_ptr[2*65536], len); ret = fread(&g_rom_fc_ff_ptr[2*65536], 1, len, file);
} else if(len == 256*1024) { } else if(len == 256*1024) {
g_rom_version = 3; g_rom_version = 3;
g_mem_size_base = 1024*1024; g_mem_size_base = 1024*1024;
ret = read(fd, &g_rom_fc_ff_ptr[0], len); ret = fread(&g_rom_fc_ff_ptr[0], 1, len, file);
} else { } else {
fatal_printf("The ROM size should be 128K or 256K, this file " fatal_printf("The ROM size should be 128K or 256K, this file "
"is %d bytes\n", len); "is %d bytes\n", len);
@ -764,7 +764,7 @@ config_load_roms()
g_config_control_panel = 1; g_config_control_panel = 1;
return; return;
} }
close(fd); fclose(file);
memset(&g_rom_cards_ptr[0], 0, 256*16); memset(&g_rom_cards_ptr[0], 0, 256*16);
@ -795,16 +795,15 @@ config_load_roms()
names_ptr); names_ptr);
if(g_cfg_tmp_path[0] != 0) { if(g_cfg_tmp_path[0] != 0) {
fd = open(&(g_cfg_tmp_path[0]), O_RDONLY | O_BINARY); file = fopen(&(g_cfg_tmp_path[0]), "rb");
if(fd < 0) { if(!file) {
fatal_printf("Open card ROM file %s failed: %d " fatal_printf("Open card ROM file %s failed; errno:%d\n",
"err:%d\n", &g_cfg_tmp_path[0], fd, &g_cfg_tmp_path[0], errno);
errno);
continue; continue;
} }
len = 256; len = 256;
ret = read(fd, &g_rom_cards_ptr[i*0x100], len); ret = fread(&g_rom_cards_ptr[i*0x100], 1, len, file);
if(ret != len) { if(ret != len) {
fatal_printf("While reading card ROM %s, file " fatal_printf("While reading card ROM %s, file "
@ -812,8 +811,7 @@ config_load_roms()
"read %d bytes\n", errno, len, ret); "read %d bytes\n", errno, len, ret);
continue; continue;
} }
close(fd); fclose(file);
fd = 0;
} }
} }
@ -1105,7 +1103,7 @@ config_generate_config_kegs_name(char *outstr, int maxlen, Disk *dsk,
str = outstr; str = outstr;
if(with_extras && dsk->fd < 0) { if(with_extras && (!dsk->file)) {
snprintf(str, maxlen - (str - outstr), "#"); snprintf(str, maxlen - (str - outstr), "#");
str = &outstr[strlen(outstr)]; str = &outstr[strlen(outstr)];
} }
@ -1265,7 +1263,7 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
dsk->just_ejected = 0; dsk->just_ejected = 0;
dsk->force_size = force_size; dsk->force_size = force_size;
if(dsk->fd >= 0) { if(!dsk->file) {
eject_disk(dsk); eject_disk(dsk);
} }
@ -1304,11 +1302,11 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
if(ejected) { if(ejected) {
/* just get out of here */ /* just get out of here */
dsk->fd = -1; dsk->file = 0;
return; return;
} }
dsk->fd = -1; dsk->file = 0;
can_write = 1; can_write = 1;
if((name_len > 3) && (strcmp(&name_ptr[name_len - 3], ".gz") == 0)) { if((name_len > 3) && (strcmp(&name_ptr[name_len - 3], ".gz") == 0)) {
@ -1334,9 +1332,8 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
ret = system(system_str); ret = system(system_str);
if(ret == 0) { if(ret == 0) {
/* successfully ran */ /* successfully ran */
dsk->fd = open(uncomp_ptr, O_RDONLY | O_BINARY, 0x1b6); dsk->file = fopen(uncomp_ptr, "rb");
iwm_printf("Opening .gz file %s is fd: %d\n", iwm_printf("Opening .gz file %s\n", uncomp_ptr);
uncomp_ptr, dsk->fd);
/* and, unlink the temporary file */ /* and, unlink the temporary file */
(void)unlink(uncomp_ptr); (void)unlink(uncomp_ptr);
@ -1348,20 +1345,18 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
name_len -= 3; name_len -= 3;
} }
if(dsk->fd < 0 && can_write) { if((!dsk->file) && can_write) {
dsk->fd = open(name_ptr, O_RDWR | O_BINARY, 0x1b6); dsk->file = fopen(name_ptr, "rb+");
} }
if(dsk->fd < 0 && can_write) { if((!dsk->file) && can_write) {
printf("Trying to open %s read-only, errno: %d\n", name_ptr, printf("Trying to open %s read-only, errno: %d\n", name_ptr,
errno); errno);
dsk->fd = open(name_ptr, O_RDONLY | O_BINARY, 0x1b6); dsk->file = fopen(name_ptr, "rb");
can_write = 0; can_write = 0;
} }
iwm_printf("open returned: %d\n", dsk->fd); if(!dsk->file) {
if(dsk->fd < 0) {
fatal_printf("Disk image %s does not exist!\n", name_ptr); fatal_printf("Disk image %s does not exist!\n", name_ptr);
return; return;
} }
@ -1379,10 +1374,10 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
dsk->image_start = 0; dsk->image_start = 0;
/* See if it is in 2IMG format */ /* See if it is in 2IMG format */
ret = read(dsk->fd, (char *)&buf_2img[0], 512); ret = fread((char *)&buf_2img[0], 1, 512, dsk->file);
size = force_size; size = force_size;
if(size <= 0) { if(size <= 0) {
size = cfg_get_fd_size(dsk->fd); size = cfg_get_fd_size(name_ptr);
} }
/* Try to guess that there is a Mac Binary header of 128 bytes */ /* Try to guess that there is a Mac Binary header of 128 bytes */
@ -1483,14 +1478,14 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
g_highest_smartport_unit); g_highest_smartport_unit);
if(partition_name != 0 || part_num >= 0) { if(partition_name != 0 || part_num >= 0) {
ret = cfg_partition_find_by_name_or_num(dsk->fd, ret = cfg_partition_find_by_name_or_num(dsk->file,
partition_name, part_num, dsk); partition_name, part_num, dsk);
printf("partition %s (num %d) mounted, wr_prot: %d\n", printf("partition %s (num %d) mounted, wr_prot: %d\n",
partition_name, part_num, dsk->write_prot); partition_name, part_num, dsk->write_prot);
if(ret < 0) { if(ret < 0) {
close(dsk->fd); fclose(dsk->file);
dsk->fd = -1; dsk->file = 0;
return; return;
} }
} }
@ -1546,7 +1541,7 @@ void
eject_named_disk(Disk *dsk, const char *name, const char *partition_name) eject_named_disk(Disk *dsk, const char *name, const char *partition_name)
{ {
if(dsk->fd < 0) { if(!dsk->file) {
return; return;
} }
@ -1581,7 +1576,7 @@ eject_disk(Disk *dsk)
int motor_on; int motor_on;
int i; int i;
if(dsk->fd < 0) { if(!dsk->file) {
return; return;
} }
@ -1616,7 +1611,7 @@ eject_disk(Disk *dsk)
dsk->trks = 0; dsk->trks = 0;
/* close file, clean up dsk struct */ /* close file, clean up dsk struct */
close(dsk->fd); fclose(dsk->file);
dsk->image_start = 0; dsk->image_start = 0;
dsk->image_size = 0; dsk->image_size = 0;
@ -1624,22 +1619,22 @@ eject_disk(Disk *dsk)
dsk->disk_dirty = 0; dsk->disk_dirty = 0;
dsk->write_through_to_unix = 0; dsk->write_through_to_unix = 0;
dsk->write_prot = 1; dsk->write_prot = 1;
dsk->fd = -1; dsk->file = 0;
dsk->just_ejected = 1; dsk->just_ejected = 1;
/* Leave name_ptr valid */ /* Leave name_ptr valid */
} }
int int
cfg_get_fd_size(int fd) cfg_get_fd_size(char *filename)
{ {
struct stat stat_buf; struct stat stat_buf;
int ret; int ret;
ret = fstat(fd, &stat_buf); ret = stat(filename, &stat_buf);
if(ret != 0) { if(ret != 0) {
fprintf(stderr,"fstat returned %d on fd %d, errno: %d\n", fprintf(stderr,"stat %s returned errno: %d\n",
ret, fd, errno); filename, errno);
stat_buf.st_size = 0; stat_buf.st_size = 0;
} }
@ -1647,18 +1642,18 @@ cfg_get_fd_size(int fd)
} }
int int
cfg_partition_read_block(int fd, void *buf, int blk, int blk_size) cfg_partition_read_block(FILE *file, void *buf, int blk, int blk_size)
{ {
int ret; int ret;
ret = lseek(fd, blk * blk_size, SEEK_SET); ret = fseek(file, blk * blk_size, SEEK_SET);
if(ret != blk * blk_size) { if(ret != 0) {
printf("lseek: %08x, wanted: %08x, errno: %d\n", ret, printf("fseek: wanted: %08x, errno: %d\n",
blk * blk_size, errno); blk * blk_size, errno);
return 0; return 0;
} }
ret = read(fd, (char *)buf, blk_size); ret = fread((char *)buf, 1, blk_size, file);
if(ret != blk_size) { if(ret != blk_size) {
printf("ret: %08x, wanted %08x, errno: %d\n", ret, blk_size, printf("ret: %08x, wanted %08x, errno: %d\n", ret, blk_size,
errno); errno);
@ -1668,7 +1663,7 @@ cfg_partition_read_block(int fd, void *buf, int blk, int blk_size)
} }
int int
cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num, cfg_partition_find_by_name_or_num(FILE *file, const char *partnamestr, int part_num,
Disk *dsk) Disk *dsk)
{ {
Cfg_dirent *direntptr; Cfg_dirent *direntptr;
@ -1676,7 +1671,7 @@ cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num,
int num_parts; int num_parts;
int i; int i;
num_parts = cfg_partition_make_list(fd); num_parts = cfg_partition_make_list(dsk->name_ptr, file);
if(num_parts <= 0) { if(num_parts <= 0) {
return -1; return -1;
@ -1711,7 +1706,7 @@ cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num,
} }
int int
cfg_partition_make_list(int fd) cfg_partition_make_list(char *filename, FILE *file)
{ {
Driver_desc *driver_desc_ptr; Driver_desc *driver_desc_ptr;
Part_map *part_map_ptr; Part_map *part_map_ptr;
@ -1734,7 +1729,7 @@ cfg_partition_make_list(int fd)
blk_bufptr = (word32 *)malloc(MAX_PARTITION_BLK_SIZE); blk_bufptr = (word32 *)malloc(MAX_PARTITION_BLK_SIZE);
cfg_partition_read_block(fd, blk_bufptr, 0, block_size); cfg_partition_read_block(file, blk_bufptr, 0, block_size);
driver_desc_ptr = (Driver_desc *)blk_bufptr; driver_desc_ptr = (Driver_desc *)blk_bufptr;
sig = GET_BE_WORD16(driver_desc_ptr->sig); sig = GET_BE_WORD16(driver_desc_ptr->sig);
@ -1751,13 +1746,13 @@ cfg_partition_make_list(int fd)
map_blks = 1; map_blks = 1;
cur_blk = 0; cur_blk = 0;
size = cfg_get_fd_size(fd); size = cfg_get_fd_size(filename);
cfg_file_add_dirent(&g_cfg_partitionlist, "None - Whole image", cfg_file_add_dirent(&g_cfg_partitionlist, "None - Whole image",
is_dir=0, size, 0, -1); is_dir=0, size, 0, -1);
while(cur_blk < map_blks) { while(cur_blk < map_blks) {
cur_blk++; cur_blk++;
cfg_partition_read_block(fd, blk_bufptr, cur_blk, block_size); cfg_partition_read_block(file, blk_bufptr, cur_blk, block_size);
part_map_ptr = (Part_map *)blk_bufptr; part_map_ptr = (Part_map *)blk_bufptr;
sig = GET_BE_WORD16(part_map_ptr->sig); sig = GET_BE_WORD16(part_map_ptr->sig);
if(cur_blk <= 1) { if(cur_blk <= 1) {
@ -1809,16 +1804,16 @@ int
cfg_maybe_insert_disk(int slot, int drive, const char *namestr) cfg_maybe_insert_disk(int slot, int drive, const char *namestr)
{ {
int num_parts; int num_parts;
int fd; FILE *file;
fd = open(namestr, O_RDONLY | O_BINARY, 0x1b6); file = fopen(namestr, "rb");
if(fd < 0) { if(!file) {
fatal_printf("Cannot open disk image: %s\n", namestr); fatal_printf("Cannot open disk image: %s\n", namestr);
return 0; return 0;
} }
num_parts = cfg_partition_make_list(fd); num_parts = cfg_partition_make_list((char*)namestr, file);
close(fd); fclose(file);
if(num_parts > 0) { if(num_parts > 0) {
printf("Choose a partition\n"); printf("Choose a partition\n");

View File

@ -877,12 +877,9 @@ get_remaining_operands(word32 addr, word32 opcode, word32 psr, Fplus *fplus_ptr)
check_breakpoints(addr); \ check_breakpoints(addr); \
} \ } \
if((addr & 0xfffff0) == 0x00c700) { \ if((addr & 0xfffff0) == 0x00c700) { \
/* Removing this as it causes non-standard \
booting behavior... \
if(addr == 0xc700) { \ if(addr == 0xc700) { \
FINISH(RET_C700, 0); \ FINISH(RET_C700, 0); \
} else \ } else \
*/ \
if(addr == 0xc70a) { \ if(addr == 0xc70a) { \
FINISH(RET_C70A, 0); \ FINISH(RET_C70A, 0); \
} else if(addr == 0xc70d) { \ } else if(addr == 0xc70d) { \

View File

@ -101,7 +101,7 @@ iwm_init_drive(Disk *dsk, int smartport, int drive, int disk_525)
dsk->name_ptr = 0; dsk->name_ptr = 0;
dsk->partition_name = 0; dsk->partition_name = 0;
dsk->partition_num = -1; dsk->partition_num = -1;
dsk->fd = -1; dsk->file = 0;
dsk->force_size = 0; dsk->force_size = 0;
dsk->image_start = 0; dsk->image_start = 0;
dsk->image_size = 0; dsk->image_size = 0;
@ -284,14 +284,14 @@ iwm_flush_disk_to_unix(Disk *dsk)
break; break;
} }
ret = lseek(dsk->fd, unix_pos, SEEK_SET); ret = fseek(dsk->file, unix_pos, SEEK_SET);
if(ret != unix_pos) { if(ret != 0) {
halt_printf("lseek 525: %08x, errno: %d\n", ret, errno); halt_printf("fseek 525: errno: %d\n", errno);
} }
ret = write(dsk->fd, &(buffer[0]), unix_len); ret = fwrite(&(buffer[0]), 1, unix_len, dsk->file);
if(ret != unix_len) { if(ret != unix_len) {
printf("write: %08x, errno:%d, qtrk: %02x, disk: %s\n", printf("fwrite: %08x, errno:%d, qtrk: %02x, disk: %s\n",
ret, errno, j, dsk->name_ptr); ret, errno, j, dsk->name_ptr);
} }
} }
@ -356,8 +356,8 @@ iwm_show_stats()
iwm.drive_select, g_c031_disk35, iwm.drive_select, g_c031_disk35,
iwm.iwm_phase[0], iwm.iwm_phase[1], iwm.iwm_phase[2], iwm.iwm_phase[0], iwm.iwm_phase[1], iwm.iwm_phase[2],
iwm.iwm_phase[3]); iwm.iwm_phase[3]);
printf("iwm.drive525[0].fd: %d, [1].fd: %d\n", printf("iwm.drive525[0].file: %p, [1].file: %p\n",
iwm.drive525[0].fd, iwm.drive525[1].fd); iwm.drive525[0].file, iwm.drive525[1].file);
printf("iwm.drive525[0].last_phase: %d, [1].last_phase: %d\n", printf("iwm.drive525[0].last_phase: %d, [1].last_phase: %d\n",
iwm.drive525[0].last_phase, iwm.drive525[1].last_phase); iwm.drive525[0].last_phase, iwm.drive525[1].last_phase);
} }
@ -1730,14 +1730,14 @@ disk_unix_to_nib(Disk *dsk, int qtr_track, int unix_pos, int unix_len,
} }
if(unix_pos >= 0) { if(unix_pos >= 0) {
ret = lseek(dsk->fd, unix_pos, SEEK_SET); ret = fseek(dsk->file, unix_pos, SEEK_SET);
if(ret != unix_pos) { if(ret != 0) {
printf("lseek of disk %s len 0x%x ret: %d, errno: %d\n", printf("fseek of disk %s len 0x%x errno: %d\n",
dsk->name_ptr, unix_pos, ret, errno); dsk->name_ptr, unix_pos, errno);
must_clear_track = 1; must_clear_track = 1;
} }
len = read(dsk->fd, track_buf, unix_len); len = fread(track_buf, 1, unix_len, dsk->file);
if(len != unix_len) { if(len != unix_len) {
printf("read of disk %s q_trk %d ret: %d, errno: %d\n", printf("read of disk %s q_trk %d ret: %d, errno: %d\n",
dsk->name_ptr, qtr_track, ret, errno); dsk->name_ptr, qtr_track, ret, errno);

View File

@ -19,10 +19,6 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#ifdef INCLUDE_RCSID_C
const char rcsid_iwm_h[] = "@(#)$KmKId: iwm.h,v 1.14 2004-10-20 17:29:38-04 kentd Exp $";
#endif
#define MAX_TRACKS (2*80) #define MAX_TRACKS (2*80)
#define MAX_C7_DISKS 32 #define MAX_C7_DISKS 32
@ -50,7 +46,7 @@ struct _Disk {
char *name_ptr; char *name_ptr;
char *partition_name; char *partition_name;
int partition_num; int partition_num;
int fd; FILE *file;
int force_size; int force_size;
int image_start; int image_start;
int image_size; int image_size;

View File

@ -19,10 +19,6 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#ifdef INCLUDE_IWM_RCSID_C
const char rcsdif_iwm_35_525_h[] = "@(#)$KmKId: iwm_35_525.h,v 1.14 2004-12-01 19:45:02-05 kentd Exp $";
#endif
int int
IWM_READ_ROUT (Disk *dsk, int fast_disk_emul, double dcycs) IWM_READ_ROUT (Disk *dsk, int fast_disk_emul, double dcycs)
{ {
@ -238,9 +234,9 @@ IWM_WRITE_ROUT (Disk *dsk, word32 val, int fast_disk_emul, double dcycs)
int sdiff; int sdiff;
int prev_bits; int prev_bits;
if(dsk->fd < 0 || dsk->trks == 0) { if((!dsk->file) || dsk->trks == 0) {
halt_printf("Tried to write to type: %d, drive: %d, fd: %d!\n", halt_printf("Tried to write to type: %d, drive: %d!\n",
IWM_DISK_525, dsk->drive, dsk->fd, dsk->trks); IWM_DISK_525, dsk->drive, dsk->trks);
return; return;
} }

View File

@ -19,10 +19,6 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#ifdef INCLUDE_RCSID_C
const char rcsid_protos_h[] = "@(#)$KmKId: protos.h,v 1.188 2004-12-06 19:08:34-05 kentd Exp $";
#endif
/* xdriver.c and macdriver.c and windriver.c */ /* xdriver.c and macdriver.c and windriver.c */
int x_show_alert(int is_fatal, const char *str); int x_show_alert(int is_fatal, const char *str);
int win_nonblock_read_stdin(int fd, char *bufptr, int len); int win_nonblock_read_stdin(int fd, char *bufptr, int len);
@ -174,12 +170,12 @@ void insert_disk(int slot, int drive, const char *name, int ejected, int force_s
void eject_named_disk(Disk *dsk, const char *name, const char *partition_name); void eject_named_disk(Disk *dsk, const char *name, const char *partition_name);
void eject_disk_by_num(int slot, int drive); void eject_disk_by_num(int slot, int drive);
void eject_disk(Disk *dsk); void eject_disk(Disk *dsk);
int cfg_get_fd_size(int fd); int cfg_get_fd_size(char *filename);
int cfg_partition_read_block(int fd, void *buf, int blk, int blk_size); int cfg_partition_read_block(FILE *file, void *buf, int blk, int blk_size);
int cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num, Disk *dsk); int cfg_partition_find_by_name_or_num(FILE *file, const char *partnamestr, int part_num, Disk *dsk);
int cfg_partition_make_list(int fd);
int cfg_maybe_insert_disk(int slot, int drive, const char *namestr); int cfg_maybe_insert_disk(int slot, int drive, const char *namestr);
int cfg_stat(char *path, struct stat *sb); int cfg_stat(char *path, struct stat *sb);
int cfg_partition_make_list(char *filename, FILE *file);
void cfg_htab_vtab(int x, int y); void cfg_htab_vtab(int x, int y);
void cfg_home(void); void cfg_home(void);
void cfg_cleol(void); void cfg_cleol(void);

View File

@ -218,7 +218,7 @@ do_c70d(word32 arg0)
return; return;
} else if(unit > 0 && status_code == 0) { } else if(unit > 0 && status_code == 0) {
/* status for unit x */ /* status for unit x */
if(unit > MAX_C7_DISKS || iwm.smartport[unit-1].fd < 0){ if(unit > MAX_C7_DISKS || (!iwm.smartport[unit-1].file)){
stat_val = 0x80; stat_val = 0x80;
size = 0; size = 0;
} else { } else {
@ -242,7 +242,7 @@ do_c70d(word32 arg0)
disk_printf("just finished unit %d, stat 0\n", unit); disk_printf("just finished unit %d, stat 0\n", unit);
return; return;
} else if(status_code == 3) { } else if(status_code == 3) {
if(unit > MAX_C7_DISKS || iwm.smartport[unit-1].fd < 0){ if(unit > MAX_C7_DISKS || (!iwm.smartport[unit-1].file)){
stat_val = 0x80; stat_val = 0x80;
size = 0; size = 0;
} else { } else {
@ -535,8 +535,8 @@ do_read_c7(int unit_num, word32 buf, int blk)
register word32 start_time; register word32 start_time;
register word32 end_time; register word32 end_time;
word32 val; word32 val;
FILE *file;
int len; int len;
int fd;
int image_start; int image_start;
int image_size; int image_size;
int ret; int ret;
@ -548,11 +548,11 @@ do_read_c7(int unit_num, word32 buf, int blk)
return 0x28; return 0x28;
} }
fd = iwm.smartport[unit_num].fd; file = iwm.smartport[unit_num].file;
image_start = iwm.smartport[unit_num].image_start; image_start = iwm.smartport[unit_num].image_start;
image_size = iwm.smartport[unit_num].image_size; image_size = iwm.smartport[unit_num].image_size;
if(fd < 0) { if(!file) {
printf("c7_fd == %d!\n", fd); printf("c7_file is null!\n");
#if 0 #if 0
if(blk != 2 && blk != 0) { if(blk != 2 && blk != 0) {
/* don't print error if only reading directory */ /* don't print error if only reading directory */
@ -563,23 +563,23 @@ do_read_c7(int unit_num, word32 buf, int blk)
return 0x2f; return 0x2f;
} }
ret = lseek(fd, image_start + blk*0x200, SEEK_SET); ret = fseek(file, image_start + blk*0x200, SEEK_SET);
if(ret != image_start + blk*0x200) { if(ret != 0) {
halt_printf("lseek returned %08x, errno: %d\n", ret, errno); halt_printf("fseek errno: %d\n", errno);
smartport_error(); smartport_error();
return 0x27; return 0x27;
} }
if(ret >= image_start + image_size) { if(image_start + blk*0x200 > image_start + image_size) {
halt_printf("Tried to read from pos %08x on disk, (blk:%04x)\n", halt_printf("Tried to read from pos %08x on disk, (blk:%04x)\n",
ret, blk); image_start + blk*0x200, blk);
smartport_error(); smartport_error();
return 0x27; return 0x27;
} }
len = read(fd, &local_buf[0], 0x200); len = fread(&local_buf[0], 1, 0x200, file);
if(len != 0x200) { if(len != 0x200) {
printf("read returned %08x, errno:%d, blk:%04x, unit: %02x\n", printf("fread returned %08x, errno:%d, blk:%04x, unit: %02x\n",
len, errno, blk, unit_num); len, errno, blk, unit_num);
halt_printf("name: %s\n", iwm.smartport[unit_num].name_ptr); halt_printf("name: %s\n", iwm.smartport[unit_num].name_ptr);
smartport_error(); smartport_error();
@ -616,9 +616,9 @@ do_write_c7(int unit_num, word32 buf, int blk)
word32 *ptr; word32 *ptr;
word32 val1, val2; word32 val1, val2;
word32 val; word32 val;
FILE *file;
int len; int len;
int ret; int ret;
int fd;
int image_start; int image_start;
int image_size; int image_size;
int i; int i;
@ -630,11 +630,11 @@ do_write_c7(int unit_num, word32 buf, int blk)
} }
dsk = &(iwm.smartport[unit_num]); dsk = &(iwm.smartport[unit_num]);
fd = dsk->fd; file = dsk->file;
image_start = dsk->image_start; image_start = dsk->image_start;
image_size = dsk->image_size; image_size = dsk->image_size;
if(fd < 0) { if(!file) {
halt_printf("c7_fd == %d!\n", fd); halt_printf("c7_file is null!\n");
smartport_error(); smartport_error();
return 0x28; return 0x28;
} }
@ -653,14 +653,14 @@ do_write_c7(int unit_num, word32 buf, int blk)
*ptr++ = val; *ptr++ = val;
} }
ret = lseek(fd, image_start + blk*0x200, SEEK_SET); ret = fseek(file, image_start + blk*0x200, SEEK_SET);
if(ret != image_start + blk*0x200) { if(ret != 0) {
halt_printf("lseek returned %08x, errno: %d\n", ret, errno); halt_printf("fseek errno: %d\n", errno);
smartport_error(); smartport_error();
return 0x27; return 0x27;
} }
if(ret >= image_start + image_size) { if(image_start + blk*0x200 > image_start + image_size) {
halt_printf("Tried to write to %08x\n", ret); halt_printf("Tried to write to %08x\n", ret);
smartport_error(); smartport_error();
return 0x27; return 0x27;
@ -676,9 +676,9 @@ do_write_c7(int unit_num, word32 buf, int blk)
return 0x00; return 0x00;
} }
len = write(fd, (byte *)&local_buf[0], 0x200); len = fwrite((byte *)&local_buf[0], 1, 0x200, file);
if(len != 0x200) { if(len != 0x200) {
halt_printf("write ret %08x bytes, errno: %d\n", len, errno); halt_printf("fwrite ret %08x bytes, errno: %d\n", len, errno);
smartport_error(); smartport_error();
return 0x27; return 0x27;
} }
@ -694,6 +694,7 @@ do_format_c7(int unit_num)
{ {
byte local_buf[0x1000]; byte local_buf[0x1000];
Disk *dsk; Disk *dsk;
FILE *file;
int len; int len;
int ret; int ret;
int sum; int sum;
@ -701,7 +702,6 @@ do_format_c7(int unit_num)
int max; int max;
int image_start; int image_start;
int image_size; int image_size;
int fd;
int i; int i;
if(unit_num < 0 || unit_num > MAX_C7_DISKS) { if(unit_num < 0 || unit_num > MAX_C7_DISKS) {
@ -711,11 +711,11 @@ do_format_c7(int unit_num)
} }
dsk = &(iwm.smartport[unit_num]); dsk = &(iwm.smartport[unit_num]);
fd = dsk->fd; file = dsk->file;
image_start = dsk->image_start; image_start = dsk->image_start;
image_size = dsk->image_size; image_size = dsk->image_size;
if(fd < 0) { if(!file) {
halt_printf("c7_fd == %d!\n", fd); halt_printf("c7_file is null!\n");
smartport_error(); smartport_error();
return 0x28; return 0x28;
} }
@ -724,9 +724,9 @@ do_format_c7(int unit_num)
local_buf[i] = 0; local_buf[i] = 0;
} }
ret = lseek(fd, image_start, SEEK_SET); ret = fseek(file, image_start, SEEK_SET);
if(ret != image_start) { if(ret != 0) {
halt_printf("lseek returned %08x, errno: %d\n", ret, errno); halt_printf("fseek errno: %d\n", errno);
smartport_error(); smartport_error();
return 0x27; return 0x27;
} }
@ -746,7 +746,7 @@ do_format_c7(int unit_num)
while(sum < total) { while(sum < total) {
max = MIN(0x1000, total-sum); max = MIN(0x1000, total-sum);
len = write(fd, &local_buf[0], max); len = fwrite(&local_buf[0], 1, max, file);
if(len != max) { if(len != max) {
halt_printf("write ret %08x, errno:%d\n", len, errno); halt_printf("write ret %08x, errno:%d\n", len, errno);
smartport_error(); smartport_error();

View File

@ -19,8 +19,6 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
const char rcsid_sound_c[] = "@(#)$KmKId: sound.c,v 1.108 2004-10-31 00:56:07-04 kentd Exp $";
#include "defc.h" #include "defc.h"
#define INCLUDE_RCSID_C #define INCLUDE_RCSID_C
@ -248,7 +246,7 @@ sound_init()
void void
sound_init_general() sound_init_general()
{ {
#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC) #if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC) && !defined(__OS2__)
int pid; int pid;
int shmid; int shmid;
int tmp; int tmp;
@ -258,7 +256,7 @@ sound_init_general()
int size; int size;
int ret; int ret;
#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC) #if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC) && !defined(__OS2__)
if(!g_use_shmem) { if(!g_use_shmem) {
if(g_audio_enable < 0) { if(g_audio_enable < 0) {
printf("Defaulting audio off for slow X display\n"); printf("Defaulting audio off for slow X display\n");
@ -425,6 +423,7 @@ sound_shutdown()
{ {
#ifdef _WIN32 #ifdef _WIN32
win32snd_shutdown(); win32snd_shutdown();
#elif defined(__OS2__)
#else #else
if((g_audio_enable != 0) && g_pipe_fd[1] != 0) { if((g_audio_enable != 0) && g_pipe_fd[1] != 0) {
close(g_pipe_fd[1]); close(g_pipe_fd[1]);
@ -611,6 +610,8 @@ send_sound(int real_samps, int size)
#if defined(MAC) || defined(_WIN32) #if defined(MAC) || defined(_WIN32)
ret = 0; ret = 0;
child_sound_playit(tmp); child_sound_playit(tmp);
#elif defined(__OS2__)
#else #else
/* Although this looks like a big/little-endian issue, since the */ /* Although this looks like a big/little-endian issue, since the */
/* child is also reading an int, it just works with no byte swap */ /* child is also reading an int, it just works with no byte swap */

View File

@ -19,8 +19,6 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
const char rcsid_sound_driver_c[] = "@(#)$KmKId: sound_driver.c,v 1.17 2004-09-21 10:37:15-04 kentd Exp $";
#include "defc.h" #include "defc.h"
#include "sound.h" #include "sound.h"