diff --git a/utils/prodos-utils/prodos.c b/utils/prodos-utils/prodos.c index 258ae754..66e529a9 100644 --- a/utils/prodos-utils/prodos.c +++ b/utils/prodos-utils/prodos.c @@ -509,8 +509,9 @@ static int prodos_load_file(struct voldir_t *voldir, int output_fd; unsigned char data[PRODOS_BYTES_PER_BLOCK]; + unsigned char index_block[PRODOS_BYTES_PER_BLOCK]; unsigned char sector_buffer[PRODOS_BYTES_PER_BLOCK]; - int result; + int result,chunk,chunk_block; struct file_entry_t file; /* FIXME! Warn if overwriting file! */ @@ -546,9 +547,41 @@ static int prodos_load_file(struct voldir_t *voldir, break; case PRODOS_FILE_SAPLING: - case PRODOS_FILE_TREE: - case PRODOS_FILE_SUBDIR: + /* Just a single block */ + if (debug) fprintf(stderr,"Loading index " + "block $%x\n", + file.key_pointer); + result=prodos_read_block(voldir,index_block, + file.key_pointer); + if (result<0) { + return result; + } + for(chunk=0;chunk=0) { -// printf("Truncating file size to %d\n",file_size); - result=ftruncate(output_fd,file_size); - } - - if (result<0) fprintf(stderr,"Error on I/O\n"); -#endif return 0; }