aboutsummaryrefslogtreecommitdiff
path: root/libmpio/fat.c
diff options
context:
space:
mode:
authorgermeier <germeier>2003-04-06 23:09:19 +0000
committergermeier <germeier>2003-04-06 23:09:19 +0000
commit50c439ffa36fed9e1cce65b211ec05bf50925cc2 (patch)
tree923c967c689a873b2497d5daf007531e194c61fc /libmpio/fat.c
parentc4c88c7d7227834fe2d94f507d01cfafabe885b9 (diff)
downloadmpiosh-50c439ffa36fed9e1cce65b211ec05bf50925cc2.tar.gz
mpiosh-50c439ffa36fed9e1cce65b211ec05bf50925cc2.tar.bz2
mpiosh-50c439ffa36fed9e1cce65b211ec05bf50925cc2.zip
initial support for directories
BEWARE: this might have broken some things!!!
Diffstat (limited to 'libmpio/fat.c')
-rw-r--r--libmpio/fat.c53
1 files changed, 33 insertions, 20 deletions
diff --git a/libmpio/fat.c b/libmpio/fat.c
index f26f009..c24f56e 100644
--- a/libmpio/fat.c
+++ b/libmpio/fat.c
@@ -1,6 +1,6 @@
/*
*
- * $Id: fat.c,v 1.25 2003/04/04 22:08:53 germeier Exp $
+ * $Id: fat.c,v 1.26 2003/04/06 23:09:20 germeier Exp $
*
* Library for USB MPIO-*
*
@@ -837,24 +837,31 @@ mpio_fat_write(mpio_t *m, mpio_mem_t mem)
if (mem == MPIO_INTERNAL_MEM) {
sm = &m->internal;
- f=mpio_fatentry_new(m, mem, 0, FTYPE_MUSIC);
- mpio_io_block_delete(m, mem, f);
- free(f);
-
- memset(dummy, 0x00, BLOCK_SIZE);
-
- /* only write the FAT */
- for (i= 0; i< 0x20; i++)
- {
-
- if (i<DIR_NUM)
+ if (sm->cdir == sm->root)
+ {
+ f=mpio_fatentry_new(m, mem, 0, FTYPE_MUSIC);
+ mpio_io_block_delete(m, mem, f);
+ free(f);
+
+ memset(dummy, 0x00, BLOCK_SIZE);
+
+ /* only write the root dir */
+ for (i= 0; i< 0x20; i++)
{
- mpio_io_sector_write(m, mem, i, (sm->dir + SECTOR_SIZE * i));
- } else {
- /* fill the rest of the block with zeros */
- mpio_io_sector_write(m, mem, i, dummy);
- }
- }
+
+ if (i<DIR_NUM)
+ {
+ mpio_io_sector_write(m, mem, i,
+ (sm->root->dir + SECTOR_SIZE * i));
+ } else {
+ /* fill the rest of the block with zeros */
+ mpio_io_sector_write(m, mem, i, dummy);
+ }
+ }
+ } else {
+ mpio_directory_write(m, mem, sm->cdir);
+ }
+
}
if (mem == MPIO_EXTERNAL_MEM)
@@ -896,9 +903,15 @@ mpio_fat_write(mpio_t *m, mpio_mem_t mem)
if (i>=sm->dir_offset)
mpio_io_sector_write(m, mem, i,
- (sm->dir + (i - sm->dir_offset) * SECTOR_SIZE));
+ (sm->root->dir +
+ (i - sm->dir_offset) * SECTOR_SIZE));
}
- }
+
+ if (sm->cdir != sm->root)
+ mpio_directory_write(m, mem, sm->cdir);
+
+ }
+
return 0;
}