aboutsummaryrefslogtreecommitdiff
path: root/libmpio/directory.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpio/directory.c')
-rw-r--r--libmpio/directory.c35
1 files changed, 28 insertions, 7 deletions
diff --git a/libmpio/directory.c b/libmpio/directory.c
index 0991cc1..ea51ac3 100644
--- a/libmpio/directory.c
+++ b/libmpio/directory.c
@@ -1,6 +1,6 @@
/*
*
- * $Id: directory.c,v 1.6 2002/09/14 22:54:41 germeier Exp $
+ * $Id: directory.c,v 1.7 2002/09/24 15:38:03 germeier Exp $
*
* Library for USB MPIO-*
*
@@ -414,7 +414,7 @@ mpio_dentry_get_startcluster(mpio_t *m, mpio_mem_t mem, BYTE *p)
if (cluster < 0)
return NULL;
- new = mpio_fatentry_new(m, mem, cluster);
+ new = mpio_fatentry_new(m, mem, cluster, FTYPE_MUSIC);
if (mem == MPIO_INTERNAL_MEM)
{
@@ -515,8 +515,6 @@ mpio_dentry_put(mpio_t *m, mpio_mem_t mem,
/* find uniq 8.3 filename */
memset(f_8_3, 0x20, 12);
- f_8_3[6]='~';
- f_8_3[7]='1';
f_8_3[8]='.';
f_8_3[12]=0x00;
@@ -540,6 +538,12 @@ mpio_dentry_put(mpio_t *m, mpio_mem_t mem,
j++;
}
+ if (mpio_dentry_find_name_8_3(m, mem, f_8_3))
+ {
+ f_8_3[6]='~';
+ f_8_3[7]='1';
+ }
+
while(mpio_dentry_find_name_8_3(m, mem, f_8_3))
f_8_3[7]++;
@@ -597,8 +601,25 @@ mpio_dentry_find_name_8_3(mpio_t *m, BYTE mem, BYTE *filename)
WORD wdummy;
BYTE fname[129];
BYTE fname_8_3[13];
+ BYTE filename_8_3[13];
DWORD ddummy;
BYTE *found = 0;
+ int i, j, len;
+
+ /* format given filename to a "standard" 8.3 filename */
+ memset(filename_8_3, 0x20, 13);
+ filename_8_3[12]=0;
+ len=strlen(filename);
+ i=j=0;
+ while ((i<13) && (j <len))
+ {
+ if (filename[j] == '.')
+ i=8;
+ filename_8_3[i] = filename[j];
+
+ i++;
+ j++;
+ }
p = mpio_directory_open(m, mem);
while ((p) && (!found)) {
@@ -607,9 +628,9 @@ mpio_dentry_find_name_8_3(mpio_t *m, BYTE mem, BYTE *filename)
fname_8_3,
&wdummy, &bdummy, &bdummy,
&bdummy, &bdummy, &ddummy);
-/* debug ("s: %s\n", fname_8_3); */
- if ((strcmp(fname_8_3, filename) == 0) &&
- (strcmp(filename,fname_8_3) == 0)) {
+
+ if ((strcmp(fname_8_3, filename_8_3) == 0) &&
+ (strcmp(filename_8_3,fname_8_3) == 0)) {
found = p;
p = NULL;
}