summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/dosfs
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/dosfs')
-rw-r--r--cpukit/libfs/src/dosfs/msdos.h16
-rw-r--r--cpukit/libfs/src/dosfs/msdos_dir.c64
-rw-r--r--cpukit/libfs/src/dosfs/msdos_file.c46
-rw-r--r--cpukit/libfs/src/dosfs/msdos_handlers_dir.c4
-rw-r--r--cpukit/libfs/src/dosfs/msdos_handlers_file.c2
5 files changed, 6 insertions, 126 deletions
diff --git a/cpukit/libfs/src/dosfs/msdos.h b/cpukit/libfs/src/dosfs/msdos.h
index a7aff1d96d..0696b8f1fb 100644
--- a/cpukit/libfs/src/dosfs/msdos.h
+++ b/cpukit/libfs/src/dosfs/msdos.h
@@ -265,13 +265,6 @@ int msdos_initialize_support(
const rtems_filesystem_file_handlers_r *directory_handlers
);
-int msdos_file_open(
- rtems_libio_t *iop, /* IN */
- const char *pathname, /* IN */
- int oflag, /* IN */
- mode_t mode /* IN */
-);
-
int msdos_file_close(rtems_libio_t *iop /* IN */);
ssize_t msdos_file_read(
@@ -301,15 +294,6 @@ int msdos_file_sync(rtems_libio_t *iop);
int msdos_file_datasync(rtems_libio_t *iop);
-int msdos_dir_open(
- rtems_libio_t *iop, /* IN */
- const char *pathname, /* IN */
- int oflag, /* IN */
- mode_t mode /* IN */
-);
-
-int msdos_dir_close(rtems_libio_t *iop /* IN */);
-
ssize_t msdos_dir_read(
rtems_libio_t *iop, /* IN */
void *buffer, /* IN */
diff --git a/cpukit/libfs/src/dosfs/msdos_dir.c b/cpukit/libfs/src/dosfs/msdos_dir.c
index be6b5a91ff..38ea6675f7 100644
--- a/cpukit/libfs/src/dosfs/msdos_dir.c
+++ b/cpukit/libfs/src/dosfs/msdos_dir.c
@@ -30,70 +30,6 @@
#include "msdos.h"
-/* msdos_dir_open --
- * Open fat-file which correspondes to the directory being opened and
- * set offset field of file control block to zero.
- */
-int
-msdos_dir_open(rtems_libio_t *iop, const char *pathname, int oflag,
- mode_t mode)
-{
- int rc = RC_OK;
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
- fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
-
- sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
- MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
- if (sc != RTEMS_SUCCESSFUL)
- rtems_set_errno_and_return_minus_one( EIO );
-
- rc = fat_file_reopen(fat_fd);
- if (rc != RC_OK)
- {
- rtems_semaphore_release(fs_info->vol_sema);
- return rc;
- }
-
- iop->offset = 0;
- rtems_semaphore_release(fs_info->vol_sema);
- return RC_OK;
-}
-
-/* msdos_dir_close --
- * Close fat-file which correspondes to the directory being closed
- *
- * PARAMETERS:
- * iop - file control block
- *
- * RETURNS:
- * RC_OK, if directory closed successfully, or -1 if error occured (errno
- * set apropriately.
- */
-int
-msdos_dir_close(rtems_libio_t *iop)
-{
- int rc = RC_OK;
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
- fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
-
- sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
- MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
- if (sc != RTEMS_SUCCESSFUL)
- rtems_set_errno_and_return_minus_one( EIO );
-
- rc = fat_file_close(iop->pathinfo.mt_entry, fat_fd);
- if (rc != RC_OK)
- {
- rtems_semaphore_release(fs_info->vol_sema);
- return rc;
- }
-
- rtems_semaphore_release(fs_info->vol_sema);
- return RC_OK;
-}
-
/* msdos_format_dirent_with_dot --
* This routine convert a (short) MSDOS filename as present on disk
* (fixed 8+3 characters, filled with blanks, without separator dot)
diff --git a/cpukit/libfs/src/dosfs/msdos_file.c b/cpukit/libfs/src/dosfs/msdos_file.c
index c2db196c77..6eb9b7953a 100644
--- a/cpukit/libfs/src/dosfs/msdos_file.c
+++ b/cpukit/libfs/src/dosfs/msdos_file.c
@@ -27,47 +27,6 @@
#include "msdos.h"
-/* msdos_file_open --
- * Open fat-file which correspondes to the file
- *
- * PARAMETERS:
- * iop - file control block
- * pathname - name
- * flag - flags
- * mode - mode
- *
- * RETURNS:
- * RC_OK, if file opened successfully, or -1 if error occured
- * and errno set appropriately
- */
-int
-msdos_file_open(rtems_libio_t *iop, const char *pathname, int oflag,
- mode_t mode)
-{
- int rc = RC_OK;
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
- fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
-
- sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
- MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
- if (sc != RTEMS_SUCCESSFUL)
- rtems_set_errno_and_return_minus_one(EIO);
-
- rc = fat_file_reopen(fat_fd);
- if (rc != RC_OK)
- {
- rtems_semaphore_release(fs_info->vol_sema);
- return rc;
- }
-
- if (iop->flags & LIBIO_FLAGS_APPEND)
- iop->offset = fat_fd->fat_file_size;
-
- rtems_semaphore_release(fs_info->vol_sema);
- return RC_OK;
-}
-
/* msdos_file_close --
* Close fat-file which correspondes to the file. If fat-file descriptor
* which correspondes to the file is not marked "removed", synchronize
@@ -121,8 +80,6 @@ msdos_file_close(rtems_libio_t *iop)
}
}
- rc = fat_file_close(iop->pathinfo.mt_entry, fat_fd);
-
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
@@ -186,6 +143,9 @@ msdos_file_write(rtems_libio_t *iop,const void *buffer, size_t count)
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
+ if ((iop->flags & LIBIO_FLAGS_APPEND) != 0)
+ iop->offset = fat_fd->fat_file_size;
+
ret = fat_file_write(iop->pathinfo.mt_entry, fat_fd, iop->offset, count,
buffer);
if (ret < 0)
diff --git a/cpukit/libfs/src/dosfs/msdos_handlers_dir.c b/cpukit/libfs/src/dosfs/msdos_handlers_dir.c
index eeaa77d15e..8c7dcdc0a5 100644
--- a/cpukit/libfs/src/dosfs/msdos_handlers_dir.c
+++ b/cpukit/libfs/src/dosfs/msdos_handlers_dir.c
@@ -19,8 +19,8 @@
#include "msdos.h"
const rtems_filesystem_file_handlers_r msdos_dir_handlers = {
- msdos_dir_open,
- msdos_dir_close,
+ rtems_filesystem_default_open,
+ rtems_filesystem_default_close,
msdos_dir_read,
rtems_filesystem_default_write,
rtems_filesystem_default_ioctl,
diff --git a/cpukit/libfs/src/dosfs/msdos_handlers_file.c b/cpukit/libfs/src/dosfs/msdos_handlers_file.c
index e68a09f1d3..12cdaa048e 100644
--- a/cpukit/libfs/src/dosfs/msdos_handlers_file.c
+++ b/cpukit/libfs/src/dosfs/msdos_handlers_file.c
@@ -19,7 +19,7 @@
#include "msdos.h"
const rtems_filesystem_file_handlers_r msdos_file_handlers = {
- msdos_file_open,
+ rtems_filesystem_default_open,
msdos_file_close,
msdos_file_read,
msdos_file_write,