"Fix" numerous gcc 4.6 warnings

Hundreds of warnings to wade through, most of which were not actual
problems.  Thanks, gcc.
This commit is contained in:
Vince Weaver 2012-05-02 11:21:32 -04:00
parent 512dece2f4
commit 85d0c1aa35
5 changed files with 106 additions and 83 deletions

View File

@ -23,42 +23,20 @@ char applesoft_tokens[][8]={
/* F8 */ "","","","","","(","(","(" /* F8 */ "","","","","","(","(","("
}; };
#if 0
/* Integer Basic */
char integer_tokens[][8]={
/* 00 */ "","","",":","LOAD","SAVE","","RUN",
/* 08 */ "","DEL",",","NEW","CLR","AUTO","","MAN",
/* 10 */ "HIMEM:","LOMEM:","+","-","*","/","=","#",
/* 18 */ ">=",">","<=","<>","<"," AND"," OR"," MOD",
/* 20 */ "^","","(",",",""," THEN","",",",
/* 28 */ "\"","\"","(","","","("," PEEK","RND",
/* 30 */ "SGN","ABS","PDL","","(","+","-","NOT",
/* 38 */ "(","=","LEN (","ASC (","SCRN (",","," (",
/* 40 */ "$","(","",",","","",";",
/* 48 */ "",",",",","TEXT","GR","CALL","","DIM",
/* 50 */ "TAB","END","","","INPUT","FOR","=","TO",
/* 58 */ " STEP","NEXT",",","RETURN","GOSUB","REM","LET","GOTO",
/* 60 */ "IF","","PRINT","PRINT"," POKE",",","COLOR=","PLOT",
/* 68 */ ",","HLIN",","," AT","VLIN",","," AT","VTAB",
/* 70 */ "","=",")","","LIST",",","","POP",
/* 78 */ "","NO DSP","NO TRACE","","DSP","TRACE","PR #","IN #"
};
#endif
int main(int argc, char **argv) { int main(int argc, char **argv) {
int ch1,i; int ch1,i;
int size1,size2; int size1,size2;
int line1,line2; int line1,line2;
int link1,link2,link; int link1,link2,link;
int debug=0;
/* read size, first two bytes */ /* read size, first two bytes */
size1=fgetc(stdin); size1=fgetc(stdin);
size2=fgetc(stdin); size2=fgetc(stdin);
if (debug) fprintf(stderr,"File size: %x %x\n",size1,size2);
while(!feof(stdin)) { while(!feof(stdin)) {
/* link points to the next line */ /* link points to the next line */

134
dos33.c
View File

@ -95,10 +95,15 @@ static char *dos33_filename_to_ascii(char *dest,unsigned char *src,int len) {
/* Read VTOC into a buffer */ /* Read VTOC into a buffer */
static int dos33_read_vtoc(int fd) { static int dos33_read_vtoc(int fd) {
int result;
/* Seek to VTOC */ /* Seek to VTOC */
lseek(fd,DISK_OFFSET(VTOC_TRACK,VTOC_SECTOR),SEEK_SET); lseek(fd,DISK_OFFSET(VTOC_TRACK,VTOC_SECTOR),SEEK_SET);
/* read in VTOC */ /* read in VTOC */
read(fd,&sector_buffer,BYTES_PER_SECTOR); result=read(fd,&sector_buffer,BYTES_PER_SECTOR);
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
} }
@ -141,6 +146,7 @@ static int dos33_find_next_file(int fd,int catalog_tsf) {
int catalog_track,catalog_sector,catalog_file; int catalog_track,catalog_sector,catalog_file;
int file_track,i; int file_track,i;
int result;
catalog_file=catalog_tsf>>16; catalog_file=catalog_tsf>>16;
catalog_track=(catalog_tsf>>8)&0xff; catalog_track=(catalog_tsf>>8)&0xff;
@ -150,7 +156,7 @@ catalog_loop:
/* Read in Catalog Sector */ /* Read in Catalog Sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
i=catalog_file; i=catalog_file;
while(i<7) { while(i<7) {
@ -169,6 +175,8 @@ catalog_loop:
catalog_file=0; catalog_file=0;
goto catalog_loop; goto catalog_loop;
} }
if (result<0) fprintf(stderr,"Error on I/O\n");
return -1; return -1;
} }
@ -177,15 +185,15 @@ static int dos33_print_file_info(int fd,int catalog_tsf) {
int catalog_track,catalog_sector,catalog_file,i; int catalog_track,catalog_sector,catalog_file,i;
char temp_string[BUFSIZ]; char temp_string[BUFSIZ];
int result;
catalog_file=catalog_tsf>>16; catalog_file=catalog_tsf>>16;
catalog_track=(catalog_tsf>>8)&0xff; catalog_track=(catalog_tsf>>8)&0xff;
catalog_sector=(catalog_tsf&0xff); catalog_sector=(catalog_tsf&0xff);
/* Read in Catalog Sector */ /* Read in Catalog Sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
if (sector_buffer[CATALOG_FILE_LIST+(catalog_file*CATALOG_ENTRY_SIZE)+FILE_TYPE]>0x7f) { if (sector_buffer[CATALOG_FILE_LIST+(catalog_file*CATALOG_ENTRY_SIZE)+FILE_TYPE]>0x7f) {
printf("*"); printf("*");
@ -209,6 +217,8 @@ static int dos33_print_file_info(int fd,int catalog_tsf) {
} }
printf("\n"); printf("\n");
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
} }
@ -223,6 +233,7 @@ static int dos33_check_file_exists(int fd,
int catalog_track,catalog_sector; int catalog_track,catalog_sector;
int i,file_track; int i,file_track;
char file_name[31]; char file_name[31];
int result;
/* read the VTOC into buffer */ /* read the VTOC into buffer */
dos33_read_vtoc(fd); dos33_read_vtoc(fd);
@ -235,7 +246,7 @@ repeat_catalog:
/* Read in Catalog Sector */ /* Read in Catalog Sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
/* scan all file entries in catalog sector */ /* scan all file entries in catalog sector */
for(i=0;i<7;i++) { for(i=0;i<7;i++) {
@ -270,6 +281,8 @@ repeat_catalog:
catalog_sector=sector_buffer[CATALOG_NEXT_S]; catalog_sector=sector_buffer[CATALOG_NEXT_S];
if (catalog_sector!=0) goto repeat_catalog; if (catalog_sector!=0) goto repeat_catalog;
if (result<0) fprintf(stderr,"Error on I/O\n");
return -1; return -1;
} }
@ -295,11 +308,12 @@ static int dos33_free_sector(int fd,int track,int sector) {
unsigned char vtoc[BYTES_PER_SECTOR]; unsigned char vtoc[BYTES_PER_SECTOR];
int result;
/* Seek to VTOC */ /* Seek to VTOC */
lseek(fd,DISK_OFFSET(VTOC_TRACK,VTOC_SECTOR),SEEK_SET); lseek(fd,DISK_OFFSET(VTOC_TRACK,VTOC_SECTOR),SEEK_SET);
/* read in VTOC */ /* read in VTOC */
read(fd,&vtoc,BYTES_PER_SECTOR); result=read(fd,&vtoc,BYTES_PER_SECTOR);
/* each bitmap is 32 bits. With 16-sector tracks only first 16 used */ /* each bitmap is 32 bits. With 16-sector tracks only first 16 used */
/* 1 indicates free, 0 indicates used */ /* 1 indicates free, 0 indicates used */
@ -312,18 +326,20 @@ static int dos33_free_sector(int fd,int track,int sector) {
/* write modified VTOC back out */ /* write modified VTOC back out */
lseek(fd,DISK_OFFSET(VTOC_TRACK,VTOC_SECTOR),SEEK_SET); lseek(fd,DISK_OFFSET(VTOC_TRACK,VTOC_SECTOR),SEEK_SET);
write(fd,&vtoc,BYTES_PER_SECTOR); result=write(fd,&vtoc,BYTES_PER_SECTOR);
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
} }
static int dos33_allocate_sector(int fd) { static int dos33_allocate_sector(int fd) {
int found_track=0,found_sector=0; int found_track=0,found_sector=0;
unsigned char bitmap[4]; unsigned char bitmap[4];
int i,start_track,track_dir,byte; int i,start_track,track_dir,byte;
int result;
dos33_read_vtoc(fd); dos33_read_vtoc(fd);
@ -389,7 +405,10 @@ found_one:
/* Seek to VTOC */ /* Seek to VTOC */
lseek(fd,DISK_OFFSET(VTOC_TRACK,VTOC_SECTOR),SEEK_SET); lseek(fd,DISK_OFFSET(VTOC_TRACK,VTOC_SECTOR),SEEK_SET);
/* Write out VTOC */ /* Write out VTOC */
write(fd,&sector_buffer,BYTES_PER_SECTOR); result=write(fd,&sector_buffer,BYTES_PER_SECTOR);
if (result<0) fprintf(stderr,"Error on I/O\n");
return ((found_track<<8)+found_sector); return ((found_track<<8)+found_sector);
} }
@ -404,6 +423,7 @@ static int dos33_add_file(int fd,char type,char *filename,
int initial_ts_list=0,ts_list=0,i,data_ts,x,bytes_read=0,old_ts_list; int initial_ts_list=0,ts_list=0,i,data_ts,x,bytes_read=0,old_ts_list;
int catalog_track,catalog_sector,sectors_used=0; int catalog_track,catalog_sector,sectors_used=0;
int input_fd; int input_fd;
int result;
if (apple_filename[0]<64) { if (apple_filename[0]<64) {
fprintf(stderr,"Error! First char of filename must be ASCII 64 or above!\n"); fprintf(stderr,"Error! First char of filename must be ASCII 64 or above!\n");
@ -478,7 +498,7 @@ static int dos33_add_file(int fd,char type,char *filename,
/* clear the t/s sector */ /* clear the t/s sector */
for(x=0;x<BYTES_PER_SECTOR;x++) sector_buffer[x]=0; for(x=0;x<BYTES_PER_SECTOR;x++) sector_buffer[x]=0;
lseek(fd,DISK_OFFSET((ts_list>>8)&0xff,ts_list&0xff),SEEK_SET); lseek(fd,DISK_OFFSET((ts_list>>8)&0xff,ts_list&0xff),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
if (i==0) initial_ts_list=ts_list; if (i==0) initial_ts_list=ts_list;
else { else {
@ -486,7 +506,7 @@ static int dos33_add_file(int fd,char type,char *filename,
/* load in the old t/s list */ /* load in the old t/s list */
lseek(fd,DISK_OFFSET((old_ts_list>>8)&0xff,old_ts_list&0xff),SEEK_SET); lseek(fd,DISK_OFFSET((old_ts_list>>8)&0xff,old_ts_list&0xff),SEEK_SET);
read(fd,&sector_buffer,BYTES_PER_SECTOR); result=read(fd,&sector_buffer,BYTES_PER_SECTOR);
/* point from old ts list to new one we just made */ /* point from old ts list to new one we just made */
sector_buffer[TSL_NEXT_TRACK]=(ts_list>>8)&0xff; sector_buffer[TSL_NEXT_TRACK]=(ts_list>>8)&0xff;
@ -498,7 +518,7 @@ static int dos33_add_file(int fd,char type,char *filename,
/* write out the old t/s list with updated info */ /* write out the old t/s list with updated info */
lseek(fd,DISK_OFFSET((old_ts_list>>8)&0xff,old_ts_list&0xff),SEEK_SET); lseek(fd,DISK_OFFSET((old_ts_list>>8)&0xff,old_ts_list&0xff),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
} }
} }
@ -517,7 +537,7 @@ static int dos33_add_file(int fd,char type,char *filename,
/* write to disk image */ /* write to disk image */
lseek(fd,DISK_OFFSET((data_ts>>8)&0xff,data_ts&0xff),SEEK_SET); lseek(fd,DISK_OFFSET((data_ts>>8)&0xff,data_ts&0xff),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
// printf("Writing %i bytes to %i/%i\n",bytes_read,(data_ts>>8)&0xff, // printf("Writing %i bytes to %i/%i\n",bytes_read,(data_ts>>8)&0xff,
// data_ts&0xff); // data_ts&0xff);
@ -527,7 +547,7 @@ static int dos33_add_file(int fd,char type,char *filename,
/* read in t/s list */ /* read in t/s list */
lseek(fd,DISK_OFFSET((ts_list>>8)&0xff,ts_list&0xff),SEEK_SET); lseek(fd,DISK_OFFSET((ts_list>>8)&0xff,ts_list&0xff),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
/* point to new data sector */ /* point to new data sector */
sector_buffer[((i%TSL_MAX_NUMBER)*2)+TSL_LIST]=(data_ts>>8)&0xff; sector_buffer[((i%TSL_MAX_NUMBER)*2)+TSL_LIST]=(data_ts>>8)&0xff;
@ -535,7 +555,7 @@ static int dos33_add_file(int fd,char type,char *filename,
/* write t/s list back out */ /* write t/s list back out */
lseek(fd,DISK_OFFSET((ts_list>>8)&0xff,ts_list&0xff),SEEK_SET); lseek(fd,DISK_OFFSET((ts_list>>8)&0xff,ts_list&0xff),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
i++; i++;
} }
@ -552,7 +572,7 @@ continue_parsing_catalog:
/* Read in Catalog Sector */ /* Read in Catalog Sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
/* Find empty directory entry */ /* Find empty directory entry */
i=0; i=0;
@ -590,13 +610,15 @@ got_a_dentry:
// printf("Pointing T/S to %x/%x\n",(initial_ts_list>>8)&0xff,initial_ts_list&0xff); // printf("Pointing T/S to %x/%x\n",(initial_ts_list>>8)&0xff,initial_ts_list&0xff);
/* copy over filename */ /* copy over filename */
for(x=0;x<strlen(apple_filename);x++) for(x=0;x<strlen(apple_filename);x++) {
sector_buffer[CATALOG_FILE_LIST+(i*CATALOG_ENTRY_SIZE)+FILE_NAME+x]= sector_buffer[CATALOG_FILE_LIST+(i*CATALOG_ENTRY_SIZE)+FILE_NAME+x]=
apple_filename[x]^0x80; apple_filename[x]^0x80;
}
/* pad out the filename with spaces */ /* pad out the filename with spaces */
for(x=strlen(apple_filename);x<FILE_NAME_SIZE;x++) for(x=strlen(apple_filename);x<FILE_NAME_SIZE;x++) {
sector_buffer[CATALOG_FILE_LIST+(i*CATALOG_ENTRY_SIZE)+FILE_NAME+x]=' '^0x80; sector_buffer[CATALOG_FILE_LIST+(i*CATALOG_ENTRY_SIZE)+FILE_NAME+x]=' '^0x80;
}
/* fill in filesize in sectors */ /* fill in filesize in sectors */
sector_buffer[CATALOG_FILE_LIST+(i*CATALOG_ENTRY_SIZE)+FILE_SIZE_L]= sector_buffer[CATALOG_FILE_LIST+(i*CATALOG_ENTRY_SIZE)+FILE_SIZE_L]=
@ -606,7 +628,9 @@ got_a_dentry:
/* write out catalog sector */ /* write out catalog sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
} }
@ -619,6 +643,7 @@ static int dos33_load_file(int fd,int fts,char *filename) {
int file_type,file_size=-1,tsl_track,tsl_sector,data_t,data_s; int file_type,file_size=-1,tsl_track,tsl_sector,data_t,data_s;
unsigned char data_sector[BYTES_PER_SECTOR]; unsigned char data_sector[BYTES_PER_SECTOR];
int tsl_pointer=0,output_pointer=0; int tsl_pointer=0,output_pointer=0;
int result;
/* Fix me! Warn if overwriting file! */ /* Fix me! Warn if overwriting file! */
output_fd=open(filename,O_WRONLY|O_CREAT|O_TRUNC,0666); output_fd=open(filename,O_WRONLY|O_CREAT|O_TRUNC,0666);
@ -634,7 +659,7 @@ static int dos33_load_file(int fd,int fts,char *filename) {
/* Read in Catalog Sector */ /* Read in Catalog Sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
tsl_track=sector_buffer[CATALOG_FILE_LIST+ tsl_track=sector_buffer[CATALOG_FILE_LIST+
(catalog_file*CATALOG_ENTRY_SIZE)+FILE_TS_LIST_T]; (catalog_file*CATALOG_ENTRY_SIZE)+FILE_TS_LIST_T];
@ -649,7 +674,7 @@ static int dos33_load_file(int fd,int fts,char *filename) {
keep_saving: keep_saving:
/* Read in TSL Sector */ /* Read in TSL Sector */
lseek(fd,DISK_OFFSET(tsl_track,tsl_sector),SEEK_SET); lseek(fd,DISK_OFFSET(tsl_track,tsl_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
tsl_pointer=0; tsl_pointer=0;
/* check each track/sector pair in the list */ /* check each track/sector pair in the list */
@ -664,7 +689,7 @@ keep_saving:
} }
else { else {
lseek(fd,DISK_OFFSET(data_t,data_s),SEEK_SET); lseek(fd,DISK_OFFSET(data_t,data_s),SEEK_SET);
read(fd,&data_sector,BYTES_PER_SECTOR); result=read(fd,&data_sector,BYTES_PER_SECTOR);
/* some file formats have the size in the first sector */ /* some file formats have the size in the first sector */
/* so cheat and get real file size from file itself */ /* so cheat and get real file size from file itself */
@ -684,7 +709,7 @@ keep_saving:
/* write the block read in out to the output file */ /* write the block read in out to the output file */
lseek(output_fd,output_pointer*BYTES_PER_SECTOR,SEEK_SET); lseek(output_fd,output_pointer*BYTES_PER_SECTOR,SEEK_SET);
write(output_fd,&data_sector,BYTES_PER_SECTOR); result=write(output_fd,&data_sector,BYTES_PER_SECTOR);
} }
output_pointer++; output_pointer++;
tsl_pointer++; tsl_pointer++;
@ -704,8 +729,10 @@ keep_saving:
/* Correct the file size */ /* Correct the file size */
if (file_size>=0) { if (file_size>=0) {
// printf("Truncating file size to %d\n",file_size); // printf("Truncating file size to %d\n",file_size);
ftruncate(output_fd,file_size); result=ftruncate(output_fd,file_size);
} }
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
@ -715,7 +742,7 @@ keep_saving:
static int dos33_lock_file(int fd,int fts,int lock) { static int dos33_lock_file(int fd,int fts,int lock) {
int catalog_file,catalog_track,catalog_sector; int catalog_file,catalog_track,catalog_sector;
int file_type; int file_type,result;
catalog_file=fts>>16; catalog_file=fts>>16;
catalog_track=(fts>>8)&0xff; catalog_track=(fts>>8)&0xff;
@ -724,7 +751,7 @@ static int dos33_lock_file(int fd,int fts,int lock) {
/* Read in Catalog Sector */ /* Read in Catalog Sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
file_type=sector_buffer[CATALOG_FILE_LIST+ file_type=sector_buffer[CATALOG_FILE_LIST+
(catalog_file*CATALOG_ENTRY_SIZE) (catalog_file*CATALOG_ENTRY_SIZE)
@ -739,7 +766,9 @@ static int dos33_lock_file(int fd,int fts,int lock) {
/* write back modified catalog sector */ /* write back modified catalog sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
@ -751,7 +780,7 @@ static int dos33_lock_file(int fd,int fts,int lock) {
static int dos33_rename_file(int fd,int fts,char *new_name) { static int dos33_rename_file(int fd,int fts,char *new_name) {
int catalog_file,catalog_track,catalog_sector; int catalog_file,catalog_track,catalog_sector;
int x; int x,result;
catalog_file=fts>>16; catalog_file=fts>>16;
catalog_track=(fts>>8)&0xff; catalog_track=(fts>>8)&0xff;
@ -759,7 +788,7 @@ static int dos33_rename_file(int fd,int fts,char *new_name) {
/* Read in Catalog Sector */ /* Read in Catalog Sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
/* copy over filename */ /* copy over filename */
for(x=0;x<strlen(new_name);x++) for(x=0;x<strlen(new_name);x++)
@ -773,7 +802,9 @@ static int dos33_rename_file(int fd,int fts,char *new_name) {
/* write back modified catalog sector */ /* write back modified catalog sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
@ -786,14 +817,15 @@ static int dos33_undelete_file(int fd,int fts,char *new_name) {
int catalog_file,catalog_track,catalog_sector; int catalog_file,catalog_track,catalog_sector;
char replacement_char; char replacement_char;
int result;
catalog_file=fts>>16; catalog_file=fts>>16;
catalog_track=(fts>>8)&0xff; catalog_track=(fts>>8)&0xff;
catalog_sector=(fts&0xff); catalog_sector=(fts&0xff);
/* Read in Catalog Sector */ /* Read in Catalog Sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
/* get the stored track value, and put it back */ /* get the stored track value, and put it back */
/* FIXME: should walk file to see if T/s valild */ /* FIXME: should walk file to see if T/s valild */
@ -812,7 +844,9 @@ static int dos33_undelete_file(int fd,int fts,char *new_name) {
/* write back modified catalog sector */ /* write back modified catalog sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
@ -825,6 +859,7 @@ static int dos33_delete_file(int fd,int fsl) {
int catalog_track,catalog_sector,catalog_entry; int catalog_track,catalog_sector,catalog_entry;
int ts_track,ts_sector; int ts_track,ts_sector;
char file_type; char file_type;
int result;
/* unpack file/track/sector info */ /* unpack file/track/sector info */
catalog_entry=fsl>>16; catalog_entry=fsl>>16;
@ -833,7 +868,7 @@ static int dos33_delete_file(int fd,int fsl) {
/* Load in the catalog table for the file */ /* Load in the catalog table for the file */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
file_type=sector_buffer[CATALOG_FILE_LIST+ file_type=sector_buffer[CATALOG_FILE_LIST+
(catalog_entry*CATALOG_ENTRY_SIZE) (catalog_entry*CATALOG_ENTRY_SIZE)
@ -856,7 +891,7 @@ keep_deleting:
/* load in the t/s list info */ /* load in the t/s list info */
lseek(fd,DISK_OFFSET(ts_track,ts_sector),SEEK_SET); lseek(fd,DISK_OFFSET(ts_track,ts_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
/* Free each sector listed by t/s list */ /* Free each sector listed by t/s list */
for(i=0;i<TSL_MAX_NUMBER;i++) { for(i=0;i<TSL_MAX_NUMBER;i++) {
@ -886,7 +921,7 @@ keep_deleting:
/* First reload proper catalog sector */ /* First reload proper catalog sector */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
/* save track as last char of name, for undelete purposes */ /* save track as last char of name, for undelete purposes */
sector_buffer[CATALOG_FILE_LIST+(catalog_entry*CATALOG_ENTRY_SIZE)+ sector_buffer[CATALOG_FILE_LIST+(catalog_entry*CATALOG_ENTRY_SIZE)+
@ -899,7 +934,9 @@ keep_deleting:
/* re seek to catalog position and write out changes */ /* re seek to catalog position and write out changes */
lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_track,catalog_sector),SEEK_SET);
write(fd,sector_buffer,BYTES_PER_SECTOR); result=write(fd,sector_buffer,BYTES_PER_SECTOR);
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
} }
@ -921,10 +958,12 @@ static int dump_sector() {
static int dos33_dump(int fd) { static int dos33_dump(int fd) {
int num_tracks,i,j,catalog_t,catalog_s,file,ts_t,ts_s,ts_total,track,sector; int num_tracks,catalog_t,catalog_s,file,ts_t,ts_s,ts_total,track,sector;
int i,j;
int deleted=0; int deleted=0;
char temp_string[BUFSIZ]; char temp_string[BUFSIZ];
unsigned char tslist[BYTES_PER_SECTOR]; unsigned char tslist[BYTES_PER_SECTOR];
int result;
dos33_read_vtoc(fd); dos33_read_vtoc(fd);
@ -973,7 +1012,7 @@ repeat_catalog:
printf("\nCatalog Sector $%02X/$%02x\n",catalog_t,catalog_s); printf("\nCatalog Sector $%02X/$%02x\n",catalog_t,catalog_s);
lseek(fd,DISK_OFFSET(catalog_t,catalog_s),SEEK_SET); lseek(fd,DISK_OFFSET(catalog_t,catalog_s),SEEK_SET);
read(fd,sector_buffer,BYTES_PER_SECTOR); result=read(fd,sector_buffer,BYTES_PER_SECTOR);
dump_sector(sector_buffer); dump_sector(sector_buffer);
@ -1018,7 +1057,7 @@ repeat_tsl:
printf("\tT/S List $%02X/$%02X:\n",ts_t,ts_s); printf("\tT/S List $%02X/$%02X:\n",ts_t,ts_s);
if (deleted) goto continue_dump; if (deleted) goto continue_dump;
lseek(fd,DISK_OFFSET(ts_t,ts_s),SEEK_SET); lseek(fd,DISK_OFFSET(ts_t,ts_s),SEEK_SET);
read(fd,&tslist,BYTES_PER_SECTOR); result=read(fd,&tslist,BYTES_PER_SECTOR);
for(i=0;i<ts_total;i++) { for(i=0;i<ts_total;i++) {
track=tslist[TSL_LIST+(i*TSL_ENTRY_SIZE)]; track=tslist[TSL_LIST+(i*TSL_ENTRY_SIZE)];
@ -1042,7 +1081,8 @@ continue_dump:;
} }
printf("\n"); printf("\n");
if (result<0) fprintf(stderr,"Error on I/O\n");
return 0; return 0;
} }
@ -1096,7 +1136,7 @@ int main(int argc, char **argv) {
char temp_string[BUFSIZ]; char temp_string[BUFSIZ];
char apple_filename[31],new_filename[31]; char apple_filename[31],new_filename[31];
char output_filename[BUFSIZ]; char output_filename[BUFSIZ];
char *result_string;
/* Check command line arguments */ /* Check command line arguments */
@ -1267,8 +1307,8 @@ int main(int argc, char **argv) {
if (catalog_entry>=0) { if (catalog_entry>=0) {
printf("Warning! %s exists!\n",apple_filename); printf("Warning! %s exists!\n",apple_filename);
printf("Over-write (y/n)?"); printf("Over-write (y/n)?");
fgets(temp_string,BUFSIZ,stdin); result_string=fgets(temp_string,BUFSIZ,stdin);
if (temp_string[0]!='y') { if ((result_string==NULL) || (temp_string[0]!='y')) {
printf("Exiting early...\n"); printf("Exiting early...\n");
goto exit_and_close; goto exit_and_close;
} }

View File

@ -64,11 +64,13 @@ int main(int argc, char **argv) {
int line1,line2; int line1,line2;
int int1,int2; int int1,int2;
int in_rem=0,in_quote=0,last_was_alpha=0,last_was_token=0; int in_rem=0,in_quote=0,last_was_alpha=0,last_was_token=0;
int debug=0;
/* read size, first two bytes */ /* read size, first two bytes */
size1=fgetc(stdin); size1=fgetc(stdin);
size2=fgetc(stdin); size2=fgetc(stdin);
if (debug) fprintf(stderr,"Sign bytes: %x %x\n",size1,size2);
while(!feof(stdin)) { while(!feof(stdin)) {
in_rem=0; in_rem=0;
@ -77,7 +79,8 @@ int main(int argc, char **argv) {
last_was_token=0; last_was_token=0;
line_length=fgetc(stdin); line_length=fgetc(stdin);
if (debug) fprintf(stderr,"Line length: %d\n",line_length);
/* line number is little endian 16-bit value */ /* line number is little endian 16-bit value */
line1=fgetc(stdin); line1=fgetc(stdin);
line2=fgetc(stdin); line2=fgetc(stdin);
@ -115,6 +118,7 @@ int main(int argc, char **argv) {
} }
printf("\n"); printf("\n");
} }
if (debug) fprintf(stderr,"Last was token: %d\n",last_was_token);
the_end:; the_end:;
return 0; return 0;
} }

View File

@ -8,7 +8,7 @@
int main(int argc, char **argv) { int main(int argc, char **argv) {
int in_fd,out_fd,offset; int in_fd,out_fd,offset,write_result;
unsigned char buffer[256]; unsigned char buffer[256];
int result,file_size; int result,file_size;
@ -47,12 +47,13 @@ int main(int argc, char **argv) {
buffer[2]=file_size&0xff; buffer[2]=file_size&0xff;
buffer[3]=(file_size>>8)&0xff; buffer[3]=(file_size>>8)&0xff;
write(out_fd,&buffer,4); write_result=write(out_fd,&buffer,4);
while( (result=read(in_fd,&buffer,256))>0) { while( (result=read(in_fd,&buffer,256))>0) {
write(out_fd,&buffer,result); write_result=write(out_fd,&buffer,result);
} }
if (write_result<0) fprintf(stderr,"Error writing\n");
close(in_fd); close(in_fd);
close(out_fd); close(out_fd);

View File

@ -32,8 +32,7 @@ int main(int argc, char **argv) {
char device[BUFSIZ],dos_src[BUFSIZ]; char device[BUFSIZ],dos_src[BUFSIZ];
char *buffer,*endptr; char *buffer,*endptr;
int i,c,copy_dos=0; int i,c,copy_dos=0;
int result;
/* Parse Command Line Arguments */ /* Parse Command Line Arguments */
@ -101,7 +100,7 @@ int main(int argc, char **argv) {
/* zero out file */ /* zero out file */
for(i=0;i<num_tracks*num_sectors;i++) { for(i=0;i<num_tracks*num_sectors;i++) {
write(fd,buffer,block_size); result=write(fd,buffer,block_size);
} }
/* Copy over OS from elsewhere, if desired */ /* Copy over OS from elsewhere, if desired */
@ -115,8 +114,8 @@ int main(int argc, char **argv) {
lseek(fd,0,SEEK_SET); lseek(fd,0,SEEK_SET);
/* copy first 3 sectors */ /* copy first 3 sectors */
for(i=0;i<3*(num_sectors);i++) { for(i=0;i<3*(num_sectors);i++) {
read(dos_fd,buffer,block_size); result=read(dos_fd,buffer,block_size);
write(fd,buffer,block_size); result=write(fd,buffer,block_size);
} }
close(dos_fd); close(dos_fd);
@ -182,8 +181,9 @@ int main(int argc, char **argv) {
/* Write out VTOC to disk */ /* Write out VTOC to disk */
lseek(fd,((17*num_sectors)+0)*block_size,SEEK_SET); lseek(fd,((17*num_sectors)+0)*block_size,SEEK_SET);
write(fd,buffer,block_size); result=write(fd,buffer,block_size);
if (result<0) fprintf(stderr,"Error writing!\n");