forked from Imagelibrary/rtems
2011-08-02 Xiang Cui <medivhc@gmail.com>
* configure.ac, fserror/test.c, fslink/test.c, fspermission/test.c, fsrdwr/init.c, fssymlink/test.c, fstime/test.c, mdosfs_support/fs_config.h, mdosfs_support/fs_support.c, mimfs_support/fs_support.c, mrfs_support/fs_config.h, support/fstest.h, support/fstest_support.c, support/ramdisk_support.c, support/ramdisk_support.h: Perform first phase of clean up.
This commit is contained in:
@@ -1,3 +1,13 @@
|
|||||||
|
2011-08-02 Xiang Cui <medivhc@gmail.com>
|
||||||
|
|
||||||
|
* configure.ac, fserror/test.c, fslink/test.c, fspermission/test.c,
|
||||||
|
fsrdwr/init.c, fssymlink/test.c, fstime/test.c,
|
||||||
|
mdosfs_support/fs_config.h, mdosfs_support/fs_support.c,
|
||||||
|
mimfs_support/fs_support.c, mrfs_support/fs_config.h,
|
||||||
|
support/fstest.h, support/fstest_support.c,
|
||||||
|
support/ramdisk_support.c, support/ramdisk_support.h: Perform first
|
||||||
|
phase of clean up.
|
||||||
|
|
||||||
2011-08-01 Xiang Cui <medivhc@gmail.com>
|
2011-08-01 Xiang Cui <medivhc@gmail.com>
|
||||||
|
|
||||||
* imfs_fslink/Makefile.am, imfs_fssymlink/Makefile.am,
|
* imfs_fslink/Makefile.am, imfs_fssymlink/Makefile.am,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
## Process this file with autoconf to produce a configure script.
|
## Process this file with autoconf to produce a configure script.
|
||||||
##
|
##
|
||||||
## $Id$
|
## $Id$
|
||||||
|
|
||||||
AC_PREREQ([2.68])
|
AC_PREREQ([2.68])
|
||||||
@@ -78,32 +78,32 @@ AC_CHECK_SIZEOF([blksize_t])
|
|||||||
AC_CHECK_SIZEOF([blkcnt_t])
|
AC_CHECK_SIZEOF([blkcnt_t])
|
||||||
|
|
||||||
# Explicitly list all Makefiles here
|
# Explicitly list all Makefiles here
|
||||||
AC_CONFIG_FILES([Makefile
|
AC_CONFIG_FILES([Makefile
|
||||||
imfs_fserror/Makefile
|
imfs_fserror/Makefile
|
||||||
imfs_fslink/Makefile
|
imfs_fslink/Makefile
|
||||||
imfs_fspatheval/Makefile
|
imfs_fspatheval/Makefile
|
||||||
imfs_fspermission/Makefile
|
imfs_fspermission/Makefile
|
||||||
imfs_fsrdwr/Makefile
|
imfs_fsrdwr/Makefile
|
||||||
imfs_fssymlink/Makefile
|
imfs_fssymlink/Makefile
|
||||||
imfs_fstime/Makefile
|
imfs_fstime/Makefile
|
||||||
mdosfs_fserror/Makefile
|
mdosfs_fserror/Makefile
|
||||||
mdosfs_fspatheval/Makefile
|
mdosfs_fspatheval/Makefile
|
||||||
mdosfs_fsrdwr/Makefile
|
mdosfs_fsrdwr/Makefile
|
||||||
mdosfs_fstime/Makefile
|
mdosfs_fstime/Makefile
|
||||||
mimfs_fserror/Makefile
|
mimfs_fserror/Makefile
|
||||||
mimfs_fslink/Makefile
|
mimfs_fslink/Makefile
|
||||||
mimfs_fspatheval/Makefile
|
mimfs_fspatheval/Makefile
|
||||||
mimfs_fspermission/Makefile
|
mimfs_fspermission/Makefile
|
||||||
mimfs_fsrdwr/Makefile
|
mimfs_fsrdwr/Makefile
|
||||||
mimfs_fssymlink/Makefile
|
mimfs_fssymlink/Makefile
|
||||||
mimfs_fstime/Makefile
|
mimfs_fstime/Makefile
|
||||||
mrfs_fserror/Makefile
|
mrfs_fserror/Makefile
|
||||||
mrfs_fslink/Makefile
|
mrfs_fslink/Makefile
|
||||||
mrfs_fspatheval/Makefile
|
mrfs_fspatheval/Makefile
|
||||||
mrfs_fspermission/Makefile
|
mrfs_fspermission/Makefile
|
||||||
mrfs_fsrdwr/Makefile
|
mrfs_fsrdwr/Makefile
|
||||||
mrfs_fssymlink/Makefile
|
mrfs_fssymlink/Makefile
|
||||||
mrfs_fstime/Makefile
|
mrfs_fstime/Makefile
|
||||||
|
|
||||||
])
|
])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ void open_mkdir_error (void)
|
|||||||
/*
|
/*
|
||||||
* O_CREAT is not set and the named file does not exist
|
* O_CREAT is not set and the named file does not exist
|
||||||
* or O_CREAT is set and either the path prefix does not exist or
|
* or O_CREAT is set and either the path prefix does not exist or
|
||||||
* the path argument points to an empty string.
|
* the path argument points to an empty string.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
sprintf (name, "%s/%s", name03, name02);
|
sprintf (name, "%s/%s", name03, name02);
|
||||||
@@ -128,7 +128,7 @@ void rename_error (void)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new directory and a new directory in it
|
* Create a new directory and a new directory in it
|
||||||
*/
|
*/
|
||||||
|
|
||||||
status = mkdir (name01, mode);
|
status = mkdir (name01, mode);
|
||||||
@@ -147,12 +147,12 @@ void rename_error (void)
|
|||||||
rtems_test_assert (status != 0);
|
rtems_test_assert (status != 0);
|
||||||
rtems_test_assert (errno == EEXIST || errno == ENOTEMPTY);
|
rtems_test_assert (errno == EEXIST || errno == ENOTEMPTY);
|
||||||
/*
|
/*
|
||||||
* The new directory pathname contains a path prefix
|
* The new directory pathname contains a path prefix
|
||||||
* that names the old directory.
|
* that names the old directory.
|
||||||
*/
|
*/
|
||||||
EXPECT_ERROR (EINVAL, rename, name01, name);
|
EXPECT_ERROR (EINVAL, rename, name01, name);
|
||||||
/*
|
/*
|
||||||
* The new argument points to a directory and
|
* The new argument points to a directory and
|
||||||
* the old argument points to a file that is not a directory.
|
* the old argument points to a file that is not a directory.
|
||||||
*/
|
*/
|
||||||
fd = creat (name03, mode);
|
fd = creat (name03, mode);
|
||||||
@@ -206,7 +206,7 @@ void truncate_error (void)
|
|||||||
status = chdir (wd);
|
status = chdir (wd);
|
||||||
rtems_test_assert (status == 0);
|
rtems_test_assert (status == 0);
|
||||||
/*
|
/*
|
||||||
* Create a file
|
* Create a file
|
||||||
*/
|
*/
|
||||||
fd = creat (file, mode);
|
fd = creat (file, mode);
|
||||||
status = close (fd);
|
status = close (fd);
|
||||||
@@ -256,7 +256,8 @@ void rmdir_unlink_error (void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The path argument names a directory that is not an empty directory,
|
* The path argument names a directory that is not an empty directory,
|
||||||
* or there are hard links to the directory other than dot or a single entry in dot-dot.
|
* or there are hard links to the directory other than
|
||||||
|
* dot or a single entry in dot-dot.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
EXPECT_ERROR (ENOTEMPTY, rmdir, "..");
|
EXPECT_ERROR (ENOTEMPTY, rmdir, "..");
|
||||||
@@ -272,8 +273,9 @@ void rmdir_unlink_error (void)
|
|||||||
EXPECT_ERROR (EINVAL, rmdir, "tmp/.");
|
EXPECT_ERROR (EINVAL, rmdir, "tmp/.");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A component of path does not name an existing file,
|
* A component of path does not name an existing file,
|
||||||
* or the path argument names a nonexistent directory or points to an empty string
|
* or the path argument names a nonexistent directory or
|
||||||
|
* points to an empty string
|
||||||
*/
|
*/
|
||||||
EXPECT_ERROR (ENOENT, rmdir, "");
|
EXPECT_ERROR (ENOENT, rmdir, "");
|
||||||
EXPECT_ERROR (ENOENT, rmdir, nonexistence);
|
EXPECT_ERROR (ENOENT, rmdir, nonexistence);
|
||||||
@@ -338,7 +340,7 @@ void rdwr_error (void)
|
|||||||
EXPECT_ERROR (EBADF, write, 100, readbuf, 10);
|
EXPECT_ERROR (EBADF, write, 100, readbuf, 10);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The whence argument is not a proper value,
|
* The whence argument is not a proper value,
|
||||||
* or the resulting file offset would be negative for a regular file,
|
* or the resulting file offset would be negative for a regular file,
|
||||||
* block special file, or directory.
|
* block special file, or directory.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ void link_test01 (void)
|
|||||||
rtems_test_assert (statbuf.st_nlink == 2);
|
rtems_test_assert (statbuf.st_nlink == 2);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* link the file and check the nlink
|
* link the file and check the nlink
|
||||||
*/
|
*/
|
||||||
status = link (name1, name2);
|
status = link (name1, name2);
|
||||||
rtems_test_assert (status == 0);
|
rtems_test_assert (status == 0);
|
||||||
|
|||||||
@@ -40,9 +40,9 @@ void umask_test01(void )
|
|||||||
char* directory01="dir01";
|
char* directory01="dir01";
|
||||||
|
|
||||||
const char* wd=__func__;
|
const char* wd=__func__;
|
||||||
|
|
||||||
mode_t mode=S_IRWXU|S_IRWXG|S_IRWXO ;
|
mode_t mode=S_IRWXU|S_IRWXG|S_IRWXO ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -88,7 +88,7 @@ void umask_test01(void )
|
|||||||
tmp_mode = (statbuf.st_mode) & ALLPERMS;
|
tmp_mode = (statbuf.st_mode) & ALLPERMS;
|
||||||
printf("The file mode of %s is %03o\n",file02,(unsigned int)tmp_mode);
|
printf("The file mode of %s is %03o\n",file02,(unsigned int)tmp_mode);
|
||||||
rtems_test_assert(tmp_mode==file_mode);
|
rtems_test_assert(tmp_mode==file_mode);
|
||||||
|
|
||||||
status = stat (directory01, &statbuf);
|
status = stat (directory01, &statbuf);
|
||||||
rtems_test_assert (status == 0);
|
rtems_test_assert (status == 0);
|
||||||
tmp_mode = (statbuf.st_mode) & ALLPERMS;
|
tmp_mode = (statbuf.st_mode) & ALLPERMS;
|
||||||
@@ -136,7 +136,7 @@ void umask_test01(void )
|
|||||||
tmp_mode = (statbuf.st_mode) & ALLPERMS;
|
tmp_mode = (statbuf.st_mode) & ALLPERMS;
|
||||||
printf("The file mode of %s is %03o\n",file02,(unsigned int)tmp_mode);
|
printf("The file mode of %s is %03o\n",file02,(unsigned int)tmp_mode);
|
||||||
rtems_test_assert(tmp_mode==file_mode);
|
rtems_test_assert(tmp_mode==file_mode);
|
||||||
|
|
||||||
status = stat (directory01, &statbuf);
|
status = stat (directory01, &statbuf);
|
||||||
rtems_test_assert (status == 0);
|
rtems_test_assert (status == 0);
|
||||||
tmp_mode = (statbuf.st_mode) & ALLPERMS;
|
tmp_mode = (statbuf.st_mode) & ALLPERMS;
|
||||||
@@ -167,17 +167,17 @@ void test_premission01(void )
|
|||||||
char path[20];
|
char path[20];
|
||||||
char* test_data="Test Data";
|
char* test_data="Test Data";
|
||||||
char* data_buf;
|
char* data_buf;
|
||||||
size_t len=strlen(test_data);
|
size_t len=strlen(test_data);
|
||||||
|
|
||||||
int n;
|
int n;
|
||||||
DIR *dp;
|
DIR *dp;
|
||||||
|
|
||||||
const char* wd=__func__;
|
const char* wd=__func__;
|
||||||
|
|
||||||
mode_t mode=S_IRWXU|S_IRWXG|S_IRWXO ;
|
mode_t mode=S_IRWXU|S_IRWXG|S_IRWXO ;
|
||||||
uid_t user_id =65534;
|
uid_t user_id =65534;
|
||||||
gid_t group_id =65534;
|
gid_t group_id =65534;
|
||||||
|
|
||||||
uid_t another_user_id =65533;
|
uid_t another_user_id =65533;
|
||||||
gid_t another_group_id =65533;
|
gid_t another_group_id =65533;
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ void test_premission01(void )
|
|||||||
rtems_test_assert(statbuf.st_gid==group_id);
|
rtems_test_assert(statbuf.st_gid==group_id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create directory and a file in it for tese
|
* Create directory and a file in it for tese
|
||||||
*/
|
*/
|
||||||
|
|
||||||
status=mkdir(directory01,0777);
|
status=mkdir(directory01,0777);
|
||||||
@@ -253,7 +253,7 @@ void test_premission01(void )
|
|||||||
rtems_test_assert(statbuf.st_gid==group_id);
|
rtems_test_assert(statbuf.st_gid==group_id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check the file with open and write
|
* Check the file with open and write
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -264,7 +264,7 @@ void test_premission01(void )
|
|||||||
rtems_test_assert(n==len);
|
rtems_test_assert(n==len);
|
||||||
status=close(fd);
|
status=close(fd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert(status==0);
|
||||||
|
|
||||||
fd=open(file02,O_WRONLY);
|
fd=open(file02,O_WRONLY);
|
||||||
n=write(fd,test_data,len);
|
n=write(fd,test_data,len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert(n==len);
|
||||||
@@ -281,7 +281,7 @@ void test_premission01(void )
|
|||||||
rtems_test_assert(n==len);
|
rtems_test_assert(n==len);
|
||||||
status=close(fd);
|
status=close(fd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert(status==0);
|
||||||
|
|
||||||
EXPECT_ERROR(EACCES,open,file02,O_RDONLY);
|
EXPECT_ERROR(EACCES,open,file02,O_RDONLY);
|
||||||
EXPECT_ERROR(EACCES,open,file02,O_RDWR);
|
EXPECT_ERROR(EACCES,open,file02,O_RDWR);
|
||||||
|
|
||||||
@@ -349,7 +349,7 @@ void test_premission01(void )
|
|||||||
|
|
||||||
status=seteuid(another_user_id);
|
status=seteuid(another_user_id);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert(status==0);
|
||||||
|
|
||||||
EXPECT_ERROR(EACCES,open,file02,O_WRONLY);
|
EXPECT_ERROR(EACCES,open,file02,O_WRONLY);
|
||||||
EXPECT_ERROR(EACCES,open,file02,O_RDONLY);
|
EXPECT_ERROR(EACCES,open,file02,O_RDONLY);
|
||||||
EXPECT_ERROR(EACCES,open,file02,O_RDWR);
|
EXPECT_ERROR(EACCES,open,file02,O_RDWR);
|
||||||
@@ -395,7 +395,7 @@ void test_premission02(void )
|
|||||||
mode_t file_mode=0321;
|
mode_t file_mode=0321;
|
||||||
|
|
||||||
const char* wd=__func__;
|
const char* wd=__func__;
|
||||||
|
|
||||||
mode_t mode=S_IRWXU|S_IRWXG|S_IRWXO ;
|
mode_t mode=S_IRWXU|S_IRWXG|S_IRWXO ;
|
||||||
uid_t user_id =65534;
|
uid_t user_id =65534;
|
||||||
gid_t group_id =65534;
|
gid_t group_id =65534;
|
||||||
|
|||||||
@@ -21,12 +21,13 @@
|
|||||||
#include "fstest.h"
|
#include "fstest.h"
|
||||||
|
|
||||||
const char *databuf =
|
const char *databuf =
|
||||||
"Happy days are here again. Happy days are here again.1Happy "
|
"Happy days are here again. Happy days are here again.1Happy "
|
||||||
"days are here again.2Happy days are here again.3Happy days are here again."
|
"days are here again.2Happy days are here again.3Happy days are here again."
|
||||||
"4Happy days are here again.5Happy days are here again.6Happy days are here "
|
"4Happy days are here again.5Happy days are here again.6Happy days are here "
|
||||||
"again.7Happy days are here again.";
|
"again.7Happy days are here again.";
|
||||||
|
|
||||||
void read_write_test (void)
|
void
|
||||||
|
read_write_test (void)
|
||||||
{
|
{
|
||||||
|
|
||||||
int fd;
|
int fd;
|
||||||
@@ -42,15 +43,15 @@ void read_write_test (void)
|
|||||||
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
|
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
|
||||||
|
|
||||||
|
|
||||||
const char* wd=__func__;
|
const char *wd = __func__;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new directory and change the current directory to this
|
* Create a new directory and change the current directory to this
|
||||||
*/
|
*/
|
||||||
status=mkdir(wd,mode);
|
status = mkdir (wd, mode);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
status=chdir(wd);
|
status = chdir (wd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
/*
|
/*
|
||||||
* Create an empty file
|
* Create an empty file
|
||||||
*/
|
*/
|
||||||
@@ -142,7 +143,7 @@ void read_write_test (void)
|
|||||||
rtems_test_assert (status == 0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Open the file using O_TRUNC
|
* Open the file using O_TRUNC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fd = open (name01, O_WRONLY | O_TRUNC);
|
fd = open (name01, O_WRONLY | O_TRUNC);
|
||||||
@@ -173,347 +174,351 @@ void read_write_test (void)
|
|||||||
/*
|
/*
|
||||||
* Go back to parent directory
|
* Go back to parent directory
|
||||||
*/
|
*/
|
||||||
status=chdir("..");
|
status = chdir ("..");
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void truncate_test03(void )
|
void
|
||||||
|
truncate_test03 (void)
|
||||||
{
|
{
|
||||||
|
|
||||||
int fd;
|
int fd;
|
||||||
int status;
|
int status;
|
||||||
char *name01="name01";
|
char *name01 = "name01";
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
|
||||||
char data;
|
char data;
|
||||||
int n;
|
int n;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
size_t len = strlen(databuf);
|
size_t len = strlen (databuf);
|
||||||
|
|
||||||
char *readbuf;
|
char *readbuf;
|
||||||
off_t good_size=100;
|
off_t good_size = 100;
|
||||||
mode_t mode = S_IRWXU|S_IRWXG|S_IRWXO;
|
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
|
||||||
|
|
||||||
|
|
||||||
const char* wd=__func__;
|
const char *wd = __func__;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new directory and change the current directory to this
|
* Create a new directory and change the current directory to this
|
||||||
*/
|
*/
|
||||||
status=mkdir(wd,mode);
|
status = mkdir (wd, mode);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
status=chdir(wd);
|
status = chdir (wd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create an empty file
|
* Create an empty file
|
||||||
*/
|
*/
|
||||||
fd=creat(name01,mode);
|
fd = creat (name01, mode);
|
||||||
status=close(fd);
|
status = close (fd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Truncate it to a valid size
|
* Truncate it to a valid size
|
||||||
*/
|
*/
|
||||||
status=truncate(name01,good_size);
|
status = truncate (name01, good_size);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
/*
|
/*
|
||||||
* Verify the size and the data
|
* Verify the size and the data
|
||||||
*/
|
*/
|
||||||
status=stat(name01,&statbuf);
|
status = stat (name01, &statbuf);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
rtems_test_assert(good_size==statbuf.st_size);
|
rtems_test_assert (good_size == statbuf.st_size);
|
||||||
|
|
||||||
fd=open(name01,O_RDONLY);
|
fd = open (name01, O_RDONLY);
|
||||||
while ((n=read(fd,&data,1))>0) {
|
while ((n = read (fd, &data, 1)) > 0) {
|
||||||
rtems_test_assert(data==0);
|
rtems_test_assert (data == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
status=close(fd);
|
status = close (fd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill a file with data
|
* Fill a file with data
|
||||||
*/
|
*/
|
||||||
fd=open(name01,O_WRONLY);
|
fd = open (name01, O_WRONLY);
|
||||||
rtems_test_assert(fd!=-1);
|
rtems_test_assert (fd != -1);
|
||||||
n=write(fd,databuf,len);
|
n = write (fd, databuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Truncate it to the half size
|
* Truncate it to the half size
|
||||||
*/
|
*/
|
||||||
|
|
||||||
status=truncate(name01,len/2);
|
status = truncate (name01, len / 2);
|
||||||
status=truncate(name01,len);
|
status = truncate (name01, len);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* verify the data
|
* verify the data
|
||||||
*/
|
*/
|
||||||
readbuf = (char *)malloc(len/2);
|
readbuf = (char *) malloc (len / 2);
|
||||||
rtems_test_assert( readbuf );
|
rtems_test_assert (readbuf);
|
||||||
fd=open(name01,O_RDONLY);
|
fd = open (name01, O_RDONLY);
|
||||||
rtems_test_assert(fd!=-1);
|
rtems_test_assert (fd != -1);
|
||||||
n=read(fd,readbuf,len/2);
|
n = read (fd, readbuf, len / 2);
|
||||||
rtems_test_assert(n==len/2);
|
rtems_test_assert (n == len / 2);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len/2));
|
rtems_test_assert (!strncmp (databuf, readbuf, len / 2));
|
||||||
n=read(fd,readbuf,len/2);
|
n = read (fd, readbuf, len / 2);
|
||||||
rtems_test_assert(n==len/2);
|
rtems_test_assert (n == len / 2);
|
||||||
for (i=0;i<len/2;i++){
|
for (i = 0; i < len / 2; i++) {
|
||||||
rtems_test_assert(readbuf[i]==0);
|
rtems_test_assert (readbuf[i] == 0);
|
||||||
}
|
}
|
||||||
status=close(fd);
|
status = close (fd);
|
||||||
rtems_test_assert( status==0 );
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Go back to parent directory
|
* Go back to parent directory
|
||||||
*/
|
*/
|
||||||
status=chdir("..");
|
status = chdir ("..");
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lseek_test(void)
|
void
|
||||||
|
lseek_test (void)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
int status;
|
int status;
|
||||||
char *name01="test_name01";
|
char *name01 = "test_name01";
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
|
||||||
int n;
|
int n;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
size_t len = strlen(databuf);
|
size_t len = strlen (databuf);
|
||||||
off_t pos;
|
off_t pos;
|
||||||
int total_written=0;
|
int total_written = 0;
|
||||||
|
|
||||||
char *readbuf;
|
char *readbuf;
|
||||||
mode_t mode = S_IRWXU|S_IRWXG|S_IRWXO;
|
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const char* wd=__func__;
|
const char *wd = __func__;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new directory and change the current directory to this
|
* Create a new directory and change the current directory to this
|
||||||
*/
|
*/
|
||||||
status=mkdir(wd,mode);
|
status = mkdir (wd, mode);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
status=chdir(wd);
|
status = chdir (wd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a file and fill with the data.
|
* Create a file and fill with the data.
|
||||||
*/
|
*/
|
||||||
puts("Create a new file");
|
puts ("Create a new file");
|
||||||
fd=creat(name01,mode);
|
fd = creat (name01, mode);
|
||||||
rtems_test_assert(fd!=-1);
|
rtems_test_assert (fd != -1);
|
||||||
|
|
||||||
pos=lseek(fd,0,SEEK_CUR);
|
pos = lseek (fd, 0, SEEK_CUR);
|
||||||
rtems_test_assert(pos==0);
|
rtems_test_assert (pos == 0);
|
||||||
|
|
||||||
pos=lseek(fd,0,SEEK_END);
|
pos = lseek (fd, 0, SEEK_END);
|
||||||
rtems_test_assert(pos==0);
|
rtems_test_assert (pos == 0);
|
||||||
|
|
||||||
pos=lseek(fd,0,SEEK_SET);
|
|
||||||
rtems_test_assert(pos==0);
|
|
||||||
|
|
||||||
|
|
||||||
printf( "Writing %d bytes to file\n", len * 10 );
|
pos = lseek (fd, 0, SEEK_SET);
|
||||||
for (i=0; i<10; i++) {
|
rtems_test_assert (pos == 0);
|
||||||
n = write(fd, databuf, len);
|
|
||||||
rtems_test_assert( n != -1 );
|
|
||||||
|
printf ("Writing %d bytes to file\n", len * 10);
|
||||||
|
for (i = 0; i < 10; i++) {
|
||||||
|
n = write (fd, databuf, len);
|
||||||
|
rtems_test_assert (n != -1);
|
||||||
total_written += n;
|
total_written += n;
|
||||||
}
|
}
|
||||||
printf("Successfully wrote %d\n", total_written);
|
printf ("Successfully wrote %d\n", total_written);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check the current position
|
* Check the current position
|
||||||
*/
|
*/
|
||||||
puts("Check the current position");
|
puts ("Check the current position");
|
||||||
pos=lseek(fd,0,SEEK_CUR);
|
pos = lseek (fd, 0, SEEK_CUR);
|
||||||
rtems_test_assert(pos==total_written);
|
rtems_test_assert (pos == total_written);
|
||||||
|
|
||||||
pos=lseek(fd,0,SEEK_END);
|
pos = lseek (fd, 0, SEEK_END);
|
||||||
rtems_test_assert(pos==total_written);
|
rtems_test_assert (pos == total_written);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ftruncate shall not change the posistion
|
* ftruncate shall not change the posistion
|
||||||
*/
|
*/
|
||||||
status=ftruncate(fd,total_written+1);
|
status = ftruncate (fd, total_written + 1);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
pos=lseek(fd,0,SEEK_CUR);
|
pos = lseek (fd, 0, SEEK_CUR);
|
||||||
rtems_test_assert(pos==total_written);
|
rtems_test_assert (pos == total_written);
|
||||||
|
|
||||||
pos=lseek(fd,0,SEEK_END);
|
pos = lseek (fd, 0, SEEK_END);
|
||||||
printf("%jd\n",(intmax_t)pos);
|
printf ("%jd\n", (intmax_t) pos);
|
||||||
rtems_test_assert(pos==total_written+1);
|
rtems_test_assert (pos == total_written + 1);
|
||||||
|
|
||||||
status=ftruncate(fd,total_written);
|
status = ftruncate (fd, total_written);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
pos=lseek(fd,0,SEEK_CUR);
|
pos = lseek (fd, 0, SEEK_CUR);
|
||||||
rtems_test_assert(pos==total_written+1);
|
rtems_test_assert (pos == total_written + 1);
|
||||||
|
|
||||||
|
|
||||||
status=close(fd);
|
status = close (fd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check the file size
|
* Check the file size
|
||||||
*/
|
*/
|
||||||
status=stat(name01,&statbuf);
|
status = stat (name01, &statbuf);
|
||||||
rtems_test_assert(statbuf.st_size==total_written);
|
rtems_test_assert (statbuf.st_size == total_written);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Open the file with O_RDONLY and check the lseek
|
* Open the file with O_RDONLY and check the lseek
|
||||||
*/
|
*/
|
||||||
readbuf=(char*)malloc(len);
|
readbuf = (char *) malloc (len);
|
||||||
fd=open(name01,O_RDONLY);
|
fd = open (name01, O_RDONLY);
|
||||||
pos=lseek(fd,len,SEEK_CUR);
|
pos = lseek (fd, len, SEEK_CUR);
|
||||||
rtems_test_assert(pos==len);
|
rtems_test_assert (pos == len);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
pos=lseek(fd,len,SEEK_CUR);
|
pos = lseek (fd, len, SEEK_CUR);
|
||||||
rtems_test_assert(pos==3*len);
|
rtems_test_assert (pos == 3 * len);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
pos=lseek(fd,-len,SEEK_CUR);
|
pos = lseek (fd, -len, SEEK_CUR);
|
||||||
rtems_test_assert(pos==3*len);
|
rtems_test_assert (pos == 3 * len);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
pos=lseek(fd,4*len,SEEK_SET);
|
pos = lseek (fd, 4 * len, SEEK_SET);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
|
|
||||||
pos=lseek(fd,10,SEEK_SET);
|
|
||||||
n=read(fd,readbuf,len);
|
|
||||||
rtems_test_assert(n==len);
|
|
||||||
rtems_test_assert(strncmp(databuf,readbuf,len)!=0);
|
|
||||||
|
|
||||||
pos=lseek(fd,-len,SEEK_END);
|
pos = lseek (fd, 10, SEEK_SET);
|
||||||
n=read(fd,readbuf,2*len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (strncmp (databuf, readbuf, len) != 0);
|
||||||
|
|
||||||
status=close(fd);
|
pos = lseek (fd, -len, SEEK_END);
|
||||||
rtems_test_assert(status==0);
|
n = read (fd, readbuf, 2 * len);
|
||||||
|
rtems_test_assert (n == len);
|
||||||
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
|
status = close (fd);
|
||||||
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Open the file withe O_RDWR and check the lseek
|
* Open the file withe O_RDWR and check the lseek
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fd=open(name01,O_RDWR);
|
fd = open (name01, O_RDWR);
|
||||||
|
|
||||||
pos=lseek(fd,len,SEEK_CUR);
|
pos = lseek (fd, len, SEEK_CUR);
|
||||||
rtems_test_assert(pos==len);
|
rtems_test_assert (pos == len);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
pos=lseek(fd,len,SEEK_CUR);
|
pos = lseek (fd, len, SEEK_CUR);
|
||||||
rtems_test_assert(pos==3*len);
|
rtems_test_assert (pos == 3 * len);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
pos=lseek(fd,-len,SEEK_CUR);
|
pos = lseek (fd, -len, SEEK_CUR);
|
||||||
rtems_test_assert(pos==3*len);
|
rtems_test_assert (pos == 3 * len);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
pos=lseek(fd,4*len,SEEK_SET);
|
pos = lseek (fd, 4 * len, SEEK_SET);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Go to the wrong position, so the data is not the same
|
* Go to the wrong position, so the data is not the same
|
||||||
*/
|
*/
|
||||||
pos=lseek(fd,10,SEEK_SET);
|
pos = lseek (fd, 10, SEEK_SET);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(strncmp(databuf,readbuf,len)!=0);
|
rtems_test_assert (strncmp (databuf, readbuf, len) != 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use SEEK_END
|
* Use SEEK_END
|
||||||
*/
|
*/
|
||||||
pos=lseek(fd,-len,SEEK_END);
|
pos = lseek (fd, -len, SEEK_END);
|
||||||
n=read(fd,readbuf,2*len);
|
n = read (fd, readbuf, 2 * len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(!strncmp(databuf,readbuf,len));
|
rtems_test_assert (!strncmp (databuf, readbuf, len));
|
||||||
|
|
||||||
memset(readbuf,0,len);
|
memset (readbuf, 0, len);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write the zero to the end of file.
|
* Write the zero to the end of file.
|
||||||
*/
|
*/
|
||||||
pos=lseek(fd,-len,SEEK_END);
|
pos = lseek (fd, -len, SEEK_END);
|
||||||
rtems_test_assert(pos==total_written-len);
|
rtems_test_assert (pos == total_written - len);
|
||||||
n=write(fd,readbuf,len);
|
n = write (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
/*
|
/*
|
||||||
* Verify it
|
* Verify it
|
||||||
*/
|
*/
|
||||||
pos=lseek(fd,total_written-len,SEEK_SET);
|
pos = lseek (fd, total_written - len, SEEK_SET);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
for (i=0;i<n;i++){
|
for (i = 0; i < n; i++) {
|
||||||
rtems_test_assert(readbuf[i]==0);
|
rtems_test_assert (readbuf[i] == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write the zero to the beginning of file.
|
* Write the zero to the beginning of file.
|
||||||
*/
|
*/
|
||||||
pos=lseek(fd,-total_written,SEEK_END);
|
pos = lseek (fd, -total_written, SEEK_END);
|
||||||
rtems_test_assert(pos==0);
|
rtems_test_assert (pos == 0);
|
||||||
n=write(fd,readbuf,len);
|
n = write (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Verify it
|
* Verify it
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pos=lseek(fd,0,SEEK_SET);
|
pos = lseek (fd, 0, SEEK_SET);
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
for (i=0;i<n;i++){
|
for (i = 0; i < n; i++) {
|
||||||
rtems_test_assert(readbuf[i]==0);
|
rtems_test_assert (readbuf[i] == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
n=read(fd,readbuf,len);
|
n = read (fd, readbuf, len);
|
||||||
rtems_test_assert(n==len);
|
rtems_test_assert (n == len);
|
||||||
rtems_test_assert(strncmp(databuf,readbuf,len)==0);
|
rtems_test_assert (strncmp (databuf, readbuf, len) == 0);
|
||||||
/*
|
/*
|
||||||
* Call ftruncate to decrease the file and the position not change
|
* Call ftruncate to decrease the file and the position not change
|
||||||
*/
|
*/
|
||||||
status=ftruncate(fd,len);
|
status = ftruncate (fd, len);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
pos=lseek(fd,0,SEEK_CUR);
|
pos = lseek (fd, 0, SEEK_CUR);
|
||||||
rtems_test_assert(pos==len*2);
|
rtems_test_assert (pos == len * 2);
|
||||||
|
|
||||||
status=close(fd);
|
status = close (fd);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
/*
|
/*
|
||||||
* Go back to parent directory
|
* Go back to parent directory
|
||||||
*/
|
*/
|
||||||
status=chdir("..");
|
status = chdir ("..");
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert (status == 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
void test(void )
|
|
||||||
|
void
|
||||||
|
test (void)
|
||||||
{
|
{
|
||||||
read_write_test();
|
read_write_test ();
|
||||||
lseek_test();
|
lseek_test ();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
#include "fstest.h"
|
#include "fstest.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Test the function of symlink
|
* Test the function of symlink
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void symlink_test01(void )
|
void symlink_test01(void )
|
||||||
@@ -37,7 +37,7 @@ void symlink_test01(void )
|
|||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
size_t len=strlen(file01);
|
size_t len=strlen(file01);
|
||||||
size_t name_len;
|
size_t name_len;
|
||||||
|
|
||||||
|
|
||||||
printf("Create a file named %s\n",file01);
|
printf("Create a file named %s\n",file01);
|
||||||
fd=creat(file01,0777);
|
fd=creat(file01,0777);
|
||||||
@@ -58,7 +58,7 @@ void symlink_test01(void )
|
|||||||
rtems_test_assert(S_ISLNK(statbuf.st_mode));
|
rtems_test_assert(S_ISLNK(statbuf.st_mode));
|
||||||
rtems_test_assert(len==statbuf.st_size);
|
rtems_test_assert(len==statbuf.st_size);
|
||||||
|
|
||||||
|
|
||||||
puts("call readlink ");
|
puts("call readlink ");
|
||||||
name_len=readlink(symlink_file01,name,sizeof(name)-1);
|
name_len=readlink(symlink_file01,name,sizeof(name)-1);
|
||||||
rtems_test_assert(name_len!=-1);
|
rtems_test_assert(name_len!=-1);
|
||||||
@@ -67,7 +67,7 @@ void symlink_test01(void )
|
|||||||
puts(name);
|
puts(name);
|
||||||
|
|
||||||
puts("Unlink the file");
|
puts("Unlink the file");
|
||||||
|
|
||||||
status=unlink(file01);
|
status=unlink(file01);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert(status==0);
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ void symlink_test01(void )
|
|||||||
rtems_test_assert(status==0);
|
rtems_test_assert(status==0);
|
||||||
rtems_test_assert(S_ISLNK(statbuf.st_mode));
|
rtems_test_assert(S_ISLNK(statbuf.st_mode));
|
||||||
rtems_test_assert(len==statbuf.st_size);
|
rtems_test_assert(len==statbuf.st_size);
|
||||||
|
|
||||||
puts("call readlink ");
|
puts("call readlink ");
|
||||||
name_len=readlink(symlink_file01,name,sizeof(name)-1);
|
name_len=readlink(symlink_file01,name,sizeof(name)-1);
|
||||||
rtems_test_assert(name_len!=-1);
|
rtems_test_assert(name_len!=-1);
|
||||||
@@ -86,7 +86,7 @@ void symlink_test01(void )
|
|||||||
|
|
||||||
printf("Create a dir named %s\n",file01);
|
printf("Create a dir named %s\n",file01);
|
||||||
status=mkdir (file01,0777);
|
status=mkdir (file01,0777);
|
||||||
|
|
||||||
printf("Create a symlink named %s to %s\n",symlink_file01,file01);
|
printf("Create a symlink named %s to %s\n",symlink_file01,file01);
|
||||||
status=symlink(file01,symlink_file01);
|
status=symlink(file01,symlink_file01);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert(status==0);
|
||||||
@@ -96,7 +96,7 @@ void symlink_test01(void )
|
|||||||
rtems_test_assert(S_ISLNK(statbuf.st_mode));
|
rtems_test_assert(S_ISLNK(statbuf.st_mode));
|
||||||
rtems_test_assert(len==statbuf.st_size);
|
rtems_test_assert(len==statbuf.st_size);
|
||||||
|
|
||||||
|
|
||||||
puts("call readlink ");
|
puts("call readlink ");
|
||||||
name_len=readlink(symlink_file01,name,sizeof(name)-1);
|
name_len=readlink(symlink_file01,name,sizeof(name)-1);
|
||||||
rtems_test_assert(name_len!=-1);
|
rtems_test_assert(name_len!=-1);
|
||||||
@@ -141,7 +141,7 @@ void symlink_loop_error_test(void )
|
|||||||
rtems_test_assert(status==0);
|
rtems_test_assert(status==0);
|
||||||
status=symlink(file02,file01);
|
status=symlink(file02,file01);
|
||||||
rtems_test_assert(status==0);
|
rtems_test_assert(status==0);
|
||||||
|
|
||||||
|
|
||||||
EXPECT_ERROR(ELOOP,creat,path,mode);
|
EXPECT_ERROR(ELOOP,creat,path,mode);
|
||||||
EXPECT_ERROR(ELOOP,open,path,O_CREAT|O_WRONLY,mode);
|
EXPECT_ERROR(ELOOP,open,path,O_CREAT|O_WRONLY,mode);
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ void time_test01 (void)
|
|||||||
mtime2 = statbuf.st_mtime;
|
mtime2 = statbuf.st_mtime;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure they are the same
|
* Make sure they are the same
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rtems_test_assert (TIME_EQUAL (ctime1, mtime1));
|
rtems_test_assert (TIME_EQUAL (ctime1, mtime1));
|
||||||
@@ -98,7 +98,7 @@ void time_test01 (void)
|
|||||||
mtime2 = statbuf.st_mtime;
|
mtime2 = statbuf.st_mtime;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure they are the same
|
* Make sure they are the same
|
||||||
*/
|
*/
|
||||||
rtems_test_assert (TIME_EQUAL (ctime1, mtime1));
|
rtems_test_assert (TIME_EQUAL (ctime1, mtime1));
|
||||||
rtems_test_assert (TIME_EQUAL (ctime1, mtime2));
|
rtems_test_assert (TIME_EQUAL (ctime1, mtime2));
|
||||||
@@ -112,7 +112,7 @@ void time_test01 (void)
|
|||||||
sleep (TIME_PRECISION);
|
sleep (TIME_PRECISION);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create an empty directory
|
* Create an empty directory
|
||||||
*/
|
*/
|
||||||
status = mkdir (dir01, mode);
|
status = mkdir (dir01, mode);
|
||||||
rtems_test_assert (status == 0);
|
rtems_test_assert (status == 0);
|
||||||
@@ -133,11 +133,11 @@ void time_test01 (void)
|
|||||||
* truncate shall not modify the file offset for any open file
|
* truncate shall not modify the file offset for any open file
|
||||||
* descriptions associated with the file. Upon successful completion,
|
* descriptions associated with the file. Upon successful completion,
|
||||||
* if the file size is changed, this function shall mark for update
|
* if the file size is changed, this function shall mark for update
|
||||||
* the st_ctime and st_mtime fields of the file
|
* the st_ctime and st_mtime fields of the file
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* file01 shall not update
|
* file01 shall not update
|
||||||
*/
|
*/
|
||||||
status = stat (file01, &statbuf);
|
status = stat (file01, &statbuf);
|
||||||
rtems_test_assert (status == 0);
|
rtems_test_assert (status == 0);
|
||||||
@@ -160,7 +160,7 @@ void time_test01 (void)
|
|||||||
rtems_test_assert (!TIME_EQUAL (ctime1, ctime2));
|
rtems_test_assert (!TIME_EQUAL (ctime1, ctime2));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Upon successful completion, mkdir() shall mark for update the
|
* Upon successful completion, mkdir() shall mark for update the
|
||||||
* 5st_atime, st_ctime, and st_mtime fields of the directory.
|
* 5st_atime, st_ctime, and st_mtime fields of the directory.
|
||||||
* Also, the st_ctime and st_mtime fields of the directory that
|
* Also, the st_ctime and st_mtime fields of the directory that
|
||||||
* contains the new entry shall be marked for update.
|
* contains the new entry shall be marked for update.
|
||||||
@@ -252,7 +252,7 @@ void time_test01 (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These tests only get time_t value, and test
|
* These tests only get time_t value, and test
|
||||||
* if they are changed. Thest tests don't check atime
|
* if they are changed. Thest tests don't check atime
|
||||||
*/
|
*/
|
||||||
void test (void)
|
void test (void)
|
||||||
|
|||||||
@@ -15,6 +15,5 @@
|
|||||||
#define MDOSFS_TEST
|
#define MDOSFS_TEST
|
||||||
|
|
||||||
#define FILESYSTEM "MOUNTED DOSFS"
|
#define FILESYSTEM "MOUNTED DOSFS"
|
||||||
#define BASE_FOR_TEST "/mnt/"
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -20,7 +20,9 @@
|
|||||||
|
|
||||||
#include <rtems/libio.h>
|
#include <rtems/libio.h>
|
||||||
#include <rtems/dosfs.h>
|
#include <rtems/dosfs.h>
|
||||||
|
|
||||||
#include "ramdisk_support.h"
|
#include "ramdisk_support.h"
|
||||||
|
#include "fstest.h"
|
||||||
|
|
||||||
#define BLOCK_SIZE 512
|
#define BLOCK_SIZE 512
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ test_shutdown_filesystem (void)
|
|||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||||
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 10
|
#define CONFIGURE_MAXIMUM_TASKS 10
|
||||||
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
|
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
|
||||||
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 40
|
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 40
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
* $Id$
|
* COPYRIGHT (c) 1989-2011.
|
||||||
|
* On-Line Applications Research Corporation (OAR).
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in the file LICENSE in this distribution or at
|
||||||
|
* http://www.rtems.com/license/LICENSE.
|
||||||
|
*
|
||||||
|
* $Id Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MIMFS_SUPPORT_h
|
#ifndef __MIMFS_SUPPORT_h
|
||||||
|
|||||||
@@ -22,7 +22,9 @@
|
|||||||
|
|
||||||
|
|
||||||
#define FS_PASS() do {puts("PASS");} while (0)
|
#define FS_PASS() do {puts("PASS");} while (0)
|
||||||
#define FS_FAIL() do {printf( "FAIL %s: %d \n", __FILE__, __LINE__ ); } while (0)
|
#define FS_FAIL() do {\
|
||||||
|
printf( "FAIL %s: %d \n", __FILE__, __LINE__ );\
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
#define SHOW_MESSAGE(e, func, ...) printf(\
|
#define SHOW_MESSAGE(e, func, ...) printf(\
|
||||||
@@ -55,6 +57,6 @@
|
|||||||
|
|
||||||
|
|
||||||
#define BASE_FOR_TEST "/mnt"
|
#define BASE_FOR_TEST "/mnt"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,13 @@
|
|||||||
*
|
*
|
||||||
* $Id Exp $
|
* $Id Exp $
|
||||||
*/
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
#include <stdio.h>
|
#include <errno.h>
|
||||||
#include <errno.h>
|
#include <fcntl.h>
|
||||||
#include <fcntl.h>
|
#include <string.h>
|
||||||
#include <string.h>
|
#include <unistd.h>
|
||||||
#include <unistd.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/types.h>
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#include "rtems.h"
|
#include "rtems.h"
|
||||||
|
|
||||||
@@ -24,57 +23,57 @@
|
|||||||
|
|
||||||
#include "fstest.h"
|
#include "fstest.h"
|
||||||
|
|
||||||
#define TEMP_DIR "waterbuffalo"
|
#define TEMP_DIR "waterbuffalo"
|
||||||
|
|
||||||
|
|
||||||
/* Break out of a chroot() environment in C */
|
/* Break out of a chroot() environment in C */
|
||||||
void break_out_of_chroot(void)
|
void break_out_of_chroot(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
int dir_fd; /* File descriptor to directory */
|
int dir_fd; /* File descriptor to directory */
|
||||||
struct stat sbuf; /* The stat() buffer */
|
struct stat sbuf; /* The stat() buffer */
|
||||||
chdir("/");
|
chdir("/");
|
||||||
|
|
||||||
if (stat(TEMP_DIR,&sbuf)<0) {
|
if (stat(TEMP_DIR,&sbuf)<0) {
|
||||||
if (errno==ENOENT) {
|
if (errno==ENOENT) {
|
||||||
if (mkdir(TEMP_DIR,0755)<0) {
|
if (mkdir(TEMP_DIR,0755)<0) {
|
||||||
fprintf(stderr,"Failed to create %s - %s\n", TEMP_DIR,
|
fprintf(stderr,"Failed to create %s - %s\n", TEMP_DIR,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr,"Failed to stat %s - %s\n", TEMP_DIR,
|
fprintf(stderr,"Failed to stat %s - %s\n", TEMP_DIR,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
} else if (!S_ISDIR(sbuf.st_mode)) {
|
} else if (!S_ISDIR(sbuf.st_mode)) {
|
||||||
fprintf(stderr,"Error - %s is not a directory!\n",TEMP_DIR);
|
fprintf(stderr,"Error - %s is not a directory!\n",TEMP_DIR);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((dir_fd=open(".",O_RDONLY))<0) {
|
if ((dir_fd=open(".",O_RDONLY))<0) {
|
||||||
fprintf(stderr,"Failed to open \".\" for reading - %s\n", strerror(errno));
|
fprintf(stderr,"Failed to open ""."
|
||||||
exit(1);
|
" for reading - %s\n", strerror(errno));
|
||||||
}
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
if (chroot(TEMP_DIR)<0) {
|
if (chroot(TEMP_DIR)<0) {
|
||||||
fprintf(stderr,"Failed to chroot to %s - %s\n",TEMP_DIR,
|
fprintf(stderr,"Failed to chroot to %s - %s\n",TEMP_DIR,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fchdir(dir_fd)<0) {
|
if (fchdir(dir_fd)<0) {
|
||||||
fprintf(stderr,"Failed to fchdir - %s\n",
|
fprintf(stderr,"Failed to fchdir - %s\n",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
close(dir_fd);
|
close(dir_fd);
|
||||||
chdir("..");
|
chdir("..");
|
||||||
chroot(".");
|
chroot(".");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Main entry point of every filesystem test
|
* Main entry point of every filesystem test
|
||||||
*/
|
*/
|
||||||
@@ -103,5 +102,4 @@ rtems_task Init(
|
|||||||
|
|
||||||
puts( "*** END OF FILE SYSTEM TEST ( " FILESYSTEM " ) ***" );
|
puts( "*** END OF FILE SYSTEM TEST ( " FILESYSTEM " ) ***" );
|
||||||
rtems_test_exit(0);
|
rtems_test_exit(0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,42 +15,43 @@
|
|||||||
#include "ramdisk_support.h"
|
#include "ramdisk_support.h"
|
||||||
#include "fstest.h"
|
#include "fstest.h"
|
||||||
/*
|
/*
|
||||||
* Ramdisk information
|
* Ramdisk information
|
||||||
*/
|
*/
|
||||||
|
|
||||||
dev_t dev = 0;
|
dev_t dev = 0;
|
||||||
|
|
||||||
void init_ramdisk(void)
|
void
|
||||||
|
init_ramdisk (void)
|
||||||
{
|
{
|
||||||
|
|
||||||
int rc=0;
|
int rc = 0;
|
||||||
rc =rtems_disk_io_initialize();
|
rc = rtems_disk_io_initialize ();
|
||||||
rtems_test_assert( rc == 0 );
|
rtems_test_assert (rc == 0);
|
||||||
rc =ramdisk_register(RAMDISK_BLOCK_SIZE,RAMDISK_BLOCK_COUNT,\
|
rc = ramdisk_register (RAMDISK_BLOCK_SIZE, RAMDISK_BLOCK_COUNT,
|
||||||
false,RAMDISK_PATH,&dev);
|
false, RAMDISK_PATH, &dev);
|
||||||
rtems_test_assert( rc == 0 );
|
rtems_test_assert (rc == 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void del_ramdisk(void )
|
void
|
||||||
|
del_ramdisk (void)
|
||||||
{
|
{
|
||||||
int rc=0;
|
|
||||||
rtems_device_major_number major=0;
|
|
||||||
rtems_device_minor_number minor=0;
|
|
||||||
|
|
||||||
rc=rtems_disk_delete (dev);
|
int rc = 0;
|
||||||
rtems_test_assert( rc == 0 );
|
rtems_device_major_number major = 0;
|
||||||
|
rtems_device_minor_number minor = 0;
|
||||||
|
|
||||||
rtems_filesystem_split_dev_t(dev,major,minor);
|
rc = rtems_disk_delete (dev);
|
||||||
|
rtems_test_assert (rc == 0);
|
||||||
rtems_test_assert(major>=0);
|
|
||||||
rtems_test_assert(minor>=0);
|
|
||||||
|
|
||||||
rc=rtems_io_unregister_driver(major);
|
|
||||||
rtems_test_assert( rc == 0 );
|
|
||||||
|
|
||||||
rc=rtems_disk_io_done();
|
rtems_filesystem_split_dev_t (dev, major, minor);
|
||||||
rtems_test_assert( rc == 0 );
|
|
||||||
|
rtems_test_assert (major >= 0);
|
||||||
|
rtems_test_assert (minor >= 0);
|
||||||
|
|
||||||
|
rc = rtems_io_unregister_driver (major);
|
||||||
|
rtems_test_assert (rc == 0);
|
||||||
|
rc = rtems_disk_io_done ();
|
||||||
|
rtems_test_assert (rc == 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define RAMDISK_BLOCK_SIZE (512)
|
#define RAMDISK_BLOCK_SIZE (512)
|
||||||
#define RAMDISK_BLOCK_COUNT (1024)
|
#define RAMDISK_BLOCK_COUNT (1024)
|
||||||
|
|||||||
Reference in New Issue
Block a user