diff options
| author | germeier <germeier> | 2003-04-11 21:42:57 +0000 | 
|---|---|---|
| committer | germeier <germeier> | 2003-04-11 21:42:57 +0000 | 
| commit | 17225c6d8fe3c925c5863f736f6572720c95c5d7 (patch) | |
| tree | ab43eddfdb58eb47ad05bff98ae3a7639eb07335 /libmpio/directory.c | |
| parent | 50c439ffa36fed9e1cce65b211ec05bf50925cc2 (diff) | |
| download | mpiosh-17225c6d8fe3c925c5863f736f6572720c95c5d7.tar.gz mpiosh-17225c6d8fe3c925c5863f736f6572720c95c5d7.tar.bz2 mpiosh-17225c6d8fe3c925c5863f736f6572720c95c5d7.zip  | |
timestamp generation fixes as suggested by Sebastian
8.3 generation fixes for "MPIO RECORD" directory
Diffstat (limited to 'libmpio/directory.c')
| -rw-r--r-- | libmpio/directory.c | 72 | 
1 files changed, 66 insertions, 6 deletions
diff --git a/libmpio/directory.c b/libmpio/directory.c index 0dd8abd..aa62173 100644 --- a/libmpio/directory.c +++ b/libmpio/directory.c @@ -1,6 +1,6 @@  /*    * - * $Id: directory.c,v 1.16 2003/04/06 23:09:20 germeier Exp $ + * $Id: directory.c,v 1.17 2003/04/11 21:42:57 germeier Exp $   *   * Library for USB MPIO-*   * @@ -155,6 +155,23 @@ mpio_directory_read(mpio_t *m, mpio_mem_t mem, mpio_directory_t *dir)    return 0;  } +BYTE +mpio_directory_is_empty(mpio_t *m, mpio_mem_t mem, mpio_directory_t *dir) +{ +  mpio_dir_entry_t *dentry; +  BYTE r; + +  dentry = (mpio_dir_entry_t *)dir->dir; +  dentry += 2; + +  r = MPIO_OK; +  if (dentry->name[0] != 0x00)  +    r = !r; +   +  return r; +} + +    int       mpio_directory_write(mpio_t *m, mpio_mem_t mem, mpio_directory_t *dir)  { @@ -180,7 +197,7 @@ mpio_directory_write(mpio_t *m, mpio_mem_t mem, mpio_directory_t *dir)        /* set type to directory */        f->i_fat[0x06] = FTYPE_ENTRY; -      hexdumpn(0, f->i_fat, 16); +      hexdumpn(2, f->i_fat, 16);      }    mpio_io_block_delete(m, mem, f); @@ -223,6 +240,7 @@ mpio_directory_make(mpio_t *m, mpio_mem_t mem, BYTE *dir)    mpio_fatentry_t   *f, *current;    WORD self, parent;    struct tm tt; +  time_t curr;    if (mem == MPIO_INTERNAL_MEM) sm = &m->internal;    if (mem == MPIO_EXTERNAL_MEM) sm = &m->external; @@ -257,7 +275,7 @@ mpio_directory_make(mpio_t *m, mpio_mem_t mem, BYTE *dir)        /* only one block needed for directory */        f->i_fat[0x02]=0;        f->i_fat[0x03]=1; -      hexdumpn(0, f->i_fat, 16); +      hexdumpn(2, f->i_fat, 16);      }    if (sm->cdir == sm->root)  @@ -279,6 +297,8 @@ mpio_directory_make(mpio_t *m, mpio_mem_t mem, BYTE *dir)    mpio_fatentry_set_eof(m ,mem, f);    mpio_io_block_write(m, mem, f, new->dir); +  time(&curr); +  tt = * localtime(&curr);    mpio_dentry_put(m, mem,  		  dir, strlen(dir),  		      mktime(&tt),  @@ -668,6 +688,32 @@ mpio_rootdir_clear (mpio_t *m, mpio_mem_t mem)    return 0;  } +BYTE     +mpio_dentry_is_dir(mpio_t *m, mpio_mem_t mem, BYTE *p) +{ +  int s; +  mpio_dir_entry_t *dentry; +  BYTE r; + +  s  = mpio_dentry_get_size(m, mem, p); +  s -= DIR_ENTRY_SIZE ; + +  dentry = (mpio_dir_entry_t *)p; +   +  while (s != 0) { +    dentry++; +    s -= DIR_ENTRY_SIZE ; +  } + +  if (dentry->attr & 0x10) { +    r = MPIO_OK; +  } else { +    r= !MPIO_OK; +  } + +  return r; +} +  int  mpio_dentry_get_filesize(mpio_t *m, mpio_mem_t mem, BYTE *p)  { @@ -869,15 +915,22 @@ mpio_dentry_put(mpio_t *m, mpio_mem_t mem,        i++;      } +  /* if we do not find any points we set the value ridiculously high, +     then everything falls into place */ +  if (!points) +    points=1024*1024; +    i=j=0;    while ((j<8) && (points) && (i<(strlen(filename))))      {        if (filename[i] == '.')   	{  	  points--; -	} else {	   -	  f_8_3[j] = toupper(filename[i]); -	  j++; +	} else { +	  if (filename[i]!=' ') { +	    f_8_3[j] = toupper(filename[i]); +	    j++; +	  }  	}        i++;      } @@ -898,6 +951,13 @@ mpio_dentry_put(mpio_t *m, mpio_mem_t mem,        j++;      } +  /* This seems like a special case to me! */ +  if (strcmp(MPIO_MPIO_RECORD, filename)==0) +    { +        f_8_3[6]='~'; +        f_8_3[7]='0'; +    } +    if (mpio_dentry_find_name_8_3(m, mem, f_8_3))      {          f_8_3[6]='~';  | 
