diff options
Diffstat (limited to 'fatfs')
-rw-r--r-- | fatfs/dir.c | 9 | ||||
-rw-r--r-- | fatfs/fat.c | 6 | ||||
-rw-r--r-- | fatfs/fat.h | 4 | ||||
-rw-r--r-- | fatfs/inode.c | 9 |
4 files changed, 17 insertions, 11 deletions
diff --git a/fatfs/dir.c b/fatfs/dir.c index 66c95d27..b9b7ae55 100644 --- a/fatfs/dir.c +++ b/fatfs/dir.c @@ -497,13 +497,14 @@ dirscanblock (vm_address_t blockaddr, struct node *dp, int idx, component. */ continue; - if (fatnamematch (entry->name, name, namelen)) + if (fatnamematch ((const char *) entry->name, name, namelen)) break; } if (consider_compress - && (ds->type == LOOKING - || (ds->type == COMPRESS && ds->nbytes > nbytes))) + && ((enum slot_status) ds->type == LOOKING + || ((enum slot_status) ds->type == COMPRESS && + ds->nbytes > nbytes))) { ds->type = CREATE; ds->stat = COMPRESS; @@ -934,7 +935,7 @@ diskfs_get_directs (struct node *dp, /* See if there's room to hold this one. */ - fat_to_unix_filename(ep->name, name); + fat_to_unix_filename ((const char *) ep->name, name); namlen = strlen(name); /* Perhaps downcase it? */ diff --git a/fatfs/fat.c b/fatfs/fat.c index 14926ff3..4c98f623 100644 --- a/fatfs/fat.c +++ b/fatfs/fat.c @@ -69,7 +69,7 @@ void fat_read_sblock (void) { error_t err; - int read; + size_t read; sblock = malloc (sizeof (struct boot_sector)); err = store_read (store, 0, sizeof (struct boot_sector), @@ -706,7 +706,7 @@ fat_from_unix_filename(char *fn, const char *un, int ul) /* Return Epoch-based time from a MSDOS time/date pair. */ void -fat_to_epoch (char *date, char *time, struct timespec *ts) +fat_to_epoch (unsigned char *date, unsigned char *time, struct timespec *ts) { struct tm tm; @@ -735,7 +735,7 @@ fat_to_epoch (char *date, char *time, struct timespec *ts) /* Return MSDOS time/date pair from Epoch-based time. */ void -fat_from_epoch (char *date, char *time, time_t *tp) +fat_from_epoch (unsigned char *date, unsigned char *time, time_t *tp) { struct tm *tm; diff --git a/fatfs/fat.h b/fatfs/fat.h index eac7015a..d4a509ea 100644 --- a/fatfs/fat.h +++ b/fatfs/fat.h @@ -318,8 +318,8 @@ struct cluster_chain /* Prototyping. */ void fat_read_sblock (void); -void fat_to_epoch (char *, char *, struct timespec *); -void fat_from_epoch (char *, char *, time_t *); +void fat_to_epoch (unsigned char *, unsigned char *, struct timespec *); +void fat_from_epoch (unsigned char *, unsigned char *, time_t *); error_t fat_getcluster (struct node *, cluster_t, int, cluster_t *); void fat_truncate_node (struct node *, cluster_t); error_t fat_extend_chain (struct node *, cluster_t, int); diff --git a/fatfs/inode.c b/fatfs/inode.c index 610f3575..4f28d144 100644 --- a/fatfs/inode.c +++ b/fatfs/inode.c @@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ #include <string.h> +#include <error.h> #include "fatfs.h" #include "libdiskfs/fs_S.h" @@ -73,7 +74,6 @@ diskfs_user_make_node (struct node **npp, struct lookup_context *ctx) error_t diskfs_cached_lookup_in_dirbuf (int inum, struct node **npp, vm_address_t buf) { - error_t err; struct lookup_context ctx = { buf: buf, inode: vi_lookup (inum) }; return diskfs_cached_lookup_context (inum, npp, &ctx); } @@ -165,7 +165,7 @@ diskfs_user_read_node (struct node *np, struct lookup_context *ctx) allocated node that has no directory entry yet, only set a minimal amount of data until the dirent is created (and we get called a second time?). */ - if (vk.dir_inode == 0 && vk.dir_offset == (void *) 2) + if (vk.dir_inode == 0 && vk.dir_offset == 2) return 0; if (vk.dir_inode == 0) @@ -363,6 +363,11 @@ write_node (struct node *np) err = vm_map (mach_task_self (), &buf, buflen, 0, 1, memobj, 0, 0, prot, prot, 0); mach_port_deallocate (mach_task_self (), memobj); + if (err) + { + pthread_mutex_unlock (&dp->lock); + error (1, err, "Could not map memory"); + } dr = (struct dirrect *) (buf + vk.dir_offset); |