[rtems commit] dosfs: Fix device identifier

Sebastian Huber sebh at rtems.org
Tue Nov 27 11:46:33 UTC 2018


Module:    rtems
Branch:    master
Commit:    06331e4dcb2495d323964cde4a5835110a6ed023
Changeset: http://git.rtems.org/rtems/commit/?id=06331e4dcb2495d323964cde4a5835110a6ed023

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Nov 27 11:56:01 2018 +0100

dosfs: Fix device identifier

Update #3358.

---

 cpukit/libfs/src/dosfs/fat.c            |  2 +-
 testsuites/fstests/fsdosfsname01/init.c | 41 +++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/cpukit/libfs/src/dosfs/fat.c b/cpukit/libfs/src/dosfs/fat.c
index cb45f91..8979065 100644
--- a/cpukit/libfs/src/dosfs/fat.c
+++ b/cpukit/libfs/src/dosfs/fat.c
@@ -505,7 +505,7 @@ fat_init_volume_info(fat_fs_info_t *fs_info, const char *device)
         rtems_set_errno_and_return_minus_one(ENXIO);
     }
 
-    vol->dev = stat_buf.st_dev;
+    vol->dev = stat_buf.st_rdev;
 
     /* Read boot record */
     /* FIXME: Asserts FAT_MAX_BPB_SIZE < bdbuf block size */
diff --git a/testsuites/fstests/fsdosfsname01/init.c b/testsuites/fstests/fsdosfsname01/init.c
index 90db282..1785b65 100644
--- a/testsuites/fstests/fsdosfsname01/init.c
+++ b/testsuites/fstests/fsdosfsname01/init.c
@@ -29,6 +29,7 @@
 #include <rtems/dosfs.h>
 #include <rtems/ramdisk.h>
 #include <rtems/libcsupport.h>
+#include <rtems/userenv.h>
 #include "image.h"
 #include "image_bin_le_singlebyte.h"
 #include "image_bin_le_multibyte.h"
@@ -1143,6 +1144,44 @@ static void test_file_with_same_name_as_volume_label( void )
   rtems_test_assert( rc == 0 );
 }
 
+static void test_getcwd( void )
+{
+  const char *dir_path = MOUNT_DIR "/somedir";
+  char cwd_buf[128];
+  char *cwd;
+  int rc;
+  rtems_status_code sc;
+
+  sc = rtems_libio_set_private_env();
+  rtems_test_assert( sc == RTEMS_SUCCESSFUL );
+
+  cwd = getcwd( cwd_buf, sizeof( cwd_buf ) );
+  rtems_test_assert( cwd != NULL );
+  rtems_test_assert( strcmp( cwd, "/" ) == 0 );
+
+  rc = mkdir( dir_path, S_IRWXU | S_IRWXG | S_IRWXO );
+  rtems_test_assert( rc == 0 );
+
+  rc = chdir( dir_path );
+  rtems_test_assert( rc == 0 );
+
+  cwd = getcwd( cwd_buf, sizeof( cwd_buf ) );
+  rtems_test_assert( cwd != NULL );
+  rtems_test_assert( strcmp( cwd, dir_path ) == 0 );
+
+  rc = chdir( "/" );
+  rtems_test_assert( rc == 0 );
+
+  rc = unlink( dir_path );
+  rtems_test_assert( rc == 0 );
+
+  cwd = getcwd( cwd_buf, sizeof( cwd_buf ) );
+  rtems_test_assert( cwd != NULL );
+  rtems_test_assert( strcmp( cwd, "/" ) == 0 );
+
+  rtems_libio_use_global_env();
+}
+
 static void test_special_cases( void )
 {
   test_end_of_string_matches();
@@ -1150,6 +1189,7 @@ static void test_special_cases( void )
   test_full_8_3_name();
   test_file_with_same_name_as_volume_label();
   test_dir_with_same_name_as_volume_label();
+  test_getcwd();
 }
 
 /*
@@ -1397,6 +1437,7 @@ size_t rtems_ramdisk_configuration_size = RTEMS_ARRAY_SIZE(rtems_ramdisk_configu
 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
 #define CONFIGURE_MAXIMUM_SEMAPHORES (2 * RTEMS_DOSFS_SEMAPHORES_PER_INSTANCE)
+#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 2
 #define CONFIGURE_APPLICATION_EXTRA_DRIVERS RAMDISK_DRIVER_TABLE_ENTRY
 
 #define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK



More information about the vc mailing list