summaryrefslogtreecommitdiffstats
path: root/nsprpub/pr/tests/testfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'nsprpub/pr/tests/testfile.c')
-rw-r--r--nsprpub/pr/tests/testfile.c1530
1 files changed, 764 insertions, 766 deletions
diff --git a/nsprpub/pr/tests/testfile.c b/nsprpub/pr/tests/testfile.c
index 1191bfe94..99cf94ddd 100644
--- a/nsprpub/pr/tests/testfile.c
+++ b/nsprpub/pr/tests/testfile.c
@@ -16,9 +16,6 @@
#if defined(_PR_PTHREADS)
#include <pthread.h>
#endif
-#ifdef SYMBIAN
-#include <getopt.h>
-#endif
#if defined(XP_OS2)
#define INCL_DOSFILEMGR
@@ -45,24 +42,24 @@ PRInt32 count;
int thread_count;
#ifdef WIN16
-#define BUF_DATA_SIZE 256 * 120
+#define BUF_DATA_SIZE 256 * 120
#else
-#define BUF_DATA_SIZE 256 * 1024
+#define BUF_DATA_SIZE 256 * 1024
#endif
-#define NUM_RDWR_THREADS 10
-#define NUM_DIRTEST_THREADS 4
+#define NUM_RDWR_THREADS 10
+#define NUM_DIRTEST_THREADS 4
#define CHUNK_SIZE 512
typedef struct buffer {
- char data[BUF_DATA_SIZE];
+ char data[BUF_DATA_SIZE];
} buffer;
typedef struct File_Rdwr_Param {
- char *pathname;
- char *buf;
- int offset;
- int len;
+ char *pathname;
+ char *buf;
+ int offset;
+ int len;
} File_Rdwr_Param;
#ifdef XP_PC
@@ -74,11 +71,7 @@ char *TEST_DIR = "C:\\temp\\prdir";
char *FILE_NAME = "pr_testfile";
char *HIDDEN_FILE_NAME = "hidden_pr_testfile";
#else
-#ifdef SYMBIAN
-char *TEST_DIR = "c:\\data\\testfile_dir";
-#else
char *TEST_DIR = "/tmp/testfile_dir";
-#endif
char *FILE_NAME = "pr_testfile";
char *HIDDEN_FILE_NAME = ".hidden_pr_testfile";
#endif
@@ -87,800 +80,805 @@ char pathname[256], renamename[256];
#ifdef WINCE
WCHAR wPathname[256];
#endif
-#define TMPDIR_LEN 64
+#define TMPDIR_LEN 64
char testdir[TMPDIR_LEN];
static PRInt32 PR_CALLBACK DirTest(void *argunused);
PRInt32 dirtest_failed = 0;
PRThread* create_new_thread(PRThreadType type,
- void (*start)(void *arg),
- void *arg,
- PRThreadPriority priority,
- PRThreadScope scope,
- PRThreadState state,
- PRUint32 stackSize, PRInt32 index)
+ void (*start)(void *arg),
+ void *arg,
+ PRThreadPriority priority,
+ PRThreadScope scope,
+ PRThreadState state,
+ PRUint32 stackSize, PRInt32 index)
{
-PRInt32 native_thread = 0;
+ PRInt32 native_thread = 0;
- PR_ASSERT(state == PR_UNJOINABLE_THREAD);
+ PR_ASSERT(state == PR_UNJOINABLE_THREAD);
#if defined(_PR_PTHREADS) || defined(WIN32) || defined(XP_OS2)
- switch(index % 4) {
- case 0:
- scope = (PR_LOCAL_THREAD);
- break;
- case 1:
- scope = (PR_GLOBAL_THREAD);
- break;
- case 2:
- scope = (PR_GLOBAL_BOUND_THREAD);
- break;
- case 3:
- native_thread = 1;
- break;
- default:
- PR_NOT_REACHED("Invalid scope");
- break;
- }
- if (native_thread) {
+ switch(index % 4) {
+ case 0:
+ scope = (PR_LOCAL_THREAD);
+ break;
+ case 1:
+ scope = (PR_GLOBAL_THREAD);
+ break;
+ case 2:
+ scope = (PR_GLOBAL_BOUND_THREAD);
+ break;
+ case 3:
+ native_thread = 1;
+ break;
+ default:
+ PR_NOT_REACHED("Invalid scope");
+ break;
+ }
+ if (native_thread) {
#if defined(_PR_PTHREADS)
- pthread_t tid;
- if (!pthread_create(&tid, NULL, start, arg))
- return((PRThread *) tid);
- else
- return (NULL);
+ pthread_t tid;
+ if (!pthread_create(&tid, NULL, start, arg)) {
+ return((PRThread *) tid);
+ }
+ else {
+ return (NULL);
+ }
#elif defined(XP_OS2)
TID tid;
tid = (TID)_beginthread((void(* _Optlink)(void*))start,
NULL, 32768, arg);
if (tid == -1) {
- printf("_beginthread failed. errno %d\n", errno);
- return (NULL);
+ printf("_beginthread failed. errno %d\n", errno);
+ return (NULL);
+ }
+ else {
+ return((PRThread *) tid);
}
- else
- return((PRThread *) tid);
#else
- HANDLE thandle;
- unsigned tid;
-
- thandle = (HANDLE) _beginthreadex(
- NULL,
- stackSize,
- (unsigned (__stdcall *)(void *))start,
- arg,
- STACK_SIZE_PARAM_IS_A_RESERVATION,
- &tid);
- return((PRThread *) thandle);
+ HANDLE thandle;
+ unsigned tid;
+
+ thandle = (HANDLE) _beginthreadex(
+ NULL,
+ stackSize,
+ (unsigned (__stdcall *)(void *))start,
+ arg,
+ STACK_SIZE_PARAM_IS_A_RESERVATION,
+ &tid);
+ return((PRThread *) thandle);
#endif
- } else {
- return(PR_CreateThread(type,start,arg,priority,scope,state,stackSize));
- }
+ } else {
+ return(PR_CreateThread(type,start,arg,priority,scope,state,stackSize));
+ }
#else
- return(PR_CreateThread(type,start,arg,priority,scope,state,stackSize));
+ return(PR_CreateThread(type,start,arg,priority,scope,state,stackSize));
#endif
}
static void PR_CALLBACK File_Write(void *arg)
{
-PRFileDesc *fd_file;
-File_Rdwr_Param *fp = (File_Rdwr_Param *) arg;
-char *name, *buf;
-int offset, len;
-
- setbuf(stdout, NULL);
- name = fp->pathname;
- buf = fp->buf;
- offset = fp->offset;
- len = fp->len;
-
- fd_file = PR_Open(name, PR_RDWR | PR_CREATE_FILE, 0777);
- if (fd_file == NULL) {
- printf("testfile failed to create/open file %s\n",name);
- return;
- }
- if (PR_Seek(fd_file, offset, PR_SEEK_SET) < 0) {
- printf("testfile failed to seek in file %s\n",name);
- return;
- }
- if ((PR_Write(fd_file, buf, len)) < 0) {
- printf("testfile failed to write to file %s\n",name);
- return;
- }
- DPRINTF(("Write out_buf[0] = 0x%x\n",(*((int *) buf))));
- PR_Close(fd_file);
- PR_DELETE(fp);
-
- PR_EnterMonitor(mon);
- --thread_count;
- PR_Notify(mon);
- PR_ExitMonitor(mon);
+ PRFileDesc *fd_file;
+ File_Rdwr_Param *fp = (File_Rdwr_Param *) arg;
+ char *name, *buf;
+ int offset, len;
+
+ setbuf(stdout, NULL);
+ name = fp->pathname;
+ buf = fp->buf;
+ offset = fp->offset;
+ len = fp->len;
+
+ fd_file = PR_Open(name, PR_RDWR | PR_CREATE_FILE, 0777);
+ if (fd_file == NULL) {
+ printf("testfile failed to create/open file %s\n",name);
+ return;
+ }
+ if (PR_Seek(fd_file, offset, PR_SEEK_SET) < 0) {
+ printf("testfile failed to seek in file %s\n",name);
+ return;
+ }
+ if ((PR_Write(fd_file, buf, len)) < 0) {
+ printf("testfile failed to write to file %s\n",name);
+ return;
+ }
+ DPRINTF(("Write out_buf[0] = 0x%x\n",(*((int *) buf))));
+ PR_Close(fd_file);
+ PR_DELETE(fp);
+
+ PR_EnterMonitor(mon);
+ --thread_count;
+ PR_Notify(mon);
+ PR_ExitMonitor(mon);
}
static void PR_CALLBACK File_Read(void *arg)
{
-PRFileDesc *fd_file;
-File_Rdwr_Param *fp = (File_Rdwr_Param *) arg;
-char *name, *buf;
-int offset, len;
-
- setbuf(stdout, NULL);
- name = fp->pathname;
- buf = fp->buf;
- offset = fp->offset;
- len = fp->len;
-
- fd_file = PR_Open(name, PR_RDONLY, 0);
- if (fd_file == NULL) {
- printf("testfile failed to open file %s\n",name);
- return;
- }
- if (PR_Seek(fd_file, offset, PR_SEEK_SET) < 0) {
- printf("testfile failed to seek in file %s\n",name);
- return;
- }
- if ((PR_Read(fd_file, buf, len)) < 0) {
- printf("testfile failed to read to file %s\n",name);
- return;
- }
- DPRINTF(("Read in_buf[0] = 0x%x\n",(*((int *) buf))));
- PR_Close(fd_file);
- PR_DELETE(fp);
-
- PR_EnterMonitor(mon);
- --thread_count;
- PR_Notify(mon);
- PR_ExitMonitor(mon);
+ PRFileDesc *fd_file;
+ File_Rdwr_Param *fp = (File_Rdwr_Param *) arg;
+ char *name, *buf;
+ int offset, len;
+
+ setbuf(stdout, NULL);
+ name = fp->pathname;
+ buf = fp->buf;
+ offset = fp->offset;
+ len = fp->len;
+
+ fd_file = PR_Open(name, PR_RDONLY, 0);
+ if (fd_file == NULL) {
+ printf("testfile failed to open file %s\n",name);
+ return;
+ }
+ if (PR_Seek(fd_file, offset, PR_SEEK_SET) < 0) {
+ printf("testfile failed to seek in file %s\n",name);
+ return;
+ }
+ if ((PR_Read(fd_file, buf, len)) < 0) {
+ printf("testfile failed to read to file %s\n",name);
+ return;
+ }
+ DPRINTF(("Read in_buf[0] = 0x%x\n",(*((int *) buf))));
+ PR_Close(fd_file);
+ PR_DELETE(fp);
+
+ PR_EnterMonitor(mon);
+ --thread_count;
+ PR_Notify(mon);
+ PR_ExitMonitor(mon);
}
static PRInt32 Misc_File_Tests(char *pathname)
{
-PRFileDesc *fd_file;
-int len, rv = 0;
-PRFileInfo file_info, file_info1;
-char tmpname[1024];
-
- setbuf(stdout, NULL);
- /*
- * Test PR_Available, PR_Seek, PR_GetFileInfo, PR_Rename, PR_Access
- */
-
- fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, 0777);
-
- if (fd_file == NULL) {
- printf("testfile failed to create/open file %s\n",pathname);
- return -1;
- }
- if (PR_GetOpenFileInfo(fd_file, &file_info) < 0) {
- printf("testfile PR_GetFileInfo failed on file %s\n",pathname);
- rv = -1;
- goto cleanup;
- }
- if (PR_Access(pathname, PR_ACCESS_EXISTS) != 0) {
- printf("testfile PR_Access failed on file %s\n",pathname);
- rv = -1;
- goto cleanup;
- }
- if (PR_Access(pathname, PR_ACCESS_WRITE_OK) != 0) {
- printf("testfile PR_Access failed on file %s\n",pathname);
- rv = -1;
- goto cleanup;
- }
- if (PR_Access(pathname, PR_ACCESS_READ_OK) != 0) {
- printf("testfile PR_Access failed on file %s\n",pathname);
- rv = -1;
- goto cleanup;
- }
-
-
- if (PR_GetFileInfo(pathname, &file_info) < 0) {
- printf("testfile PR_GetFileInfo failed on file %s\n",pathname);
- rv = -1;
- goto cleanup;
- }
- if (file_info.type != PR_FILE_FILE) {
- printf(
- "testfile: Error - PR_GetFileInfo returned incorrect type for file %s\n",
- pathname);
- rv = -1;
- goto cleanup;
- }
- if (file_info.size != 0) {
- printf(
- "testfile PR_GetFileInfo returned incorrect size (%d should be 0) for file %s\n",
- file_info.size, pathname);
- rv = -1;
- goto cleanup;
- }
- file_info1 = file_info;
-
- len = PR_Available(fd_file);
- if (len < 0) {
- printf("testfile PR_Available failed on file %s\n",pathname);
- rv = -1;
- goto cleanup;
- } else if (len != 0) {
- printf(
- "testfile PR_Available failed: expected/returned = %d/%d bytes\n",
- 0, len);
- rv = -1;
- goto cleanup;
- }
- if (PR_GetOpenFileInfo(fd_file, &file_info) < 0) {
- printf("testfile PR_GetFileInfo failed on file %s\n",pathname);
- goto cleanup;
- }
- if (LL_NE(file_info.creationTime , file_info1.creationTime)) {
- printf(
- "testfile PR_GetFileInfo returned incorrect status-change time: %s\n",
- pathname);
- printf("ft = %lld, ft1 = %lld\n",file_info.creationTime,
- file_info1.creationTime);
- rv = -1;
- goto cleanup;
- }
- len = PR_Write(fd_file, out_buf->data, CHUNK_SIZE);
- if (len < 0) {
- printf("testfile failed to write to file %s\n",pathname);
- rv = -1;
- goto cleanup;
- }
- if (PR_GetOpenFileInfo(fd_file, &file_info) < 0) {
- printf("testfile PR_GetFileInfo failed on file %s\n",pathname);
- goto cleanup;
- }
- if (file_info.size != CHUNK_SIZE) {
- printf(
- "testfile PR_GetFileInfo returned incorrect size (%d should be %d) for file %s\n",
- file_info.size, CHUNK_SIZE, pathname);
- rv = -1;
- goto cleanup;
- }
- if (LL_CMP(file_info.modifyTime, < , file_info1.modifyTime)) {
- printf(
- "testfile PR_GetFileInfo returned incorrect modify time: %s\n",
- pathname);
- printf("ft = %lld, ft1 = %lld\n",file_info.modifyTime,
- file_info1.modifyTime);
- rv = -1;
- goto cleanup;
- }
-
- len = PR_Available(fd_file);
- if (len < 0) {
- printf("testfile PR_Available failed on file %s\n",pathname);
- rv = -1;
- goto cleanup;
- } else if (len != 0) {
- printf(
- "testfile PR_Available failed: expected/returned = %d/%d bytes\n",
- 0, len);
- rv = -1;
- goto cleanup;
- }
-
- PR_Seek(fd_file, 0, PR_SEEK_SET);
- len = PR_Available(fd_file);
- if (len < 0) {
- printf("testfile PR_Available failed on file %s\n",pathname);
- rv = -1;
- goto cleanup;
- } else if (len != CHUNK_SIZE) {
- printf(
- "testfile PR_Available failed: expected/returned = %d/%d bytes\n",
- CHUNK_SIZE, len);
- rv = -1;
- goto cleanup;
- }
+ PRFileDesc *fd_file;
+ int len, rv = 0;
+ PRFileInfo file_info, file_info1;
+ char tmpname[1024];
+
+ setbuf(stdout, NULL);
+ /*
+ * Test PR_Available, PR_Seek, PR_GetFileInfo, PR_Rename, PR_Access
+ */
+
+ fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, 0777);
+
+ if (fd_file == NULL) {
+ printf("testfile failed to create/open file %s\n",pathname);
+ return -1;
+ }
+ if (PR_GetOpenFileInfo(fd_file, &file_info) < 0) {
+ printf("testfile PR_GetFileInfo failed on file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ }
+ if (PR_Access(pathname, PR_ACCESS_EXISTS) != 0) {
+ printf("testfile PR_Access failed on file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ }
+ if (PR_Access(pathname, PR_ACCESS_WRITE_OK) != 0) {
+ printf("testfile PR_Access failed on file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ }
+ if (PR_Access(pathname, PR_ACCESS_READ_OK) != 0) {
+ printf("testfile PR_Access failed on file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ }
+
+
+ if (PR_GetFileInfo(pathname, &file_info) < 0) {
+ printf("testfile PR_GetFileInfo failed on file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ }
+ if (file_info.type != PR_FILE_FILE) {
+ printf(
+ "testfile: Error - PR_GetFileInfo returned incorrect type for file %s\n",
+ pathname);
+ rv = -1;
+ goto cleanup;
+ }
+ if (file_info.size != 0) {
+ printf(
+ "testfile PR_GetFileInfo returned incorrect size (%d should be 0) for file %s\n",
+ file_info.size, pathname);
+ rv = -1;
+ goto cleanup;
+ }
+ file_info1 = file_info;
+
+ len = PR_Available(fd_file);
+ if (len < 0) {
+ printf("testfile PR_Available failed on file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ } else if (len != 0) {
+ printf(
+ "testfile PR_Available failed: expected/returned = %d/%d bytes\n",
+ 0, len);
+ rv = -1;
+ goto cleanup;
+ }
+ if (PR_GetOpenFileInfo(fd_file, &file_info) < 0) {
+ printf("testfile PR_GetFileInfo failed on file %s\n",pathname);
+ goto cleanup;
+ }
+ if (LL_NE(file_info.creationTime, file_info1.creationTime)) {
+ printf(
+ "testfile PR_GetFileInfo returned incorrect status-change time: %s\n",
+ pathname);
+ printf("ft = %lld, ft1 = %lld\n",file_info.creationTime,
+ file_info1.creationTime);
+ rv = -1;
+ goto cleanup;
+ }
+ len = PR_Write(fd_file, out_buf->data, CHUNK_SIZE);
+ if (len < 0) {
+ printf("testfile failed to write to file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ }
+ if (PR_GetOpenFileInfo(fd_file, &file_info) < 0) {
+ printf("testfile PR_GetFileInfo failed on file %s\n",pathname);
+ goto cleanup;
+ }
+ if (file_info.size != CHUNK_SIZE) {
+ printf(
+ "testfile PR_GetFileInfo returned incorrect size (%d should be %d) for file %s\n",
+ file_info.size, CHUNK_SIZE, pathname);
+ rv = -1;
+ goto cleanup;
+ }
+ if (LL_CMP(file_info.modifyTime, <, file_info1.modifyTime)) {
+ printf(
+ "testfile PR_GetFileInfo returned incorrect modify time: %s\n",
+ pathname);
+ printf("ft = %lld, ft1 = %lld\n",file_info.modifyTime,
+ file_info1.modifyTime);
+ rv = -1;
+ goto cleanup;
+ }
+
+ len = PR_Available(fd_file);
+ if (len < 0) {
+ printf("testfile PR_Available failed on file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ } else if (len != 0) {
+ printf(
+ "testfile PR_Available failed: expected/returned = %d/%d bytes\n",
+ 0, len);
+ rv = -1;
+ goto cleanup;
+ }
+
+ PR_Seek(fd_file, 0, PR_SEEK_SET);
+ len = PR_Available(fd_file);
+ if (len < 0) {
+ printf("testfile PR_Available failed on file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ } else if (len != CHUNK_SIZE) {
+ printf(
+ "testfile PR_Available failed: expected/returned = %d/%d bytes\n",
+ CHUNK_SIZE, len);
+ rv = -1;
+ goto cleanup;
+ }
PR_Close(fd_file);
- strcpy(tmpname,pathname);
- strcat(tmpname,".RENAMED");
- if (PR_FAILURE == PR_Rename(pathname, tmpname)) {
- printf("testfile failed to rename file %s\n",pathname);
- rv = -1;
- goto cleanup;
- }
+ strcpy(tmpname,pathname);
+ strcat(tmpname,".RENAMED");
+ if (PR_FAILURE == PR_Rename(pathname, tmpname)) {
+ printf("testfile failed to rename file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ }
- fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, 0777);
- len = PR_Write(fd_file, out_buf->data, CHUNK_SIZE);
+ fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, 0777);
+ len = PR_Write(fd_file, out_buf->data, CHUNK_SIZE);
PR_Close(fd_file);
- if (PR_SUCCESS == PR_Rename(pathname, tmpname)) {
- printf("testfile renamed to existing file %s\n",pathname);
- }
+ if (PR_SUCCESS == PR_Rename(pathname, tmpname)) {
+ printf("testfile renamed to existing file %s\n",pathname);
+ }
- if ((PR_Delete(tmpname)) < 0) {
- printf("testfile failed to unlink file %s\n",tmpname);
- rv = -1;
- }
+ if ((PR_Delete(tmpname)) < 0) {
+ printf("testfile failed to unlink file %s\n",tmpname);
+ rv = -1;
+ }
cleanup:
- if ((PR_Delete(pathname)) < 0) {
- printf("testfile failed to unlink file %s\n",pathname);
- rv = -1;
- }
- return rv;
+ if ((PR_Delete(pathname)) < 0) {
+ printf("testfile failed to unlink file %s\n",pathname);
+ rv = -1;
+ }
+ return rv;
}
static PRInt32 PR_CALLBACK FileTest(void)
{
-PRDir *fd_dir;
-int i, offset, len, rv = 0;
-PRThread *t;
-PRThreadScope scope = PR_GLOBAL_THREAD;
-File_Rdwr_Param *fparamp;
-
- /*
- * Create Test dir
- */
- if ((PR_MkDir(TEST_DIR, 0777)) < 0) {
- printf("testfile failed to create dir %s\n",TEST_DIR);
- return -1;
- }
- fd_dir = PR_OpenDir(TEST_DIR);
- if (fd_dir == NULL) {
- printf("testfile failed to open dir %s\n",TEST_DIR);
- rv = -1;
- goto cleanup;
- }
+ PRDir *fd_dir;
+ int i, offset, len, rv = 0;
+ PRThread *t;
+ PRThreadScope scope = PR_GLOBAL_THREAD;
+ File_Rdwr_Param *fparamp;
+
+ /*
+ * Create Test dir
+ */
+ if ((PR_MkDir(TEST_DIR, 0777)) < 0) {
+ printf("testfile failed to create dir %s\n",TEST_DIR);
+ return -1;
+ }
+ fd_dir = PR_OpenDir(TEST_DIR);
+ if (fd_dir == NULL) {
+ printf("testfile failed to open dir %s\n",TEST_DIR);
+ rv = -1;
+ goto cleanup;
+ }
PR_CloseDir(fd_dir);
- strcat(pathname, TEST_DIR);
- strcat(pathname, "/");
- strcat(pathname, FILE_NAME);
-
- in_buf = PR_NEW(buffer);
- if (in_buf == NULL) {
- printf(
- "testfile failed to alloc buffer struct\n");
- rv = -1;
- goto cleanup;
- }
- out_buf = PR_NEW(buffer);
- if (out_buf == NULL) {
- printf(
- "testfile failed to alloc buffer struct\n");
- rv = -1;
- goto cleanup;
- }
-
- /*
- * Start a bunch of writer threads
- */
- offset = 0;
- len = CHUNK_SIZE;
- PR_EnterMonitor(mon);
- for (i = 0; i < NUM_RDWR_THREADS; i++) {
- fparamp = PR_NEW(File_Rdwr_Param);
- if (fparamp == NULL) {
- printf(
- "testfile failed to alloc File_Rdwr_Param struct\n");
- rv = -1;
- goto cleanup;
- }
- fparamp->pathname = pathname;
- fparamp->buf = out_buf->data + offset;
- fparamp->offset = offset;
- fparamp->len = len;
- memset(fparamp->buf, i, len);
-
- t = create_new_thread(PR_USER_THREAD,
- File_Write, (void *)fparamp,
- PR_PRIORITY_NORMAL,
- scope,
- PR_UNJOINABLE_THREAD,
- 0, i);
- offset += len;
- }
- thread_count = i;
- /* Wait for writer threads to exit */
- while (thread_count) {
- PR_Wait(mon, PR_INTERVAL_NO_TIMEOUT);
- }
- PR_ExitMonitor(mon);
-
-
- /*
- * Start a bunch of reader threads
- */
- offset = 0;
- len = CHUNK_SIZE;
- PR_EnterMonitor(mon);
- for (i = 0; i < NUM_RDWR_THREADS; i++) {
- fparamp = PR_NEW(File_Rdwr_Param);
- if (fparamp == NULL) {
- printf(
- "testfile failed to alloc File_Rdwr_Param struct\n");
- rv = -1;
- goto cleanup;
- }
- fparamp->pathname = pathname;
- fparamp->buf = in_buf->data + offset;
- fparamp->offset = offset;
- fparamp->len = len;
-
- t = create_new_thread(PR_USER_THREAD,
- File_Read, (void *)fparamp,
- PR_PRIORITY_NORMAL,
- scope,
- PR_UNJOINABLE_THREAD,
- 0, i);
- offset += len;
- if ((offset + len) > BUF_DATA_SIZE)
- break;
- }
- thread_count = i;
-
- /* Wait for reader threads to exit */
- while (thread_count) {
- PR_Wait(mon, PR_INTERVAL_NO_TIMEOUT);
- }
- PR_ExitMonitor(mon);
-
- if (memcmp(in_buf->data, out_buf->data, offset) != 0) {
- printf("File Test failed: file data corrupted\n");
- rv = -1;
- goto cleanup;
- }
-
- if ((PR_Delete(pathname)) < 0) {
- printf("testfile failed to unlink file %s\n",pathname);
- rv = -1;
- goto cleanup;
- }
-
- /*
- * Test PR_Available, PR_Seek, PR_GetFileInfo, PR_Rename, PR_Access
- */
- if (Misc_File_Tests(pathname) < 0) {
- rv = -1;
- }
+ strcat(pathname, TEST_DIR);
+ strcat(pathname, "/");
+ strcat(pathname, FILE_NAME);
+
+ in_buf = PR_NEW(buffer);
+ if (in_buf == NULL) {
+ printf(
+ "testfile failed to alloc buffer struct\n");
+ rv = -1;
+ goto cleanup;
+ }
+ out_buf = PR_NEW(buffer);
+ if (out_buf == NULL) {
+ printf(
+ "testfile failed to alloc buffer struct\n");
+ rv = -1;
+ goto cleanup;
+ }
+
+ /*
+ * Start a bunch of writer threads
+ */
+ offset = 0;
+ len = CHUNK_SIZE;
+ PR_EnterMonitor(mon);
+ for (i = 0; i < NUM_RDWR_THREADS; i++) {
+ fparamp = PR_NEW(File_Rdwr_Param);
+ if (fparamp == NULL) {
+ printf(
+ "testfile failed to alloc File_Rdwr_Param struct\n");
+ rv = -1;
+ goto cleanup;
+ }
+ fparamp->pathname = pathname;
+ fparamp->buf = out_buf->data + offset;
+ fparamp->offset = offset;
+ fparamp->len = len;
+ memset(fparamp->buf, i, len);
+
+ t = create_new_thread(PR_USER_THREAD,
+ File_Write, (void *)fparamp,
+ PR_PRIORITY_NORMAL,
+ scope,
+ PR_UNJOINABLE_THREAD,
+ 0, i);
+ offset += len;
+ }
+ thread_count = i;
+ /* Wait for writer threads to exit */
+ while (thread_count) {
+ PR_Wait(mon, PR_INTERVAL_NO_TIMEOUT);
+ }
+ PR_ExitMonitor(mon);
+
+
+ /*
+ * Start a bunch of reader threads
+ */
+ offset = 0;
+ len = CHUNK_SIZE;
+ PR_EnterMonitor(mon);
+ for (i = 0; i < NUM_RDWR_THREADS; i++) {
+ fparamp = PR_NEW(File_Rdwr_Param);
+ if (fparamp == NULL) {
+ printf(
+ "testfile failed to alloc File_Rdwr_Param struct\n");
+ rv = -1;
+ goto cleanup;
+ }
+ fparamp->pathname = pathname;
+ fparamp->buf = in_buf->data + offset;
+ fparamp->offset = offset;
+ fparamp->len = len;
+
+ t = create_new_thread(PR_USER_THREAD,
+ File_Read, (void *)fparamp,
+ PR_PRIORITY_NORMAL,
+ scope,
+ PR_UNJOINABLE_THREAD,
+ 0, i);
+ offset += len;
+ if ((offset + len) > BUF_DATA_SIZE) {
+ break;
+ }
+ }
+ thread_count = i;
+
+ /* Wait for reader threads to exit */
+ while (thread_count) {
+ PR_Wait(mon, PR_INTERVAL_NO_TIMEOUT);
+ }
+ PR_ExitMonitor(mon);
+
+ if (memcmp(in_buf->data, out_buf->data, offset) != 0) {
+ printf("File Test failed: file data corrupted\n");
+ rv = -1;
+ goto cleanup;
+ }
+
+ if ((PR_Delete(pathname)) < 0) {
+ printf("testfile failed to unlink file %s\n",pathname);
+ rv = -1;
+ goto cleanup;
+ }
+
+ /*
+ * Test PR_Available, PR_Seek, PR_GetFileInfo, PR_Rename, PR_Access
+ */
+ if (Misc_File_Tests(pathname) < 0) {
+ rv = -1;
+ }
cleanup:
- if ((PR_RmDir(TEST_DIR)) < 0) {
- printf("testfile failed to rmdir %s\n", TEST_DIR);
- rv = -1;
- }
- return rv;
+ if ((PR_RmDir(TEST_DIR)) < 0) {
+ printf("testfile failed to rmdir %s\n", TEST_DIR);
+ rv = -1;
+ }
+ return rv;
}
struct dirtest_arg {
- PRMonitor *mon;
- PRInt32 done;
+ PRMonitor *mon;
+ PRInt32 done;
};
static PRInt32 RunDirTest(void)
{
-int i;
-PRThread *t;
-PRMonitor *mon;
-struct dirtest_arg thrarg;
-
- mon = PR_NewMonitor();
- if (!mon) {
- printf("RunDirTest: Error - failed to create monitor\n");
- dirtest_failed = 1;
- return -1;
- }
- thrarg.mon = mon;
-
- for (i = 0; i < NUM_DIRTEST_THREADS; i++) {
-
- thrarg.done= 0;
- t = create_new_thread(PR_USER_THREAD,
- DirTest, &thrarg,
- PR_PRIORITY_NORMAL,
- PR_LOCAL_THREAD,
- PR_UNJOINABLE_THREAD,
- 0, i);
- if (!t) {
- printf("RunDirTest: Error - failed to create thread\n");
- dirtest_failed = 1;
- return -1;
- }
- PR_EnterMonitor(mon);
- while (!thrarg.done)
- PR_Wait(mon, PR_INTERVAL_NO_TIMEOUT);
- PR_ExitMonitor(mon);
-
- }
- PR_DestroyMonitor(mon);
- return 0;
+ int i;
+ PRThread *t;
+ PRMonitor *mon;
+ struct dirtest_arg thrarg;
+
+ mon = PR_NewMonitor();
+ if (!mon) {
+ printf("RunDirTest: Error - failed to create monitor\n");
+ dirtest_failed = 1;
+ return -1;
+ }
+ thrarg.mon = mon;
+
+ for (i = 0; i < NUM_DIRTEST_THREADS; i++) {
+
+ thrarg.done= 0;
+ t = create_new_thread(PR_USER_THREAD,
+ DirTest, &thrarg,
+ PR_PRIORITY_NORMAL,
+ PR_LOCAL_THREAD,
+ PR_UNJOINABLE_THREAD,
+ 0, i);
+ if (!t) {
+ printf("RunDirTest: Error - failed to create thread\n");
+ dirtest_failed = 1;
+ return -1;
+ }
+ PR_EnterMonitor(mon);
+ while (!thrarg.done) {
+ PR_Wait(mon, PR_INTERVAL_NO_TIMEOUT);
+ }
+ PR_ExitMonitor(mon);
+
+ }
+ PR_DestroyMonitor(mon);
+ return 0;
}
static PRInt32 PR_CALLBACK DirTest(void *arg)
{
-struct dirtest_arg *tinfo = (struct dirtest_arg *) arg;
-PRFileDesc *fd_file;
-PRDir *fd_dir;
-int i;
-int path_len;
-PRDirEntry *dirEntry;
-PRFileInfo info;
-PRInt32 num_files = 0;
+ struct dirtest_arg *tinfo = (struct dirtest_arg *) arg;
+ PRFileDesc *fd_file;
+ PRDir *fd_dir;
+ int i;
+ int path_len;
+ PRDirEntry *dirEntry;
+ PRFileInfo info;
+ PRInt32 num_files = 0;
#if defined(XP_PC) && defined(WIN32)
-HANDLE hfile;
+ HANDLE hfile;
#endif
#define FILES_IN_DIR 20
- /*
- * Create Test dir
- */
- DPRINTF(("Creating test dir %s\n",TEST_DIR));
- if ((PR_MkDir(TEST_DIR, 0777)) < 0) {
- printf(
- "testfile failed to create dir %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
- fd_dir = PR_OpenDir(TEST_DIR);
- if (fd_dir == NULL) {
- printf(
- "testfile failed to open dirctory %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
-
- strcpy(pathname, TEST_DIR);
- strcat(pathname, "/");
- strcat(pathname, FILE_NAME);
- path_len = strlen(pathname);
-
- for (i = 0; i < FILES_IN_DIR; i++) {
-
- sprintf(pathname + path_len,"%d%s",i,"");
-
- DPRINTF(("Creating test file %s\n",pathname));
-
- fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, 0777);
-
- if (fd_file == NULL) {
- printf(
- "testfile failed to create/open file %s [%d, %d]\n",
- pathname, PR_GetError(), PR_GetOSError());
- return -1;
- }
+ /*
+ * Create Test dir
+ */
+ DPRINTF(("Creating test dir %s\n",TEST_DIR));
+ if ((PR_MkDir(TEST_DIR, 0777)) < 0) {
+ printf(
+ "testfile failed to create dir %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+ fd_dir = PR_OpenDir(TEST_DIR);
+ if (fd_dir == NULL) {
+ printf(
+ "testfile failed to open dirctory %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+
+ strcpy(pathname, TEST_DIR);
+ strcat(pathname, "/");
+ strcat(pathname, FILE_NAME);
+ path_len = strlen(pathname);
+
+ for (i = 0; i < FILES_IN_DIR; i++) {
+
+ sprintf(pathname + path_len,"%d%s",i,"");
+
+ DPRINTF(("Creating test file %s\n",pathname));
+
+ fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, 0777);
+
+ if (fd_file == NULL) {
+ printf(
+ "testfile failed to create/open file %s [%d, %d]\n",
+ pathname, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
PR_Close(fd_file);
- }
-#if defined(XP_UNIX) || (defined(XP_PC) && defined(WIN32)) || defined(XP_OS2) || defined(XP_BEOS)
- /*
- * Create a hidden file - a platform-dependent operation
- */
- strcpy(pathname, TEST_DIR);
- strcat(pathname, "/");
- strcat(pathname, HIDDEN_FILE_NAME);
-#if defined(XP_UNIX) || defined(XP_BEOS)
- DPRINTF(("Creating hidden test file %s\n",pathname));
- fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, 0777);
-
- if (fd_file == NULL) {
- printf(
- "testfile failed to create/open hidden file %s [%d, %d]\n",
- pathname, PR_GetError(), PR_GetOSError());
- return -1;
- }
+ }
+#if defined(XP_UNIX) || (defined(XP_PC) && defined(WIN32)) || defined(XP_OS2)
+ /*
+ * Create a hidden file - a platform-dependent operation
+ */
+ strcpy(pathname, TEST_DIR);
+ strcat(pathname, "/");
+ strcat(pathname, HIDDEN_FILE_NAME);
+#if defined(XP_UNIX)
+ DPRINTF(("Creating hidden test file %s\n",pathname));
+ fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, 0777);
+
+ if (fd_file == NULL) {
+ printf(
+ "testfile failed to create/open hidden file %s [%d, %d]\n",
+ pathname, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
PR_Close(fd_file);
#elif defined(WINCE)
- DPRINTF(("Creating hidden test file %s\n",pathname));
- MultiByteToWideChar(CP_ACP, 0, pathname, -1, wPathname, 256);
- hfile = CreateFile(wPathname, GENERIC_READ,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- NULL,
- CREATE_NEW,
- FILE_ATTRIBUTE_HIDDEN,
- NULL);
- if (hfile == INVALID_HANDLE_VALUE) {
- printf("testfile failed to create/open hidden file %s [0, %d]\n",
- pathname, GetLastError());
- return -1;
- }
- CloseHandle(hfile);
-
+ DPRINTF(("Creating hidden test file %s\n",pathname));
+ MultiByteToWideChar(CP_ACP, 0, pathname, -1, wPathname, 256);
+ hfile = CreateFile(wPathname, GENERIC_READ,
+ FILE_SHARE_READ|FILE_SHARE_WRITE,
+ NULL,
+ CREATE_NEW,
+ FILE_ATTRIBUTE_HIDDEN,
+ NULL);
+ if (hfile == INVALID_HANDLE_VALUE) {
+ printf("testfile failed to create/open hidden file %s [0, %d]\n",
+ pathname, GetLastError());
+ return -1;
+ }
+ CloseHandle(hfile);
+
#elif defined(XP_PC) && defined(WIN32)
- DPRINTF(("Creating hidden test file %s\n",pathname));
- hfile = CreateFile(pathname, GENERIC_READ,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- NULL,
- CREATE_NEW,
- FILE_ATTRIBUTE_HIDDEN,
- NULL);
- if (hfile == INVALID_HANDLE_VALUE) {
- printf("testfile failed to create/open hidden file %s [0, %d]\n",
- pathname, GetLastError());
- return -1;
- }
- CloseHandle(hfile);
-
+ DPRINTF(("Creating hidden test file %s\n",pathname));
+ hfile = CreateFile(pathname, GENERIC_READ,
+ FILE_SHARE_READ|FILE_SHARE_WRITE,
+ NULL,
+ CREATE_NEW,
+ FILE_ATTRIBUTE_HIDDEN,
+ NULL);
+ if (hfile == INVALID_HANDLE_VALUE) {
+ printf("testfile failed to create/open hidden file %s [0, %d]\n",
+ pathname, GetLastError());
+ return -1;
+ }
+ CloseHandle(hfile);
+
#elif defined(OS2)
- DPRINTF(("Creating hidden test file %s\n",pathname));
- fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, (int)FILE_HIDDEN);
-
- if (fd_file == NULL) {
- printf("testfile failed to create/open hidden file %s [%d, %d]\n",
- pathname, PR_GetError(), PR_GetOSError());
- return -1;
- }
- PR_Close(fd_file);
-#endif /* XP_UNIX */
-
-#endif /* XP_UNIX || (XP_PC && WIN32) */
-
-
- if (PR_FAILURE == PR_CloseDir(fd_dir))
- {
- printf(
- "testfile failed to close dirctory %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
- fd_dir = PR_OpenDir(TEST_DIR);
- if (fd_dir == NULL) {
- printf(
- "testfile failed to reopen dirctory %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
-
- /*
- * List all files, including hidden files
- */
- DPRINTF(("Listing all files in directory %s\n",TEST_DIR));
-#if defined(XP_UNIX) || (defined(XP_PC) && defined(WIN32)) || defined(XP_OS2) || defined(XP_BEOS)
- num_files = FILES_IN_DIR + 1;
+ DPRINTF(("Creating hidden test file %s\n",pathname));
+ fd_file = PR_Open(pathname, PR_RDWR | PR_CREATE_FILE, (int)FILE_HIDDEN);
+
+ if (fd_file == NULL) {
+ printf("testfile failed to create/open hidden file %s [%d, %d]\n",
+ pathname, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+ PR_Close(fd_file);
+#endif /* XP_UNIX */
+
+#endif /* XP_UNIX || (XP_PC && WIN32) */
+
+
+ if (PR_FAILURE == PR_CloseDir(fd_dir))
+ {
+ printf(
+ "testfile failed to close dirctory %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+ fd_dir = PR_OpenDir(TEST_DIR);
+ if (fd_dir == NULL) {
+ printf(
+ "testfile failed to reopen dirctory %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+
+ /*
+ * List all files, including hidden files
+ */
+ DPRINTF(("Listing all files in directory %s\n",TEST_DIR));
+#if defined(XP_UNIX) || (defined(XP_PC) && defined(WIN32)) || defined(XP_OS2)
+ num_files = FILES_IN_DIR + 1;
#else
- num_files = FILES_IN_DIR;
+ num_files = FILES_IN_DIR;
#endif
- while ((dirEntry = PR_ReadDir(fd_dir, PR_SKIP_BOTH)) != NULL) {
- num_files--;
- strcpy(pathname, TEST_DIR);
- strcat(pathname, "/");
- strcat(pathname, dirEntry->name);
- DPRINTF(("\t%s\n",dirEntry->name));
-
- if ((PR_GetFileInfo(pathname, &info)) < 0) {
- printf(
- "testfile failed to GetFileInfo file %s [%d, %d]\n",
- pathname, PR_GetError(), PR_GetOSError());
- return -1;
- }
-
- if (info.type != PR_FILE_FILE) {
- printf(
- "testfile incorrect fileinfo for file %s [%d, %d]\n",
- pathname, PR_GetError(), PR_GetOSError());
- return -1;
- }
- }
- if (num_files != 0)
- {
- printf(
- "testfile failed to find all files in directory %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
+ while ((dirEntry = PR_ReadDir(fd_dir, PR_SKIP_BOTH)) != NULL) {
+ num_files--;
+ strcpy(pathname, TEST_DIR);
+ strcat(pathname, "/");
+ strcat(pathname, dirEntry->name);
+ DPRINTF(("\t%s\n",dirEntry->name));
+
+ if ((PR_GetFileInfo(pathname, &info)) < 0) {
+ printf(
+ "testfile failed to GetFileInfo file %s [%d, %d]\n",
+ pathname, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+
+ if (info.type != PR_FILE_FILE) {
+ printf(
+ "testfile incorrect fileinfo for file %s [%d, %d]\n",
+ pathname, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+ }
+ if (num_files != 0)
+ {
+ printf(
+ "testfile failed to find all files in directory %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
PR_CloseDir(fd_dir);
-#if defined(XP_UNIX) || (defined(XP_PC) && defined(WIN32)) || defined(XP_OS2) || defined(XP_BEOS)
-
- /*
- * List all files, except hidden files
- */
-
- fd_dir = PR_OpenDir(TEST_DIR);
- if (fd_dir == NULL) {
- printf(
- "testfile failed to reopen dirctory %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
-
- DPRINTF(("Listing non-hidden files in directory %s\n",TEST_DIR));
- while ((dirEntry = PR_ReadDir(fd_dir, PR_SKIP_HIDDEN)) != NULL) {
- DPRINTF(("\t%s\n",dirEntry->name));
- if (!strcmp(HIDDEN_FILE_NAME, dirEntry->name)) {
- printf("testfile found hidden file %s\n", pathname);
- return -1;
- }
-
- }
- /*
- * Delete hidden file
- */
- strcpy(pathname, TEST_DIR);
- strcat(pathname, "/");
- strcat(pathname, HIDDEN_FILE_NAME);
- if (PR_FAILURE == PR_Delete(pathname)) {
- printf(
- "testfile failed to delete hidden file %s [%d, %d]\n",
- pathname, PR_GetError(), PR_GetOSError());
- return -1;
- }
+#if defined(XP_UNIX) || (defined(XP_PC) && defined(WIN32)) || defined(XP_OS2)
+
+ /*
+ * List all files, except hidden files
+ */
+
+ fd_dir = PR_OpenDir(TEST_DIR);
+ if (fd_dir == NULL) {
+ printf(
+ "testfile failed to reopen dirctory %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+
+ DPRINTF(("Listing non-hidden files in directory %s\n",TEST_DIR));
+ while ((dirEntry = PR_ReadDir(fd_dir, PR_SKIP_HIDDEN)) != NULL) {
+ DPRINTF(("\t%s\n",dirEntry->name));
+ if (!strcmp(HIDDEN_FILE_NAME, dirEntry->name)) {
+ printf("testfile found hidden file %s\n", pathname);
+ return -1;
+ }
+
+ }
+ /*
+ * Delete hidden file
+ */
+ strcpy(pathname, TEST_DIR);
+ strcat(pathname, "/");
+ strcat(pathname, HIDDEN_FILE_NAME);
+ if (PR_FAILURE == PR_Delete(pathname)) {
+ printf(
+ "testfile failed to delete hidden file %s [%d, %d]\n",
+ pathname, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
PR_CloseDir(fd_dir);
-#endif /* XP_UNIX || (XP_PC && WIN32) */
-
- strcpy(renamename, TEST_DIR);
- strcat(renamename, ".RENAMED");
- if (PR_FAILURE == PR_Rename(TEST_DIR, renamename)) {
- printf(
- "testfile failed to rename directory %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
-
- if (PR_FAILURE == PR_MkDir(TEST_DIR, 0777)) {
- printf(
- "testfile failed to recreate dir %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
- if (PR_SUCCESS == PR_Rename(renamename, TEST_DIR)) {
- printf(
- "testfile renamed directory to existing name %s\n",
- renamename);
- return -1;
- }
-
- if (PR_FAILURE == PR_RmDir(TEST_DIR)) {
- printf(
- "testfile failed to rmdir %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
-
- if (PR_FAILURE == PR_Rename(renamename, TEST_DIR)) {
- printf(
- "testfile failed to rename directory %s [%d, %d]\n",
- renamename, PR_GetError(), PR_GetOSError());
- return -1;
- }
- fd_dir = PR_OpenDir(TEST_DIR);
- if (fd_dir == NULL) {
- printf(
- "testfile failed to reopen directory %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
-
- strcpy(pathname, TEST_DIR);
- strcat(pathname, "/");
- strcat(pathname, FILE_NAME);
- path_len = strlen(pathname);
-
- for (i = 0; i < FILES_IN_DIR; i++) {
-
- sprintf(pathname + path_len,"%d%s",i,"");
-
- if (PR_FAILURE == PR_Delete(pathname)) {
- printf(
- "testfile failed to delete file %s [%d, %d]\n",
- pathname, PR_GetError(), PR_GetOSError());
- return -1;
- }
- }
+#endif /* XP_UNIX || (XP_PC && WIN32) */
+
+ strcpy(renamename, TEST_DIR);
+ strcat(renamename, ".RENAMED");
+ if (PR_FAILURE == PR_Rename(TEST_DIR, renamename)) {
+ printf(
+ "testfile failed to rename directory %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+
+ if (PR_FAILURE == PR_MkDir(TEST_DIR, 0777)) {
+ printf(
+ "testfile failed to recreate dir %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+ if (PR_SUCCESS == PR_Rename(renamename, TEST_DIR)) {
+ printf(
+ "testfile renamed directory to existing name %s\n",
+ renamename);
+ return -1;
+ }
+
+ if (PR_FAILURE == PR_RmDir(TEST_DIR)) {
+ printf(
+ "testfile failed to rmdir %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+
+ if (PR_FAILURE == PR_Rename(renamename, TEST_DIR)) {
+ printf(
+ "testfile failed to rename directory %s [%d, %d]\n",
+ renamename, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+ fd_dir = PR_OpenDir(TEST_DIR);
+ if (fd_dir == NULL) {
+ printf(
+ "testfile failed to reopen directory %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+
+ strcpy(pathname, TEST_DIR);
+ strcat(pathname, "/");
+ strcat(pathname, FILE_NAME);
+ path_len = strlen(pathname);
+
+ for (i = 0; i < FILES_IN_DIR; i++) {
+
+ sprintf(pathname + path_len,"%d%s",i,"");
+
+ if (PR_FAILURE == PR_Delete(pathname)) {
+ printf(
+ "testfile failed to delete file %s [%d, %d]\n",
+ pathname, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+ }
PR_CloseDir(fd_dir);
- if (PR_FAILURE == PR_RmDir(TEST_DIR)) {
- printf(
- "testfile failed to rmdir %s [%d, %d]\n",
- TEST_DIR, PR_GetError(), PR_GetOSError());
- return -1;
- }
- PR_EnterMonitor(tinfo->mon);
- tinfo->done = 1;
- PR_Notify(tinfo->mon);
- PR_ExitMonitor(tinfo->mon);
-
- return 0;
+ if (PR_FAILURE == PR_RmDir(TEST_DIR)) {
+ printf(
+ "testfile failed to rmdir %s [%d, %d]\n",
+ TEST_DIR, PR_GetError(), PR_GetOSError());
+ return -1;
+ }
+ PR_EnterMonitor(tinfo->mon);
+ tinfo->done = 1;
+ PR_Notify(tinfo->mon);
+ PR_ExitMonitor(tinfo->mon);
+
+ return 0;
}
/************************************************************************/
@@ -891,32 +889,32 @@ HANDLE hfile;
int main(int argc, char **argv)
{
#ifdef WIN32
- PRUint32 len;
+ PRUint32 len;
#endif
#if defined(XP_UNIX) || defined(XP_OS2)
- int opt;
- extern char *optarg;
- extern int optind;
+ int opt;
+ extern char *optarg;
+ extern int optind;
#endif
#if defined(XP_UNIX) || defined(XP_OS2)
- while ((opt = getopt(argc, argv, "d")) != EOF) {
- switch(opt) {
- case 'd':
- _debug_on = 1;
- break;
- default:
- break;
- }
+ while ((opt = getopt(argc, argv, "d")) != EOF) {
+ switch(opt) {
+ case 'd':
+ _debug_on = 1;
+ break;
+ default:
+ break;
}
+ }
#endif
- PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
+ PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
PR_STDIO_INIT();
- mon = PR_NewMonitor();
- if (mon == NULL) {
- printf("testfile: PR_NewMonitor failed\n");
- exit(2);
- }
+ mon = PR_NewMonitor();
+ if (mon == NULL) {
+ printf("testfile: PR_NewMonitor failed\n");
+ exit(2);
+ }
#ifdef WIN32
#ifdef WINCE
@@ -927,35 +925,35 @@ int main(int argc, char **argv)
/*
* enough space for prdir
*/
- WideCharToMultiByte(CP_ACP, 0, tdir, -1, testdir, TMPDIR_LEN, 0, 0);
+ WideCharToMultiByte(CP_ACP, 0, tdir, -1, testdir, TMPDIR_LEN, 0, 0);
}
}
#else
- len = GetTempPath(TMPDIR_LEN, testdir);
+ len = GetTempPath(TMPDIR_LEN, testdir);
#endif /* WINCE */
- if ((len > 0) && (len < (TMPDIR_LEN - 6))) {
- /*
- * enough space for prdir
- */
- strcpy((testdir + len),"prdir");
- TEST_DIR = testdir;
- printf("TEST_DIR = %s\n",TEST_DIR);
- }
+ if ((len > 0) && (len < (TMPDIR_LEN - 6))) {
+ /*
+ * enough space for prdir
+ */
+ strcpy((testdir + len),"prdir");
+ TEST_DIR = testdir;
+ printf("TEST_DIR = %s\n",TEST_DIR);
+ }
#endif /* WIN32 */
- if (FileTest() < 0) {
- printf("File Test failed\n");
- exit(2);
- }
- printf("File Test passed\n");
- if ((RunDirTest() < 0) || dirtest_failed) {
- printf("Dir Test failed\n");
- exit(2);
- }
- printf("Dir Test passed\n");
-
- PR_DestroyMonitor(mon);
- PR_Cleanup();
+ if (FileTest() < 0) {
+ printf("File Test failed\n");
+ exit(2);
+ }
+ printf("File Test passed\n");
+ if ((RunDirTest() < 0) || dirtest_failed) {
+ printf("Dir Test failed\n");
+ exit(2);
+ }
+ printf("Dir Test passed\n");
+
+ PR_DestroyMonitor(mon);
+ PR_Cleanup();
return 0;
}