xref: /trunk/main/sal/workben/testfile.cxx (revision 87d2adbc)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sal.hxx"
26 
27 #define UNICODE
28 
29 
30 #include <osl/file.hxx>
31 #include <osl/process.h>
32 #include <osl/time.h>
33 #include <rtl/alloc.h>
34 #include <rtl/ustring.hxx>
35 #include <stdio.h>
36 #include <string.h>
37 #include <time.h>
38 
39 
40 #ifdef UNX
41 #include <wchar.h>
42 #endif
43 
44 #ifdef WNT
45 #include <windows.h>
46 #endif
47 
48 using namespace	osl;
49 using namespace	rtl;
50 
51 #define MAXIMPATH	256
52 
53 rtl::OUString	root;
54 
55 rtl::OUString	dir1;
56 rtl::OUString	dir2;
57 rtl::OUString	dir_on_server;
58 rtl::OUString	dir_not_exist;
59 rtl::OUString	dir_not_exist_on_server;
60 rtl::OUString	dir_wrong_semantic;
61 
62 rtl::OUString	file1;
63 rtl::OUString	file2;
64 rtl::OUString	file3;
65 rtl::OUString	file_on_server;
66 rtl::OUString	file_not_exist;
67 
68 
69 
70 void print_error(::rtl::OString& str, FileBase::RC rc);
71 
PressKey()72 void PressKey()
73 {
74 	printf("\nPress Return !\n");
75 	int i=getchar();
76 }
77 
printFileName(::rtl::OUString & str)78 void printFileName(::rtl::OUString& str)
79 {
80 	rtl::OString		aString;
81 
82 	aString = rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US );
83 
84 	printf( "%s", aString.getStr() );
85 
86 	return;
87 }
88 
89 //--------------------------------------------------
90 // Initialization
91 //--------------------------------------------------
92 
testLineBreak(sal_Char * pCount,sal_uInt64 nLen,sal_uInt32 * cLineBreak)93 sal_Bool testLineBreak( sal_Char *pCount , sal_uInt64 nLen , sal_uInt32 *cLineBreak )
94 {
95 	sal_Bool fSuccess=sal_False;
96 	*cLineBreak=0;
97 
98 	if (nLen==0)
99 		return fSuccess;
100 
101 	if ( *pCount==13 )
102 	{
103 		if (nLen>=1 && *(pCount+1)==10)
104 			*cLineBreak=2;
105 		else
106 			*cLineBreak=1;
107 
108 		if (nLen>=2 && *(pCount+2)==10)
109 			(*cLineBreak)++;
110 
111 		fSuccess=sal_True;
112 	}
113 	else if ( *pCount==10 )
114 	{
115 		*cLineBreak=1;
116 		fSuccess=sal_True;
117 	}
118 
119 	return fSuccess;
120 }
121 
122 // Initialization
123 
Initialize(void)124 sal_Bool Initialize( void )
125 {
126 	DirectoryItem	aItem;
127 	FileStatus		aStatus( FileStatusMask_All );
128 	rtl_uString		*strExeFileURL=NULL;
129 	oslProcessError	ProcessError;
130 
131 	rtl::OUString	iniFileURL;
132 	File			*pFile;
133 	sal_Unicode		*pExeFileCount;
134 
135 	FileBase::RC	rc;
136 
137 	sal_uInt64		uBytesRequested;
138 	sal_uInt64		uBytesRead;
139     sal_Char		*pBuffer;
140 	sal_Char		*pBegin;
141 	sal_Char		*pCount;
142 
143 	rtl::OUString	dir[12];
144 
145 	// Open to the ini-file
146 
147 	ProcessError=osl_getExecutableFile(&strExeFileURL);
148 
149 	if ( ProcessError == osl_Process_E_None)
150 	{
151 		pExeFileCount=rtl_uString_getStr(strExeFileURL)+rtl_uString_getLength(strExeFileURL);
152 
153 		// Search for the last slash in the Path
154 		while (*pExeFileCount!=L'/' && pExeFileCount>rtl_uString_getStr(strExeFileURL))
155 			pExeFileCount--;
156 
157 		// iniFileURL = strExeFileURL without the filename of the exe-File
158 		iniFileURL=rtl::OUString( rtl_uString_getStr(strExeFileURL) ,(int) (pExeFileCount-rtl_uString_getStr(strExeFileURL)) );
159 
160 		// add "/testfile.ini" to iniFileURL
161 		iniFileURL+=rtl::OUString::createFromAscii("/testfile.ini");
162 
163 		// Open the ini-File
164 		pFile=new File( iniFileURL );
165 		rc=pFile->open( OpenFlag_Read | OpenFlag_Write );
166 		if ( rc!=FileBase::E_None )
167 		{
168 			rtl_uString_release(strExeFileURL);
169 			return sal_False;
170 		}
171 	}
172 	else
173 	{
174 		rtl_uString_release(strExeFileURL);
175 		return sal_False;
176 	}
177 
178 	// Get filesize of the ini-File
179 
180 	rc=DirectoryItem::get( iniFileURL, aItem );
181 	if ( rc!=FileBase::E_None )
182 		return sal_False;
183 
184 	rc=aItem.getFileStatus( aStatus );
185 	if ( rc!=FileBase::E_None )
186 		return sal_False;
187 
188 	uBytesRequested=aStatus.getFileSize();
189 
190 	// read ini-File
191 	rc=pFile->setPos( Pos_Absolut, 0 );
192 	pBuffer=(sal_Char*) rtl_allocateMemory( (sal_uInt32) (uBytesRequested+1)*sizeof(sal_Char) );
193 	rtl_zeroMemory( pBuffer, (sal_uInt32)(uBytesRequested+1)*sizeof(sal_Char) );
194 
195 	rc=pFile->read( pBuffer , uBytesRequested , uBytesRead );
196 	if ( rc!=FileBase::E_None )
197 		return sal_False;
198 
199 
200 	pBegin=pBuffer;
201 	pCount=pBegin;
202 
203 	for ( int i=0 ; i<12 ; i++ )
204 	{
205 		sal_uInt32		cLineBrake=0;
206 		while ( (pCount-pBuffer < uBytesRead) && *pCount!='=')
207 			pCount++;
208 
209 		pCount++;
210 		pBegin=pCount;
211 
212 		while ( (pCount-pBuffer < uBytesRead) && !testLineBreak(pCount,uBytesRead-(pCount-pBuffer), &cLineBrake))
213 			pCount++;
214 
215 		dir[i]=rtl::OUString(pBegin, pCount-pBegin, RTL_TEXTENCODING_ASCII_US);
216 
217 		pCount+=cLineBrake;
218 		pBegin=pCount;
219 	}
220 
221 	root=rtl::OUString(dir[0]);
222 	dir1=rtl::OUString(dir[1]);
223 	dir2=rtl::OUString(dir[2]);
224 	dir_on_server=rtl::OUString(dir[3]);
225 	dir_not_exist=rtl::OUString(dir[4]);
226 	dir_not_exist_on_server=rtl::OUString(dir[5]);
227 	dir_wrong_semantic=rtl::OUString(dir[6]);
228 
229 	file1=rtl::OUString(dir[7]);
230 	file2=rtl::OUString(dir[8]);
231 	file3=rtl::OUString(dir[9]);
232 	file_on_server=rtl::OUString(dir[10]);
233 	file_not_exist=rtl::OUString(dir[11]);
234 
235 	// close the ini-file
236 	rc=pFile->close();
237 
238 	rtl_freeMemory( pBuffer );
239 
240 
241 	// Create directories
242 	rc=Directory::create( dir1 );
243 	if ( rc!=FileBase::E_None )
244 		return sal_False;
245 
246 	rc=Directory::create( dir2 );
247 	if ( rc!=FileBase::E_None )
248 		return sal_False;
249 
250 	rc=Directory::create( dir_on_server );
251 	if ( rc!=FileBase::E_None )
252 		return sal_False;
253 
254 	pFile=new File( file1 );
255 	rc=pFile->open( OpenFlag_Write | OpenFlag_Create );
256 	if ( rc!=FileBase::E_None )
257 		return sal_False;
258 	rc=pFile->close();
259 	delete pFile;
260 
261 	pFile=new File( file2 );
262 	rc=pFile->open( OpenFlag_Write | OpenFlag_Create );
263 	if ( rc!=FileBase::E_None )
264 		return sal_False;
265 	rc=pFile->close();
266 	delete pFile;
267 
268 	pFile=new File( file_on_server );
269 	rc=pFile->open( OpenFlag_Write | OpenFlag_Create );
270 	if ( rc!=FileBase::E_None )
271 		return sal_False;
272 	rc=pFile->close();
273 	delete pFile;
274 
275 	return sal_True;
276 }
277 
278 //--------------------------------------------------
279 // Shutdown
280 //--------------------------------------------------
281 
Shutdown(void)282 sal_Bool Shutdown( void )
283 {
284 	sal_Bool		fSuccess=sal_True;
285 	FileBase::RC	rc;
286 	File			*pFile;
287 
288 	// remove created files
289 
290 	pFile=new File( file1 );
291 	rc=pFile->remove( file1 );
292 	if ( rc!=FileBase::E_None )
293 		fSuccess=sal_False;
294 	delete pFile;
295 
296 	pFile=new File( file2 );
297 	rc=pFile->remove( file2 );
298 	if ( rc!=FileBase::E_None )
299 		fSuccess=sal_False;
300 	delete pFile;
301 
302 	// remove created directories
303 
304 	rc=Directory::remove( dir1 );
305 	if ( rc!=FileBase::E_None )
306 		fSuccess=sal_False;
307 
308 	rc=Directory::remove( dir2 );
309 	if ( rc!=FileBase::E_None )
310 		fSuccess=sal_False;
311 
312 	// remove created file on the server
313 
314 	pFile=new File( file_on_server );
315 	rc=pFile->remove( file_on_server );
316 	if ( rc!=FileBase::E_None )
317 		fSuccess=sal_False;
318 	delete pFile;
319 
320 	// remove created directory on the server
321 
322 	rc=Directory::remove( dir_on_server );
323 	if ( rc!=FileBase::E_None )
324 		fSuccess=sal_False;
325 
326 	return fSuccess;
327 }
328 
329 //--------------------------------------------------
330 // helper functions
331 //--------------------------------------------------
332 
333 // Show FileType
showFileType(FileStatus::Type aType)334 void showFileType( FileStatus::Type aType )
335 {
336 	if ( aType==FileStatus::Directory )
337 		printf( "FileType: Directory \n" );
338 	else if ( aType==FileStatus::Volume )
339 		printf( "FileType: Volume \n" );
340 	else if ( aType==FileStatus::Regular )
341 		printf( "FileType: Regular \n" );
342 	else if ( aType==FileStatus::Unknown )
343 		printf( "FileType: Unknown \n" );
344 
345 }
346 
347 // Show Attributes
showAttributes(sal_uInt64 uAttributes)348 void showAttributes( sal_uInt64 uAttributes )
349 {
350 	if ( uAttributes==0 )
351 		printf( "No Attributes \n" );
352 	if ( uAttributes & Attribute_ReadOnly )
353 		printf( "Attribute: ReadOnly \n" );
354 	if ( uAttributes & Attribute_Hidden )
355 		printf( "Attribute: Hidden \n" );
356 	if ( uAttributes & Attribute_Executable )
357 		printf( "Attribute: Executable \n");
358 	if ( uAttributes & Attribute_GrpWrite )
359 		printf( "Attribute: GrpWrite \n");
360 	if ( uAttributes & Attribute_GrpRead )
361 		printf( "Attribute: GrpRead \n" );
362 	if ( uAttributes & Attribute_GrpExe )
363 		printf( "Attribute: GrpExe \n" );
364 	if ( uAttributes & Attribute_OwnWrite )
365 		printf( "Attribute: OwnWrite \n");
366 	if ( uAttributes & Attribute_OwnRead )
367 		printf( "Attribute: OwnRead \n" );
368 	if ( uAttributes & Attribute_OwnExe )
369 		printf( "Attribute: OwnExe \n" );
370 	if ( uAttributes & Attribute_OthWrite )
371 		printf( "Attribute: OthWrite \n" );
372 	if ( uAttributes & Attribute_OthRead )
373 		printf( "Attribute: OthRead \n");
374 	if ( uAttributes & Attribute_OthExe )
375 		printf( "Attribute: OthExe \n" );
376 
377 	return;
378 }
379 
380 // Show Time
showTime(TimeValue aTime)381 void showTime( TimeValue aTime )
382 {
383 	TimeValue	aLocalTimeVal, aSystemTimeVal , aSysTimeVal;
384 	oslDateTime	aDateTime, aSystemTime;
385 
386 	if ( osl_getLocalTimeFromSystemTime( &aTime, &aLocalTimeVal ) )
387 	{
388 		if ( osl_getDateTimeFromTimeValue( &aLocalTimeVal, &aDateTime ) )
389 		{
390 			printf("\t%02i.%02i.%4i , %02i.%02i.%02i Uhr\n", aDateTime.Day, aDateTime.Month, aDateTime.Year, aDateTime.Hours, aDateTime.Minutes, aDateTime.Seconds);
391 		}
392 		else
393 			printf("Error !\n");
394 	}
395 
396 	if ( osl_getDateTimeFromTimeValue( &aTime, &aSystemTime ) )
397 	{
398 		printf("SystemTime: \t\t%02i.%02i.%4i , %02i.%02i.%02i Uhr\n", aSystemTime.Day, aSystemTime.Month, aSystemTime.Year, aSystemTime.Hours, aSystemTime.Minutes, aSystemTime.Seconds);
399 	}
400 	else
401 		printf("Error !\n");
402 
403 	//Verify
404 
405 	if ( osl_getTimeValueFromDateTime( &aSystemTime, &aSystemTimeVal ) )
406 	{
407 		if ( ( aSystemTimeVal.Seconds == aTime.Seconds ) && ( aSystemTimeVal.Nanosec == aTime.Nanosec ))
408 			printf ("Verify : TimeValue : ok! \n");
409 		else
410 		{
411 			printf ("Verify : TimeValue : Error! \n");
412 			printf ("aTime : %u \n", aTime.Seconds);
413 			printf ("aSystemTimeVal : %u \n", aSystemTimeVal.Seconds);
414 		}
415 	}
416 	else
417 		printf ("Verify : TimeValue : Error! \n");
418 
419 
420 	if ( osl_getSystemTimeFromLocalTime( &aLocalTimeVal , &aSysTimeVal ) )
421 	{
422 		if ( ( aSysTimeVal.Seconds == aTime.Seconds ) && ( aSysTimeVal.Nanosec == aTime.Nanosec ))
423 			printf ("Verify : SystemTime : ok! \n");
424 		else
425 		{
426 			printf ("Verify : SystemTime : Error! \n");
427 			printf ("aTime : %u\n", aTime.Seconds);
428 			printf ("aSystemTimeVal : %u\n", aSysTimeVal.Seconds);
429 		}
430 	}
431 	else
432 		printf ("Verify : SystemTime : Error! \n");
433 
434 	return;
435 }
436 
getSystemTime()437 TimeValue getSystemTime()
438 {
439 	TimeValue	aTime;
440 	time_t ltime;
441 
442 	time( &ltime );
443 
444 	aTime.Seconds = ltime;
445 	aTime.Nanosec = 0;
446 
447 	return aTime;
448 }
449 
450 
451 //--------------------------------------------------
452 // DirectoryOpenAndCloseTest
453 //--------------------------------------------------
454 
DirectoryOpenAndCloseTest(void)455 void DirectoryOpenAndCloseTest( void )
456 {
457 	FileBase::RC	rc;
458 	int i=0;
459 	Directory	*pDir;
460 
461 	printf( "--------------------------------------------\n");
462 	printf( "Directory-Open-And-Close-Test\n");
463 	printf( "--------------------------------------------\n\n");
464 
465 	//--------------------------------------------------
466 	// open an existing directory
467 	//--------------------------------------------------
468 
469 	pDir=new Directory( dir1 );
470 	printf( "Open an existing directory: ");
471 	printFileName( dir1 );
472 	printf( "\n" );
473 
474 	rc= pDir->open();
475 	print_error( rtl::OString( "Open Directory" ), rc );
476 
477 	if ( pDir->isOpen() )
478 	{
479 		print_error( rtl::OString( "Directory is Open" ), rc );
480 	}
481 
482 	// Close Directory
483 	rc=pDir->close();
484 	print_error( rtl::OString( "Close Directory" ), rc );
485 
486 	delete pDir;
487 	printf( "\n" );
488 
489 	//--------------------------------------------------
490 	// open a not existing directory
491 	//--------------------------------------------------
492 
493 	pDir=new Directory( dir_not_exist );
494 
495 	printf( "Open a not existing directory: ");
496 	printFileName( dir_not_exist );
497 	printf( "\n" );
498 
499 	rc= pDir->open();
500 
501 	print_error( rtl::OString( "Open Directory" ), rc );
502 
503 	delete pDir;
504 
505 	printf( "\n" );
506 
507 	//--------------------------------------------------
508 	// open a directory with a wrong semantic
509 	//--------------------------------------------------
510 	pDir=new Directory( dir_wrong_semantic );
511 
512 	printf( "Open a directory with a wrong semantic: ");
513 	printFileName( dir_wrong_semantic );
514 	printf( "\n" );
515 
516 	rc= pDir->open();
517 	print_error( rtl::OString( "Open Directory" ), rc );
518 
519 	delete pDir;
520 
521 	printf( "\n" );
522 
523 	//--------------------------------------------------
524 	// open an existing directory on a server
525 	//--------------------------------------------------
526 
527 	pDir=new Directory( dir_on_server );
528 
529 	printf( "Open an existing directory on a server: ");
530 	printFileName( dir_on_server );
531 	printf( "\n" );
532 
533 	rc= pDir->open();
534 	print_error( rtl::OString( "Open Directory" ), rc );
535 
536 	// Close Directory
537 	rc=pDir->close();
538 	print_error( rtl::OString( "Close Directory" ), rc );
539 
540 	delete pDir;
541 	printf( "\n" );
542 
543 	//--------------------------------------------------
544 	// open a not existing directory on a server
545 	//--------------------------------------------------
546 
547 	pDir=new Directory( dir_not_exist_on_server );
548 
549 	printf( "Open a not existing directory on a server: ");
550 	printFileName( dir_not_exist_on_server );
551 	printf( "\n" );
552 
553 	rc= pDir->open();
554 	print_error( rtl::OString( "Open Directory" ), rc );
555 
556 	delete pDir;
557 	printf( "\n" );
558 
559 	//--------------------------------------------------
560 	// Close a not existing directory
561 	//--------------------------------------------------
562 
563 	pDir=new Directory( dir_not_exist );
564 	printf( "Close a not existing directory: ");
565 	printFileName( dir_not_exist );
566 	printf( "\n" );
567 
568 	rc=pDir->close();
569 	print_error( rtl::OString( "Close Directory" ), rc );
570 
571 	PressKey();
572 	return;
573 
574 }
575 
576 //--------------------------------------------------
577 // DirectoryCreateAndRemoveTest
578 //--------------------------------------------------
579 
DirectoryCreateAndRemoveTest(void)580 void DirectoryCreateAndRemoveTest( void )
581 {
582 	FileBase::RC	rc,rc1;
583 	int i=0;
584 	Directory	*pDir;
585 
586 	printf( "--------------------------------------------\n" );
587 	printf( "Directory-Create-And-Remove-Test\n" );
588 	printf( "--------------------------------------------\n\n" );
589 
590 	//--------------------------------------------------
591 	// Create directory
592 	//--------------------------------------------------
593 	printf( "Create a not existing directory: ");
594 	printFileName( dir_not_exist );
595 	printf( "\n" );
596 
597 	rc=Directory::create( dir_not_exist) ;
598 	print_error( rtl::OString( "Create Directory" ), rc );
599 
600 	// Verify
601 	pDir=new Directory( dir_not_exist );
602 
603 	rc= pDir->open();
604 	print_error( rtl::OString( "Verify" ), rc );
605 	pDir->close();
606 	delete pDir;
607 
608 	printf( "\n" );
609 
610 	//--------------------------------------------------
611 	// Create a directory on a server
612 	//--------------------------------------------------
613 
614 	printf( "Create a not existing directory on a server: ");
615 	printFileName( dir_not_exist_on_server );
616 	printf( "\n" );
617 
618 	rc=Directory::create( dir_not_exist_on_server );
619 	print_error( rtl::OString( "Create Directory" ), rc );
620 
621 	// Verify
622 	pDir=new Directory( dir_not_exist_on_server );
623 	rc= pDir->open();
624 	print_error( rtl::OString( "Verify" ), rc );
625 	pDir->close();
626 	delete pDir;
627 
628 	printf( "\n" );
629 
630 	//--------------------------------------------------
631 	// Remove Directories
632 	//--------------------------------------------------
633 
634 	printf( "Remove the created directories: \n" );
635 
636 	rc=Directory::remove( dir_not_exist );
637 
638 	rc1=Directory::remove( dir_not_exist_on_server );
639 
640 	if ( rc==FileBase::E_None && rc1==FileBase::E_None )
641 		print_error( rtl::OString( "Remove Directories" ), FileBase::E_None );
642 	else if ( rc!=FileBase::E_None )
643 		print_error( rtl::OString( "Remove local Directory" ),rc );
644 	else
645 		print_error( rtl::OString( "Remove Directory on a server" ),rc1 );
646 
647 	printf( "\n" );
648 
649 	//--------------------------------------------------
650 	// Remove a not existing directory
651 	//--------------------------------------------------
652 
653 	printf( "Remove a not existing directory: ");
654 	printFileName( dir_not_exist );
655 	printf( "\n" );
656 
657 	rc=Directory::remove( dir_not_exist );
658 	print_error( rtl::OString( "Remove" ),rc );
659 
660 	PressKey();
661 	return;
662 }
663 
664 //--------------------------------------------------
665 // FileOpenAndCloseTest
666 //--------------------------------------------------
667 
FileOpenAndCloseTest(void)668 static void FileOpenAndCloseTest( void )
669 {
670 	FileBase::RC	rc;
671 	int i=0;
672 
673 	printf( "--------------------------------------------\n" );
674 	printf( "File-Open-And-Close-Test\n" );
675 	printf( "--------------------------------------------\n\n" );
676 
677 	File	*pFile;
678 
679 	pFile=new File( file1 );
680 
681 	printf( "Open an existing file: ");
682 	printFileName( file1 );
683 	printf( "\n" );
684 
685 	//--------------------------------------------------
686 	// open an existing file (Read)
687 	//--------------------------------------------------
688 
689 	rc=pFile->open( OpenFlag_Read );
690 	print_error( rtl::OString( "Open File (Read)" ), rc );
691 
692 	//--------------------------------------------------
693 	// close the file
694 	//--------------------------------------------------
695 
696 	rc=pFile->close();
697 	print_error( rtl::OString( "Close File" ), rc );
698 
699 	printf( "\n" );
700 
701 	//--------------------------------------------------
702 	// open an existing file (Write)
703 	//--------------------------------------------------
704 
705 	rc=pFile->open( OpenFlag_Write );
706 	print_error( rtl::OString( "Open File (Write)" ), rc );
707 
708 	//--------------------------------------------------
709 	// close the file
710 	//--------------------------------------------------
711 
712  	rc=pFile->close();
713 	print_error( rtl::OString( "Close File" ), rc );
714 
715 	printf( "\n" );
716 
717 	//--------------------------------------------------
718 	// close the file a second time
719 	//--------------------------------------------------
720 
721  	rc=pFile->close();
722 	print_error( rtl::OString( "Close the file a second time" ), rc );
723 
724 	delete pFile;
725 	PressKey();
726 }
727 
728 //--------------------------------------------------
729 // FileCreateAndRemoveTest
730 //--------------------------------------------------
731 
FileCreateAndRemoveTest()732 void FileCreateAndRemoveTest()
733 {
734 	FileBase::RC	rc;
735 	File	*pFile;
736 
737 	printf( "--------------------------------------------\n" );
738 	printf( "File-Create-And-Remove-Test\n" );
739 	printf( "--------------------------------------------\n\n" );
740 
741 	pFile=new File( file_not_exist );
742 
743 	printf( "Create File: ");
744 	printFileName( file_not_exist );
745 	printf( "\n" );
746 
747 	//----------------------------------------------------
748 	// open (create) a not existing file (Read and write)
749 	//----------------------------------------------------
750 
751 	rc = pFile->open( OpenFlag_Read | OpenFlag_Write | osl_File_OpenFlag_Create );
752 
753 	print_error( rtl::OString( "Create and Open File (Read & Write)" ), rc );
754 
755 	//----------------------------------------------------
756 	// close the file
757 	//----------------------------------------------------
758 
759 	rc=pFile->close();
760 	print_error( rtl::OString( "Close File" ), rc );
761 
762 	//----------------------------------------------------
763 	// remove the file
764 	//----------------------------------------------------
765 
766 	rc=pFile->remove( file_not_exist );
767 	print_error( rtl::OString(" Remove File" ), rc );
768 
769 	printf( "\n" );
770 
771 	//----------------------------------------------------
772 	// remove the same file a second time
773 	//----------------------------------------------------
774 	rc=pFile->remove( file_not_exist );
775 	print_error( rtl::OString( "Remove a not existing File" ), rc );
776 
777 	//----------------------------------------------------
778 	// remove an open file
779 	//----------------------------------------------------
780 
781 	pFile->open( OpenFlag_Read | OpenFlag_Write | osl_File_OpenFlag_Create );
782 
783 	rc=pFile->remove( file_not_exist );
784 	print_error( rtl::OString( "Remove an open File" ), rc );
785 
786 	pFile->close();
787 	pFile->remove( file_not_exist );
788 
789 	PressKey();
790 
791 	return;
792 }
793 
794 //--------------------------------------------------
795 // FileWriteAndReadTest
796 //--------------------------------------------------
797 
FileWriteAndReadTest(void)798 void FileWriteAndReadTest( void )
799 {
800 	FileBase::RC	rc;
801 
802 	sal_uInt64 uWritten;
803 	sal_uInt64 uRead;
804 	sal_Char	*pWriteBuffer="Hier kommt der Osterhase !";
805 	sal_uInt64	nLen=strlen( pWriteBuffer );
806 	sal_Char *pReadBuffer;
807 
808 	printf( "--------------------------------------------\n" );
809 	printf( "File-Write-And-Read-Test\n" );
810 	printf( "--------------------------------------------\n\n" );
811 
812 	File	*pFile;
813 
814 	pFile=new File( file_not_exist );
815 
816 	printf( "Create File: ");
817 	printFileName( file_not_exist );
818 	printf("\n");
819 
820 	//----------------------------------------------------
821 	// open (create) a not existing file (Read and write)
822 	//----------------------------------------------------
823 
824 	rc = pFile->open( OpenFlag_Read | OpenFlag_Write | osl_File_OpenFlag_Create );
825 
826 	print_error( rtl::OString( "Create and Open File (Read & Write)" ), rc );
827 
828 	printf( "\n" );
829 
830 	//----------------------------------------------------
831 	// write a string to the file
832 	//----------------------------------------------------
833 	rc=pFile->write( pWriteBuffer , nLen , uWritten );
834 	print_error( rtl::OString( "Write File" ), rc );
835 
836 	if(uWritten==nLen)
837 		printf( "Verify: OK! \n" );
838 	else
839 		printf( "Verify: Error\n" );
840 
841 	printf( "\n" );
842 
843 	//----------------------------------------------------
844 	// move the filepointer to the beginning
845 	//----------------------------------------------------
846 
847 	rc=pFile->setPos( Pos_Absolut , 0 );
848 	print_error( rtl::OString( "Set FilePointer to the beginning of the file" ), rc );
849 
850 	printf( "\n" );
851 
852 	//----------------------------------------------------
853 	// read the string
854 	//----------------------------------------------------
855 
856 	pReadBuffer=(sal_Char*) rtl_allocateMemory( (sal_uInt32)(nLen+1)*sizeof(sal_Char) );
857 	rtl_zeroMemory( pReadBuffer, (sal_uInt32)(nLen+1)*sizeof(sal_Char) );
858 	rc=pFile->read( pReadBuffer , nLen,uRead );
859 	print_error( rtl::OString( "Read File" ), rc );
860 
861 	if (strcmp(pWriteBuffer, pReadBuffer)==0)
862 	{
863 		printf( "Verify: OK !\n" );
864 		printf( "Text: %s\n",pReadBuffer );
865 	}
866 	else
867 		printf( "Verify: Error\n" );
868 
869 	rtl_freeMemory( pReadBuffer );
870 
871 	printf( "\n" );
872 
873 	// close the file
874 	rc=pFile->close();
875 	print_error( rtl::OString( "Close File" ), rc );
876 
877 	// remove the file
878 	rc=pFile->remove( file_not_exist );
879 	print_error( rtl::OString( "Remove File" ), rc );
880 
881 	PressKey();
882 
883 	return;
884 
885 }
886 
887 //--------------------------------------------------
888 // FileCopyMoveTest
889 //--------------------------------------------------
890 
FileCopyAndMoveTest(void)891 void FileCopyAndMoveTest( void )
892 {
893 	FileBase::RC	rc;
894 
895 	printf( "--------------------------------------------\n" );
896 	printf( "File-Copy-Move-Test\n" );
897 	printf( "--------------------------------------------\n\n" );
898 
899 
900 	File	*pFile;
901 	rtl::OUString	destPath(dir2);
902 
903 	//--------------------------------------------------
904 	// FileCopyTest
905 	//--------------------------------------------------
906 
907 	destPath+=rtl::OUString::createFromAscii("/");
908 	destPath+=file3;
909 
910 	printf( "Copy the file ");
911 	printFileName( file1 );
912 	printf( " to ");
913 	printFileName( destPath );
914 	printf( "\n" );
915 
916 
917 	rc=File::copy( file1 , destPath );
918 	print_error( rtl::OString( "FileCopy" ), rc );
919 
920 	pFile=new File( destPath );
921 
922 	rc=pFile->open( OpenFlag_Read );
923 	if ( rc == FileBase::E_None)
924 	{
925 		printf( "Verify: OK!\n" );
926 		pFile->close();
927 		File::remove( destPath );
928 	}
929 	else
930 		printf( "Verify: Error!\n" );
931 
932 	delete pFile;
933 
934 	printf( "\n" );
935 
936 	//--------------------------------------------------
937 	// Copy a file to a not existing directory
938 	//--------------------------------------------------
939 
940 	destPath=rtl::OUString( dir_not_exist );
941 	destPath+=rtl::OUString::createFromAscii("/");
942 	destPath+=file3;
943 
944 	printf( "Copy a file to a not existing directory \n");
945 	printf( "Copy the file  %s to %s\n", file1.getStr(), destPath.getStr() );
946 
947 	rc=File::copy( file1, destPath );
948 	print_error( rtl::OString( "FileCopy" ), rc );
949 
950 	printf( "\n" );
951 
952 	//--------------------------------------------------
953 	// Copy a directory
954 	//--------------------------------------------------
955 
956 	printf( "Copy the directory: ");
957 	printFileName( dir1 );
958 	printf( " to ");
959 	printFileName( dir2 );
960 	printf( "\n" );
961 
962 	rc=File::copy( dir1 , dir2 );
963 	print_error( rtl::OString( "FileCopy" ), rc );
964 
965 	printf( "\n" );
966 
967 	//--------------------------------------------------
968 	// FileMoveTest
969 	//--------------------------------------------------
970 
971 	destPath=rtl::OUString( dir2 );
972 	destPath+=rtl::OUString::createFromAscii("/");
973 	destPath+=file3;
974 
975 	printf( "Move the file ");
976 	printFileName( file1 );
977 	printf( " to ");
978 	printFileName( destPath );
979 	printf( "\n" );
980 
981 	rc=File::move( file1, destPath );
982 	print_error( rtl::OString( "FileMove" ), rc );
983 
984 	pFile=new File( destPath );
985 
986 	rc=pFile->open( OpenFlag_Read );
987 	if ( rc==FileBase::E_None )
988 	{
989 		pFile->close();
990 
991 		delete pFile;
992 		pFile=new File( file1 );
993 
994 		rc=pFile->open( OpenFlag_Read );
995 
996 		if ( rc!=FileBase::E_None )
997 		{
998 			printf( "Verify: OK!\n" );
999 			File::move( destPath, file1 );
1000 		}
1001 		else
1002 		{
1003 			printf( "Verify: Error!\n" );
1004 			pFile->close();
1005 			File::remove( destPath );
1006 		}
1007 	}
1008 	else
1009 		printf( "Verify: Error!\n" );
1010 
1011 	delete pFile;
1012 
1013 	printf( "\n" );
1014 
1015 
1016 	//--------------------------------------------------
1017 	// Move a file to a not existing directory
1018 	//--------------------------------------------------
1019 
1020 	destPath=rtl::OUString( dir_not_exist );
1021 	destPath+=rtl::OUString::createFromAscii("/");
1022 	destPath+=file3;
1023 
1024 	printf( "Move a file to a not existing directory: \n");
1025 	printf( "Move the file ");
1026 	printFileName( file1 );
1027 	printf( " to ");
1028 	printFileName( destPath );
1029 	printf( "\n" );
1030 
1031 	rc=File::move( file1 , destPath );
1032 	print_error( rtl::OString( "FileMove" ), rc );
1033 
1034 	printf( "\n" );
1035 
1036 	//--------------------------------------------------
1037 	// Move a directory
1038 	//--------------------------------------------------
1039 
1040 	printf( "Move a directory: \n");
1041 
1042 	printf( "Move the directory ");
1043 	printFileName( dir1 );
1044 	printf( " to ");
1045 	printFileName( dir_not_exist );
1046 	printf( "\n" );
1047 
1048 
1049 	rc=File::move( dir1 , dir_not_exist);
1050 	print_error( rtl::OString( "FileMove" ), rc );
1051 
1052 	if ( rc == FileBase::E_None )
1053 		File::move( dir_not_exist , dir1);
1054 
1055 	printf( "\n" );
1056 
1057 
1058 	PressKey();
1059 	return;
1060 }
1061 
1062 //----------------------------------------------------
1063 // FileSizeTest
1064 //----------------------------------------------------
1065 
FileSizeTest(void)1066 void FileSizeTest( void )
1067 {
1068 	FileBase::RC	rc;
1069 	sal_uInt64		filesize;
1070 	DirectoryItem	aItem;
1071 
1072 	printf( "--------------------------------------------\n" );
1073 	printf( "File-Size-Test\n" );
1074 	printf( "--------------------------------------------\n\n" );
1075 
1076 
1077 	File	aFile( file_not_exist );
1078 
1079 	printf( "Create File: ");
1080 	printFileName( file_not_exist );
1081 	printf( "\n\n");
1082 
1083 	rc = aFile.open( OpenFlag_Read | OpenFlag_Write | osl_File_OpenFlag_Create );
1084 	print_error( rtl::OString( "Create and Open File (Read & Write)" ), rc );
1085 	printf( "\n" );
1086 
1087 	if ( rc == FileBase::E_None )
1088 	{
1089 		//----------------------------------------------------
1090 		// Set Filesize to 5000
1091 		//----------------------------------------------------
1092 
1093 		printf( "Set FileSize to 5000\n" );
1094 		rc=aFile.setSize( 5000 );
1095 		print_error( rtl::OString( "Set FileSize" ), rc );
1096 
1097 		printf( "\n" );
1098 		printf( "Verify:\n" );
1099 
1100 		//----------------------------------------------------
1101 		// Check whether Filesize is set to 5000
1102 		//----------------------------------------------------
1103 
1104 		rc=DirectoryItem::get( file_not_exist, aItem );
1105 		print_error( rtl::OString( "Get DirectoryItem" ), rc );
1106 
1107 		if ( rc == FileBase::E_None )
1108 		{
1109 			FileStatus rStatus( FileStatusMask_FileSize  );
1110 			rc=aItem.getFileStatus( rStatus );
1111 			print_error( rtl::OString( "Get FileStatus" ), rc );
1112 
1113 			if ( rc == FileBase::E_None )
1114 			{
1115 				filesize=rStatus.getFileSize();
1116 
1117 				if ( filesize == 5000 )
1118 					printf( "\nOK : FileSize: %i\n", filesize );
1119 				else
1120 					printf( "\nError : FileSize: %i\n", filesize );
1121 			}
1122 		}
1123 
1124 		printf( "\n" );
1125 
1126 		//----------------------------------------------------
1127 		// Set Filesize to -1
1128 		//----------------------------------------------------
1129 
1130 		printf( "Set FileSize to -1\n" );
1131 		rc=aFile.setSize( -1 );
1132 		print_error( rtl::OString( "Set FileSize" ), rc );
1133 
1134 		printf( "\n" );
1135 
1136 		// close the file
1137 		rc=aFile.close();
1138 		print_error( rtl::OString( "Close File" ), rc );
1139 
1140 		// remove the file
1141 		rc=File::remove( file_not_exist );
1142 		print_error( rtl::OString( "Remove File" ), rc );
1143 	}
1144 
1145 	PressKey();
1146 
1147 	return;
1148 }
1149 
1150 
1151 //----------------------------------------------------
1152 // FilePointerTest
1153 //----------------------------------------------------
1154 
FilePointerTest(void)1155 void FilePointerTest( void )
1156 {
1157 	FileBase::RC	rc;
1158 	sal_uInt64 filepointer;
1159 
1160 	printf( "--------------------------------------------\n" );
1161 	printf( "File-Pointer-Test\n" );
1162 	printf( "--------------------------------------------\n\n" );
1163 
1164 
1165 	File	rFile( file_not_exist );
1166 
1167 	printf( "Create File: ");
1168 	printFileName( file_not_exist );
1169 	printf( "\n\n");
1170 
1171 	rc = rFile.open( OpenFlag_Read | OpenFlag_Write | osl_File_OpenFlag_Create );
1172 	print_error( rtl::OString( "Create and Open File (Read & Write) "), rc );
1173 	printf( "\n" );
1174 
1175 	if ( rc==FileBase::E_None )
1176 	{
1177 
1178 		//----------------------------------------------------
1179 		// get the position of the filepointer
1180 		//----------------------------------------------------
1181 
1182 		rc =rFile.getPos( filepointer );
1183 		print_error( rtl::OString( "GetPos" ), rc );
1184 		printf( "Position of the FilePointer: %i\n", filepointer );
1185 
1186 		printf( "\n" );
1187 
1188 		//----------------------------------------------------
1189 		// set the filepointer at the end of a file
1190 		//----------------------------------------------------
1191 
1192 		printf( "Set FileSize to 5000\n" );
1193 		rFile.setSize( 5000 );
1194 
1195 		printf( "Set the FilePointer at the end of the file (5000)\n" );
1196 		rc=rFile.setPos( Pos_End,0 );
1197 		print_error( rtl::OString( "SetPos" ), rc );
1198 
1199 		rc=rFile.getPos( filepointer );
1200 
1201 		if ( filepointer==5000 )
1202 		{
1203 			print_error( rtl::OString( "GetPos" ), rc );
1204 			printf( "\nVerify: OK !\n" );
1205 			printf( "Filepointer-Position: %llu\n",filepointer );
1206 		}
1207 		else
1208 		{
1209 			print_error( rtl::OString( "GetPos" ), rc );
1210 			printf( "\nFilePointer-Test: Error\n" );
1211 			printf( "Filepointer-Position: %i != 5000 \n",filepointer );
1212 		}
1213 
1214 		printf( "\n" );
1215 
1216 		// close the file
1217 		rc=rFile.close();
1218 		print_error( rtl::OString( "Close File" ), rc );
1219 
1220 		// remove the file
1221 		rc=File::remove( file_not_exist );
1222 		print_error( rtl::OString( "Remove File" ), rc );
1223 	}
1224 
1225 	PressKey();
1226 
1227 	return;
1228 }
1229 
1230 //--------------------------------------------------
1231 // FileAttributesTest
1232 //--------------------------------------------------
1233 
verifyFileAttributes(void)1234 void verifyFileAttributes( void )
1235 {
1236 	FileBase::RC	rc;
1237 	DirectoryItem	aItem;
1238 	FileStatus rStatus( FileStatusMask_Attributes  );
1239 
1240 	printf( "\nVerify:\n" );
1241 
1242 	rc=DirectoryItem::get( file1, aItem );
1243 
1244 	if ( rc==FileBase::E_None )
1245 	{
1246 		rc=aItem.getFileStatus( rStatus );
1247 
1248 		if ( rc==FileBase::E_None )
1249 		{
1250 			sal_uInt64 uAttributes=rStatus.getAttributes();
1251 			showAttributes(uAttributes);
1252 			printf( "\n" );
1253 		}
1254 		else
1255 			print_error( rtl::OString( "Get FileStatus" ), rc );
1256 	}
1257 	else
1258 		print_error( rtl::OString( "Get DirectoryItem" ), rc );
1259 
1260 	return;
1261 }
1262 
1263 #ifdef UNX
FileAttributesTest(void)1264 void FileAttributesTest( void )
1265 {
1266 	FileBase::RC	rc;
1267 
1268 	printf( "--------------------------------------------\n" );
1269 	printf( "File-Attributes-Test\n" );
1270 	printf( "--------------------------------------------\n\n" );
1271 
1272 	printf( "File: ");
1273 	printFileName( file1 );
1274 	printf( "\n\n" );
1275 
1276 
1277 	rc=File::setAttributes( file1, Attribute_GrpWrite );
1278 	print_error( rtl::OString( "Set Attribute: GrpWrite" ), rc );
1279 
1280 	verifyFileAttributes();
1281 
1282 	rc=File::setAttributes( file1, 0 );
1283 	if ( rc!=FileBase::E_None )
1284 		print_error( rtl::OString( "Reset Attributes" ), rc );
1285 
1286 	rc=File::setAttributes( file1, Attribute_GrpRead );
1287 	print_error( rtl::OString( "Set Attribute: GrpRead" ), rc );
1288 
1289 	verifyFileAttributes();
1290 
1291 	rc=File::setAttributes( file1, 0 );
1292 	if ( rc!=FileBase::E_None )
1293 		print_error( rtl::OString( "Reset Attributes" ), rc );
1294 
1295 	rc=File::setAttributes( file1, Attribute_GrpExe );
1296 	print_error( rtl::OString( "Set Attribute: GrpExe" ), rc );
1297 
1298 	verifyFileAttributes();
1299 
1300 	rc=File::setAttributes( file1, 0 );
1301 	if ( rc!=FileBase::E_None )
1302 		print_error( rtl::OString( "Reset Attributes" ), rc );
1303 
1304 	rc=File::setAttributes( file1, Attribute_OwnWrite );
1305 	print_error( rtl::OString( "Set Attribute: OwnWrite" ), rc );
1306 
1307 	verifyFileAttributes();
1308 
1309 	rc=File::setAttributes( file1, 0 );
1310 	if ( rc!=FileBase::E_None )
1311 		print_error( rtl::OString( "Reset Attributes" ), rc );
1312 
1313 	rc=File::setAttributes( file1, Attribute_OwnRead );
1314 	print_error( rtl::OString( "Set Attribute: OwnRead" ), rc );
1315 
1316 	verifyFileAttributes();
1317 
1318 	rc=File::setAttributes( file1, 0 );
1319 	if ( rc!=FileBase::E_None )
1320 		print_error( rtl::OString( "Reset Attributes" ), rc );
1321 
1322 	rc=File::setAttributes( file1, Attribute_OwnExe );
1323 	print_error( rtl::OString( "Set Attribute: OwnExe" ), rc );
1324 
1325 	verifyFileAttributes();
1326 
1327 	rc=File::setAttributes( file1, 0 );
1328 	if ( rc!=FileBase::E_None )
1329 		print_error( rtl::OString( "Reset Attributes" ), rc );
1330 
1331 	rc=File::setAttributes( file1, Attribute_OthWrite );
1332 	print_error( rtl::OString( "Set Attribute: OthWrite" ), rc );
1333 
1334 	verifyFileAttributes();
1335 
1336 	rc=File::setAttributes( file1, 0 );
1337 	if ( rc!=FileBase::E_None )
1338 		print_error( rtl::OString( "Reset Attributes" ), rc );
1339 
1340 	rc=File::setAttributes( file1, Attribute_OthRead );
1341 	print_error( rtl::OString( "Set Attribute: OthRead" ), rc );
1342 
1343 	verifyFileAttributes();
1344 
1345 	rc=File::setAttributes( file1, 0 );
1346 	if ( rc!=FileBase::E_None )
1347 		print_error( rtl::OString( "Reset Attributes" ), rc );
1348 
1349 	rc=File::setAttributes( file1, Attribute_OthExe );
1350 	print_error( rtl::OString( "Set Attribute: OthExe" ), rc );
1351 
1352 	verifyFileAttributes();
1353 
1354 	rc=File::setAttributes( file1, 0 );
1355 	if ( rc!=FileBase::E_None )
1356 		print_error( rtl::OString( "Reset Attributes" ), rc );
1357 
1358 
1359 	rc=File::setAttributes( file1, Attribute_GrpWrite | Attribute_GrpRead | Attribute_GrpExe | Attribute_OwnWrite | Attribute_OwnRead | Attribute_OwnExe | Attribute_OthWrite | Attribute_OthRead | Attribute_OthExe );
1360 	print_error( rtl::OString( "Set all Attributes" ), rc );
1361 
1362 	verifyFileAttributes();
1363 
1364 	PressKey();
1365 
1366 	return;
1367 }
1368 #endif
1369 
1370 #ifdef WNT
FileAttributesTest(void)1371 void FileAttributesTest( void )
1372 {
1373 	FileBase::RC	rc;
1374 
1375 	printf( "--------------------------------------------\n" );
1376 	printf( "File-Attributes-Test\n" );
1377 	printf( "--------------------------------------------\n\n" );
1378 
1379 	printf( "File: ");
1380 	printFileName( file1 );
1381 	printf( "\n\n" );
1382 
1383 
1384 	rc=File::setAttributes( file1, Attribute_ReadOnly );
1385 	print_error( rtl::OString( "Set Attribute: ReadOnly" ), rc );
1386 
1387 	verifyFileAttributes();
1388 
1389 	rc=File::setAttributes( file1, 0 );
1390 	print_error( rtl::OString( "Reset Attributes" ), rc );
1391 
1392 	verifyFileAttributes();
1393 
1394 	rc=File::setAttributes( file1, Attribute_Hidden );
1395 	print_error( rtl::OString( "Set Attribute: Hidden" ), rc );
1396 
1397 	verifyFileAttributes();
1398 
1399 	rc=File::setAttributes( file1, 0 );
1400 	print_error( rtl::OString( "Reset Attributes" ), rc );
1401 
1402 	verifyFileAttributes();
1403 
1404 	rc=File::setAttributes( file1, Attribute_Hidden | Attribute_ReadOnly );
1405 	print_error( rtl::OString( "Set Attribute: Hidden & ReadOnly" ), rc );
1406 
1407 	verifyFileAttributes();
1408 
1409 	rc=File::setAttributes( file1, 0 );
1410 	print_error( rtl::OString( "Reset Attributes") , rc );
1411 
1412 	verifyFileAttributes();
1413 
1414 	PressKey();
1415 
1416 	return;
1417 }
1418 #endif
1419 
1420 //--------------------------------------------------
1421 // FileTimeTest
1422 //--------------------------------------------------
1423 
FileTimeTest(void)1424 void FileTimeTest( void )
1425 {
1426 	FileBase::RC	rc;
1427 
1428 	DirectoryItem	aItem;
1429 
1430 	struct tm sSysCreationTime = { 0, 20, 12, 4, 9, 100 };
1431 	struct tm sSysAccessTime = { 0, 40, 1, 6, 5, 98 };
1432 	struct tm sSysModifyTime = { 0, 1, 24, 13, 11, 95 };
1433 
1434 	time_t aSysCreationTime =  mktime( &sSysCreationTime );
1435 	time_t aSysAccessTime =  mktime( &sSysAccessTime );
1436 	time_t aSysModifyTime =  mktime( &sSysModifyTime );
1437 
1438 	TimeValue		aCreationTime	= { aSysCreationTime, 0};
1439 	TimeValue		aAccessTime		= { aSysAccessTime, 0};
1440 	TimeValue		aModifyTime		= { aSysModifyTime, 0};
1441 
1442 	TimeValue		aCreationTimeRead;
1443 	TimeValue		aAccessTimeRead;
1444 	TimeValue		aModifyTimeRead;
1445 
1446 
1447 	printf( "--------------------------------------------\n" );
1448 	printf( "File-Time-Test\n" );
1449 	printf( "--------------------------------------------\n\n" );
1450 
1451 	printf( "File: ");
1452 	printFileName( file1 );
1453 	printf( "\n\n" );
1454 
1455 	printf( "CreationTime \t : ");
1456 	showTime( aCreationTime );
1457 
1458 	printf( "\nAccessTime \t : ");
1459 	showTime( aAccessTime );
1460 
1461 	printf( "\nModifyTime \t : ");
1462 	showTime( aModifyTime );
1463 
1464 	//--------------------------------------------------
1465 	// setTime
1466 	//--------------------------------------------------
1467 
1468 	printf( "\n" );
1469 	rc=File::setTime( file1 , aCreationTime , aAccessTime , aModifyTime );
1470 	print_error( rtl::OString( "SetTime" ), rc );
1471 
1472 	//--------------------------------------------------
1473 	// Verify
1474 	//--------------------------------------------------
1475 
1476 	FileStatus rStatus( FileStatusMask_CreationTime | FileStatusMask_AccessTime | FileStatusMask_ModifyTime);
1477 
1478 	printf( "\nVerify:\n" );
1479 
1480 	rc=DirectoryItem::get( file1, aItem );
1481 	print_error( rtl::OString( "Get DirectoryItem" ), rc );
1482 
1483 	if ( rc==FileBase::E_None )
1484 	{
1485 		rc=aItem.getFileStatus( rStatus );
1486 		print_error( rtl::OString( "Get FileStatus" ), rc );
1487 		printf( "\n" );
1488 
1489 		if ( rc==FileBase::E_None )
1490 		{
1491 			//--------------------------------------------------
1492 			// GetCreationTime
1493 			//--------------------------------------------------
1494 
1495 			aCreationTimeRead=rStatus.getCreationTime();
1496 #ifdef WNT
1497 			if ( aCreationTime.Seconds == aCreationTimeRead.Seconds && aCreationTime.Nanosec == aCreationTimeRead.Nanosec )
1498 				printf( "GetCreationTime: ok : " );
1499 			else
1500 				printf( "GetCreationTime: Error : " );
1501 
1502 			showTime( aCreationTimeRead );
1503 			printf( "\n" );
1504 #endif
1505 			//--------------------------------------------------
1506 			// GetAccessTime
1507 			//--------------------------------------------------
1508 
1509 			aAccessTimeRead=rStatus.getAccessTime();
1510 
1511 			if ( aAccessTime.Seconds == aAccessTimeRead.Seconds && aAccessTime.Nanosec == aAccessTimeRead.Nanosec )
1512 				printf( "GetAccessTime: ok : " );
1513 			else
1514 				printf( "GetAccessTime: Error : " );
1515 
1516 			showTime( aAccessTimeRead );
1517 			printf( "\n" );
1518 
1519 			//--------------------------------------------------
1520 			// GetModifyTime
1521 			//--------------------------------------------------
1522 
1523 			aModifyTimeRead=rStatus.getModifyTime();
1524 
1525 			if ( aModifyTime.Seconds == aModifyTimeRead.Seconds && aModifyTime.Nanosec == aModifyTimeRead.Nanosec )
1526 				printf( "GetModifyTime: ok : " );
1527 			else
1528 				printf( "GetModifyTime: Error : " );
1529 
1530 			showTime( aModifyTimeRead );
1531 			printf( "\n" );
1532 		}
1533 	}
1534 
1535 	PressKey();
1536 	return;
1537 }
1538 
1539 
1540 //--------------------------------------------------
1541 // DirectoryItemTest
1542 //--------------------------------------------------
1543 
DirectoryItemTest(void)1544 void DirectoryItemTest( void )
1545 {
1546 	FileBase::RC	rc;
1547 	Directory		*pDir;
1548 	DirectoryItem	aItem;
1549 	FileStatus		*pStatus;
1550 	File			*pFile;
1551 
1552 	printf( "--------------------------------------------\n" );
1553 	printf( "Directory-Item-Test\n" );
1554 	printf( "--------------------------------------------\n\n" );
1555 
1556 	//--------------------------------------------------
1557 	// get DirectoryItem from an existing directory
1558 	//--------------------------------------------------
1559 
1560 	printf( "Get DirectoryItem from an existing Directory: ");
1561 	printFileName( dir1 );
1562 	printf( "\n");
1563 
1564 	rc=DirectoryItem::get( dir1 , aItem );
1565 	print_error( rtl::OString( "GetDirectoryItem" ), rc );
1566 
1567 	pStatus=new FileStatus( FileStatusMask_All );
1568 	rc=aItem.getFileStatus( *pStatus );
1569 
1570 	if ( rc==FileBase::E_None )
1571 	{
1572 		printf( "GetFileStatus: FileURL: ");
1573 		printFileName(pStatus->getFileURL() );
1574 		printf( "\n" );
1575 	}
1576 
1577 	delete pStatus;
1578 
1579 	printf( "\n" );
1580 
1581 	//--------------------------------------------------
1582 	// get DirectoryItem from a not existing directory
1583 	//--------------------------------------------------
1584 
1585 	printf( "Get DirectoryItem from a not existing Directory: ");
1586 	printFileName( dir_not_exist );
1587 	printf( "\n" );
1588 
1589 	rc=DirectoryItem::get( dir_not_exist , aItem );
1590 	print_error( rtl::OString( "Get DirectoryItem" ), rc );
1591 
1592 	printf( "\n" );
1593 
1594 	//--------------------------------------------------
1595 	// get DirectoryItem from an existing file
1596 	//--------------------------------------------------
1597 
1598 	printf( "Get DirectoryItem from an existing File: ");
1599 	printFileName( file1 );
1600 	printf( "\n" );
1601 
1602 	rc=DirectoryItem::get( file1 , aItem );
1603 	print_error( rtl::OString( "GetDirectoryItem" ), rc );
1604 
1605 	pStatus=new FileStatus( FileStatusMask_All );
1606 	rc=aItem.getFileStatus( *pStatus );
1607 
1608 	if ( rc==FileBase::E_None )
1609 	{
1610 		printf( "GetFileStatus: FileURL: ");
1611 		printFileName( pStatus->getFileURL() );
1612 		printf( "\n" );
1613 	}
1614 
1615 	delete pStatus;
1616 
1617 	printf( "\n" );
1618 
1619 	//--------------------------------------------------
1620 	// get DirectoryItem from a not existing file
1621 	//--------------------------------------------------
1622 
1623 	printf( "Get DirectoryItem from a not existing File: ");
1624 	printFileName( file_not_exist );
1625 	printf( "\n" );
1626 
1627 	rc=DirectoryItem::get( file_not_exist , aItem );
1628 	print_error( rtl::OString( "Get DirectoryItem" ), rc );
1629 
1630 	printf( "\n" );
1631 
1632 	//----------------------------------------------------------
1633 	// get DirectoryItem from a directory with a wrong semantic
1634 	//----------------------------------------------------------
1635 
1636 	printf( "Get DirectoryItem from a Directory with a wrong semantic: ");
1637 	printFileName( dir_not_exist );
1638 	printf( "\n" );
1639 
1640 	rc=DirectoryItem::get( dir_wrong_semantic, aItem );
1641 	print_error( rtl::OString( "Get DirectoryItem" ),rc );
1642 
1643 	printf( "\n" );
1644 
1645 	//---------------------------------------------------
1646 	// get DirectoryItem from a file-handle
1647 	//--------------------------------------------------
1648 
1649 	pFile=new File( file1 );
1650 
1651 	rc=pFile->open( OpenFlag_Read );
1652 	if ( rc==FileBase::E_None )
1653 	{
1654 		printf( "Get DirectoryItem from a File-Handle: ");
1655 		printFileName( file1 );
1656 		printf( "\n" );
1657 
1658 		rc=DirectoryItem::get( *pFile , aItem );
1659 		print_error( rtl::OString( "GetDirectoryItem" ), rc );
1660 
1661 		pStatus=new FileStatus( FileStatusMask_All );
1662 		rc=aItem.getFileStatus( *pStatus );
1663 
1664 		if ( rc==FileBase::E_None )
1665 		{
1666 			printf( "GetFileStatus: FileURL:  ");
1667 			printFileName( pStatus->getFileURL() );
1668 			printf( "\n");
1669 		}
1670 
1671 		delete pStatus;
1672 
1673 		pFile->close();
1674 	}
1675 
1676 	delete pFile;
1677 
1678 	printf( "\n" );
1679 
1680 	//---------------------------------------------------
1681 	// get DirectoryItem from an empty file-handle
1682 	//--------------------------------------------------
1683 
1684 	pFile=new File( file1 );
1685 
1686 	printf( "Get DirectoryItem from an empty File-Handle\n" );
1687 	rc=DirectoryItem::get( *pFile , aItem );
1688 	print_error( rtl::OString( "GetDirectoryItem" ), rc );
1689 
1690 	delete pFile;
1691 
1692 	printf( "\n" );
1693 
1694 	//--------------------------------------------------
1695 	// GetNextItem from a directory
1696 	//--------------------------------------------------
1697 
1698 	pDir=new Directory( dir1 );
1699 	printf( "Get next DirectoryItem from a directory: ");
1700 	printFileName( dir1);
1701 	printf( "\n" );
1702 
1703 	rc= pDir->open();
1704 	print_error( rtl::OString( "Open Directory" ), rc );
1705 
1706 	printf( "\n" );
1707 
1708 	if ( pDir->isOpen() )
1709 	{
1710 		//--------------------------------------------------
1711 		// get all files from the directory
1712 		//--------------------------------------------------
1713 
1714 		rtl::OUString	str;
1715 		rtl::OUString	str1[2];
1716 
1717 		aItem=DirectoryItem();
1718 		rc=pDir->getNextItem( aItem );
1719 		print_error( rtl::OString( "GetNextItem" ),rc );
1720 
1721 		while( rc==FileBase::E_None )
1722 		{
1723 
1724 			FileStatus rStatus( FileStatusMask_All );
1725 			aItem.getFileStatus( rStatus );
1726 
1727 			str=rStatus.getFileName();
1728 			printf( "Filename: ");
1729 			printFileName( str );
1730 			printf( "\n");
1731 
1732 			aItem=DirectoryItem();
1733 			rc=pDir->getNextItem( aItem );
1734 			print_error( rtl::OString( "GetNextItem" ),rc );
1735 		}
1736 
1737 		printf( "\n" );
1738 
1739 		//--------------------------------------------------
1740 		// Reset-Test
1741 		//--------------------------------------------------
1742 
1743 		for (int i=0; i<2; i++)
1744 		{
1745 			aItem=DirectoryItem();
1746 			rc=pDir->reset();
1747 			rc=pDir->getNextItem( aItem );
1748 
1749 			FileStatus rStatus( FileStatusMask_All );
1750 			aItem.getFileStatus( rStatus );
1751 
1752 			str1[i]=rStatus.getFileName();
1753 		}
1754 
1755 
1756 		if ( str1[0].compareTo(str1[1]) == 0 )
1757 			print_error( rtl::OString( "Reset" ),FileBase::E_None );
1758 		else
1759 			print_error( rtl::OString( "Reset" ),FileBase::E_invalidError );
1760 
1761 		printf( "\n" );
1762 
1763 		// Close Directory
1764 		rc=pDir->close();
1765 		print_error( rtl::OString( "Close Directory" ), rc );
1766 	}
1767 
1768 	printf( "\n");
1769 
1770 	//--------------------------------------------------
1771 	// GetNextItem from a closed directory
1772 	//--------------------------------------------------
1773 
1774 	printf( "Get next DirectoryItem from a closed directory: ");
1775 	printFileName( dir1 );
1776 	printf( "\n" );
1777 
1778 	aItem=DirectoryItem();
1779 	rc=pDir->getNextItem( aItem );
1780 	print_error( rtl::OString( "GetNextItem" ),rc );
1781 
1782 	delete pDir;
1783 
1784 	PressKey();
1785 	return;
1786 }
1787 
1788 //--------------------------------------------------
1789 // FileStatusTest (for different types)
1790 //--------------------------------------------------
1791 
FileStatusTest(FileStatus * pStatus)1792 void FileStatusTest( FileStatus *pStatus )
1793 {
1794 	//--------------------------------------------------
1795 	// GetFileType of the directory
1796 	//--------------------------------------------------
1797 
1798 	FileStatus::Type	aType;
1799 
1800 	printf( "\ngetFileType:\n" );
1801 	aType=pStatus->getFileType();
1802 	showFileType( aType );
1803 
1804 	//--------------------------------------------------
1805 	// GetAttributes
1806 	//--------------------------------------------------
1807 
1808 	sal_uInt64			uAttributes;
1809 
1810 	printf( "\ngetAttributes:\n" );
1811 	uAttributes=pStatus->getAttributes();
1812 	showAttributes( uAttributes );
1813 
1814 	//--------------------------------------------------
1815 	// GetCreationTime
1816 	//--------------------------------------------------
1817 
1818 	TimeValue	aCreationTime;
1819 
1820 	printf( "\ngetCreationTime:\n" );
1821 	aCreationTime=pStatus->getCreationTime();
1822 
1823 	printf( "CreationTime: " );
1824 	showTime( aCreationTime );
1825 
1826 	//--------------------------------------------------
1827 	// GetAccessTime
1828 	//--------------------------------------------------
1829 
1830 	TimeValue	aAccessTime;
1831 
1832 	printf( "\ngetAccessTime:\n" );
1833 	aAccessTime=pStatus->getAccessTime();
1834 
1835 	printf( "AccessTime: " );
1836 	showTime( aAccessTime );
1837 
1838 	//--------------------------------------------------
1839 	// GetModifyTime
1840 	//--------------------------------------------------
1841 
1842 	TimeValue	aModifyTime;
1843 
1844 	printf( "\ngetModifyTime:\n" );
1845 	aModifyTime=pStatus->getModifyTime();
1846 
1847 	printf( "ModifyTime: " );
1848 	showTime( aModifyTime );
1849 
1850 	//--------------------------------------------------
1851 	// GetFileSize
1852 	//--------------------------------------------------
1853 
1854 	sal_uInt64			FileSize;
1855 
1856 	printf( "\ngetFileSize:\n" );
1857 
1858 	FileSize=pStatus->getFileSize();
1859 	printf( "FileSize: %i\n", FileSize);
1860 
1861 	//--------------------------------------------------
1862 	// GetFileName
1863 	//--------------------------------------------------
1864 
1865 	rtl::OUString			FileName;
1866 
1867 	printf( "\ngetFileName:\n" );
1868 
1869 	FileName=pStatus->getFileName();
1870 	printf( "FileName: ");
1871 	printFileName( FileName );
1872 	printf( "\n" );
1873 
1874 	//--------------------------------------------------
1875 	// GetFileURL
1876 	//--------------------------------------------------
1877 
1878 	rtl::OUString			FileURL;
1879 
1880 	printf( "\ngetFileURL:\n" );
1881 
1882 	FileURL=pStatus->getFileURL();
1883 	printf( "FileURL: ");
1884 	printFileName( FileURL );
1885 	printf( "\n" );
1886 
1887 	//--------------------------------------------------
1888 	// GetLinkTargetURL
1889 	//--------------------------------------------------
1890 
1891 	rtl::OUString			LinkTargetURL;
1892 
1893 	printf( "\ngetLinkTargetURL:\n");
1894 
1895 	LinkTargetURL=pStatus->getLinkTargetURL();
1896 	printf( "LinkTargetURL: ");
1897 	printFileName( LinkTargetURL );
1898 	printf( "\n" );
1899 
1900 	return;
1901 }
1902 
1903 //--------------------------------------------------
1904 // DirectoryFileStatusTest
1905 //--------------------------------------------------
1906 
DirectoryFileStatusTest(void)1907 void DirectoryFileStatusTest( void )
1908 {
1909 	FileBase::RC	rc;
1910 	DirectoryItem	aItem;
1911 	FileStatus		*pStatus;
1912 
1913 	printf( "--------------------------------------------\n" );
1914 	printf( "Directory-FileStatus-Test\n" );
1915 	printf( "--------------------------------------------\n\n" );
1916 
1917 	printf( "FileStatus of the directory: ");
1918 	printFileName( dir1 );
1919 	printf( "\n" );
1920 
1921 	aItem=DirectoryItem();
1922 
1923 	rc=DirectoryItem::get( dir1, aItem );
1924 	print_error( rtl::OString( "Get DirectoryItem" ), rc );
1925 
1926 	if ( rc==FileBase::E_None )
1927 	{
1928 		pStatus=new FileStatus( FileStatusMask_All );
1929 		rc=aItem.getFileStatus( *pStatus );
1930 
1931 		FileStatusTest( pStatus );
1932 
1933 		delete pStatus;
1934 	}
1935 
1936 	printf( "\n" );
1937 
1938 	PressKey();
1939 	return;
1940 }
1941 
1942 //--------------------------------------------------
1943 // FileFileStatusTest
1944 //--------------------------------------------------
1945 
FileFileStatusTest(void)1946 void FileFileStatusTest( void )
1947 {
1948 	FileBase::RC	rc;
1949 	DirectoryItem	aItem;
1950 	FileStatus		*pStatus;
1951 
1952 	printf( "--------------------------------------------\n" );
1953 	printf( "File-FileStatus-Test\n" );
1954 	printf( "--------------------------------------------\n\n" );
1955 
1956 	printf( "FileStatus of the file: ");
1957 	printFileName( file1 );
1958 	printf( "\n" );
1959 
1960 	aItem=DirectoryItem();
1961 
1962 	rc=DirectoryItem::get( file1 , aItem );
1963 	print_error( rtl::OString( "Get DirectoryItem" ), rc );
1964 
1965 	if ( rc==FileBase::E_None )
1966 	{
1967 		pStatus=new FileStatus( FileStatusMask_All );
1968 		rc=aItem.getFileStatus( *pStatus );
1969 
1970 		FileStatusTest( pStatus );
1971 
1972 		delete pStatus;
1973 	}
1974 
1975 	printf( "\n" );
1976 
1977 	PressKey();
1978 	return;
1979 }
1980 
1981 //--------------------------------------------------
1982 // VolumeFileStatusTest
1983 //--------------------------------------------------
1984 
VolumeFileStatusTest(void)1985 void VolumeFileStatusTest( void )
1986 {
1987 	FileBase::RC	rc;
1988 	DirectoryItem	aItem;
1989 	FileStatus		*pStatus;
1990 
1991 	printf( "--------------------------------------------\n" );
1992 	printf( "Volume-FileStatus-Test\n" );
1993 	printf( "--------------------------------------------\n\n" );
1994 
1995 	printf( "FileStatus of the Volume: ");
1996 	printFileName( root );
1997 	printf( "\n" );
1998 
1999 	aItem=DirectoryItem();
2000 
2001 	rc=DirectoryItem::get( root , aItem );
2002 	print_error( rtl::OString( "Get DirectoryItem" ), rc );
2003 
2004 	if ( rc==FileBase::E_None )
2005 	{
2006 		pStatus=new FileStatus( FileStatusMask_All) ;
2007 		rc=aItem.getFileStatus( *pStatus );
2008 
2009 		FileStatusTest( pStatus );
2010 
2011 		delete pStatus;
2012 	}
2013 
2014 	printf( "\n" );
2015 
2016 	PressKey();
2017 	return;
2018 }
2019 
2020 
2021 //--------------------------------------------------
2022 // VolumeInfoTest
2023 //--------------------------------------------------
2024 
VolumeInfoTest(void)2025 void VolumeInfoTest( void )
2026 {
2027 	FileBase::RC	rc;
2028 
2029 	printf( "--------------------------------------------\n" );
2030 	printf( "Volume-Info-Test\n" );
2031 	printf( "--------------------------------------------\n\n" );
2032 
2033 	printf( "VolumeInfo of the volume ");
2034 	printFileName( root );
2035 
2036 	printf( "\n" );
2037 
2038 	VolumeInfo rInfo( VolumeInfoMask_FreeSpace );
2039 	rc=Directory::getVolumeInfo( root , rInfo );
2040 	print_error( rtl::OString( "GetVolumeInfo" ),rc );
2041 
2042 	printf( "\n" );
2043 
2044 	//--------------------------------------------------
2045 	// getRemoteFlag
2046 	//--------------------------------------------------
2047 
2048 	if ( rInfo.getRemoteFlag() )
2049 		printf( "RemoteFlag: Yes\n" );
2050 	else
2051 		printf( "RemoteFlag: No\n" );
2052 
2053 	//--------------------------------------------------
2054 	// getRemoveableFlag
2055 	//--------------------------------------------------
2056 
2057 	if ( rInfo.getRemoveableFlag() )
2058 		printf( "RemoveableFlag: Yes\n" );
2059 	else
2060 		printf( "RemoveableFlag: No\n" );
2061 
2062 	//--------------------------------------------------
2063 	// getTotalSpace
2064 	//--------------------------------------------------
2065 
2066 	sal_uInt64	TotalSpace;
2067 	TotalSpace=rInfo.getTotalSpace();
2068 	printf( "Total Space: %i\n",TotalSpace );
2069 
2070 	//--------------------------------------------------
2071 	// getFreeSpace
2072 	//--------------------------------------------------
2073 
2074 	sal_uInt64	FreeSpace;
2075 	FreeSpace=rInfo.getFreeSpace();
2076 	printf( "Free Space: %i\n",FreeSpace );
2077 
2078 	//--------------------------------------------------
2079 	// getUsedSpace
2080 	//--------------------------------------------------
2081 
2082 	sal_uInt64	UsedSpace;
2083 	UsedSpace=rInfo.getUsedSpace();
2084 	printf( "Used Space: %i\n",UsedSpace );
2085 
2086 	//--------------------------------------------------
2087 	// getMaxNameLength
2088 	//--------------------------------------------------
2089 
2090 	sal_uInt32	MaxNameLength;
2091 	MaxNameLength=rInfo.getMaxNameLength();
2092 	printf( "MaxNameLength: %i\n",MaxNameLength );
2093 
2094 	//--------------------------------------------------
2095 	// getMaxPathLength
2096 	//--------------------------------------------------
2097 
2098 	sal_uInt32	MaxPathLength;
2099 	MaxPathLength=rInfo.getMaxPathLength();
2100 	printf( "MaxPathLength: %i\n",MaxPathLength );
2101 
2102 	//--------------------------------------------------
2103 	// getFileSystemName
2104 	//--------------------------------------------------
2105 
2106 	rtl::OUString	FileSystemName;
2107 	FileSystemName=rInfo.getFileSystemName();
2108 	printf( "File-System-Name: ");
2109 	printFileName( FileSystemName );
2110 	printf( "\n" );
2111 
2112 	PressKey();
2113 	return;
2114 }
2115 
2116 //--------------------------------------------------
2117 // FileBaseTest
2118 //--------------------------------------------------
2119 
ConvertPathTest(rtl::OUString & strPath)2120 void ConvertPathTest(rtl::OUString& strPath)
2121 {
2122 	FileBase::RC	rc;
2123 
2124 	rtl::OUString		strNormPath;
2125 	rtl::OUString		strFileURL;
2126 	rtl::OUString		strNormPathFromFileURL;
2127 	rtl::OUString		strSystemPath;
2128 
2129 	//--------------------------------------------------
2130 	// normalizePath
2131 	//--------------------------------------------------
2132 
2133 	rc=FileBase::getFileURLFromSystemPath( strPath, strNormPath );
2134 
2135 	if ( rc == FileBase::E_None )
2136 	{
2137 		printf( "Normalized Path: \t\t");
2138 		printFileName( strNormPath );
2139 		printf( "\n" );
2140 	}
2141 	else
2142 		printf( "normalizePath: Error \n" );
2143 
2144 	//--------------------------------------------------
2145 	// getFileURLFromSystemPath
2146 	//--------------------------------------------------
2147 
2148 	if ( strNormPath.getLength() != 0 )
2149 	{
2150 		rc=FileBase::getFileURLFromSystemPath( strNormPath, strFileURL );
2151 
2152 		if ( rc == FileBase::E_None )
2153 		{
2154 			printf( "File-URL: \t\t\t");
2155 			printFileName( strFileURL );
2156 			printf( "\n" );
2157 		}
2158 		else
2159 			printf( "getFileURLFromSystemPath: Error \n" );
2160 	}
2161 	else
2162 		printf( "getFileURLFromSystemPath: not tested \n" );
2163 
2164 	//--------------------------------------------------
2165 	// getNormalizedPathFromFileURL
2166 	//--------------------------------------------------
2167 
2168 	if ( strFileURL.getLength() != 0 )
2169 	{
2170 		rc=FileBase::getSystemPathFromFileURL( strFileURL, strNormPathFromFileURL );
2171 
2172 		if ( rc == FileBase::E_None )
2173 		{
2174 			printf( "Normalized Path from File-URL: \t");
2175 			printFileName( strNormPathFromFileURL );
2176 			printf( "\n" );
2177 		}
2178 		else
2179 			printf( "getNormalizedPathFromFileURL: Error \n" );
2180 	}
2181 	else
2182 		printf( "getNormalizedPathFromFileURL: not tested \n" );
2183 
2184 
2185 	//--------------------------------------------------
2186 	// getSystemPathFromFileURL
2187 	//--------------------------------------------------
2188 
2189 	if ( strNormPath.getLength() != 0 )
2190 	{
2191 		rc=FileBase::getSystemPathFromFileURL( strNormPath, strSystemPath );
2192 
2193 		if ( rc == FileBase::E_None )
2194 		{
2195 			printf( "System-Path: \t\t\t");
2196 			printFileName( strSystemPath );
2197 			printf( "\n");
2198 		}
2199 		else
2200 			printf( "getSystemPathFromFileURL: Error \n" );
2201 	}
2202 	else
2203 		printf( "getSystemPathFromFileURL: not tested \n" );
2204 
2205 	//--------------------------------------------------
2206 	// Verify
2207 	//--------------------------------------------------
2208 
2209 	if ( strNormPathFromFileURL == strNormPath )
2210 		printf( "\nVerify: OK ! ( Normalized-Path == Normalized-Path-From-File-URL )\n" );
2211 	else
2212 		printf( "\nVerify: Error ! ( Normalized-Path != Normalized-Path-From-File-URL )\n" );
2213 
2214 	return;
2215 }
2216 
FileBaseTest()2217 void FileBaseTest()
2218 {
2219 	printf( "--------------------------------------------\n" );
2220 	printf( "FileBase-Test\n" );
2221 	printf( "--------------------------------------------\n\n" );
2222 
2223 	//--------------------------------------------------
2224 	// ConvertPath-Test (Local File)
2225 	//--------------------------------------------------
2226 
2227 	printf( "- Local File: ");
2228 	printFileName( file1 );
2229 	printf( "\n\n" );
2230 
2231 	ConvertPathTest(file1);
2232 
2233 	//--------------------------------------------------
2234 	// ConvertPath-Test (File on a server)
2235 	//--------------------------------------------------
2236 
2237 	printf( "\n- File on server: ");
2238 	printFileName( file_on_server );
2239 	printf( "\n\n" );
2240 	ConvertPathTest(file_on_server);
2241 
2242 	PressKey();
2243 
2244 	return;
2245 }
2246 
2247 
2248 //--------------------------------------------------
2249 // AbsolutePathTest
2250 //--------------------------------------------------
DoAbsolutePathTest(rtl::OUString strDirBase,rtl::OUString strRelative)2251 void DoAbsolutePathTest(rtl::OUString strDirBase, rtl::OUString	strRelative)
2252 {
2253 	FileBase::RC	rc;
2254 
2255 	rtl::OUString		strAbsolute;
2256 
2257 	printf( "Base-Directory: \t");
2258 	printFileName( strDirBase );
2259 	printf( "\n" );
2260 	printf( "Relative-Path: \t\t");
2261 	printFileName ( strRelative );
2262 	printf( "\n" );
2263 
2264 	rc=FileBase::getAbsoluteFileURL( strDirBase, strRelative, strAbsolute );
2265 
2266 	if ( rc == FileBase::E_None )
2267 	{
2268 		printf( "Absolute-Path: \t\t");
2269 		printFileName ( strAbsolute );
2270 		printf( "\n" );
2271 	}
2272 	else
2273 		printf( "Absolute-Path: Error \n" );
2274 
2275 	printf( "\n" );
2276 	return;
2277 }
2278 
AbsolutePathTest(void)2279 void AbsolutePathTest(void)
2280 {
2281 	printf( "--------------------------------------------\n" );
2282 	printf( "AbsolutePath-Test\n" );
2283 	printf( "--------------------------------------------\n\n" );
2284 
2285 	DoAbsolutePathTest(dir1, rtl::OUString::createFromAscii("."));
2286 	DoAbsolutePathTest(dir1, rtl::OUString::createFromAscii(".."));
2287 	DoAbsolutePathTest(dir1, rtl::OUString::createFromAscii("../.."));
2288 	DoAbsolutePathTest(dir1, rtl::OUString::createFromAscii("../HUHU"));
2289 
2290 	DoAbsolutePathTest(dir_on_server, rtl::OUString::createFromAscii("."));
2291 	DoAbsolutePathTest(dir_on_server, rtl::OUString::createFromAscii(".."));
2292 	DoAbsolutePathTest(dir_on_server, rtl::OUString::createFromAscii("../.."));
2293 	DoAbsolutePathTest(dir_on_server, rtl::OUString::createFromAscii("../HUHU"));
2294 
2295 	PressKey();
2296 	return;
2297 }
2298 
2299 
2300 //--------------------------------------------------
2301 // searchPathTest
2302 //--------------------------------------------------
2303 
SearchPathTest(void)2304 void SearchPathTest(void)
2305 {
2306 	FileBase::RC	rc;
2307 
2308 	rtl::OUString		strNormPath(file1);
2309 	rtl::OUString		strFileURL;
2310 	rtl::OUString		strSystemPath;
2311 	rtl::OUString		strResultPath;
2312 
2313 	printf( "--------------------------------------------\n" );
2314 	printf( "SearchPath-Test\n" );
2315 	printf( "--------------------------------------------\n\n" );
2316 
2317 
2318 	rc=FileBase::getFileURLFromSystemPath( strNormPath, strFileURL );
2319 	print_error( rtl::OString( "getFileURLFromSystemPath" ), rc );
2320 	rc=FileBase::getSystemPathFromFileURL( strNormPath, strSystemPath );
2321 	print_error( rtl::OString( "getSystemPathFromFileURL" ), rc );
2322 
2323 	//--------------------------------------------------
2324 	// searchFileURL (with a normalized path)
2325 	//--------------------------------------------------
2326 
2327 	if ( strNormPath.getLength() != 0 )
2328 	{
2329 		printf( "\nSearch-Normalized-Path (with a normalized path) : ");
2330 		printFileName ( strNormPath );
2331 		printf( "\n" );
2332 
2333 		rc=FileBase::searchFileURL( strNormPath , rtl::OUString() , strResultPath );
2334 
2335 		if ( rc == FileBase::E_None )
2336 		{
2337 			printf( "Result: \t\t\t");
2338 			printFileName ( strResultPath );
2339 			printf( "\n" );
2340 		}
2341 		else
2342 			printf( "searchFileURL (with a normalized path): Error\n" );
2343 	}
2344 	else
2345 		printf( "searchFileURL (with a normalized path): not tested\n" );
2346 
2347 	//--------------------------------------------------
2348 	// searchFileURL (with a File-URL)
2349 	//--------------------------------------------------
2350 
2351 	if ( strFileURL.getLength() != 0 )
2352 	{
2353 		printf( "\nSearch-Normalized-Path (with a FileURL) : ");
2354 		printFileName( strFileURL );
2355 		printf( "\n" );
2356 
2357 		rc=FileBase::searchFileURL( strFileURL , rtl::OUString() , strResultPath );
2358 
2359 		if ( rc == FileBase::E_None )
2360 		{
2361 			printf( "Result: \t\t\t");
2362 			printFileName ( strResultPath );
2363 			printf( "\n" );
2364 		}
2365 		else
2366 			printf( "searchFileURL (with a FileURL path): Error\n" );
2367 	}
2368 	else
2369 		printf( "searchFileURL (with a FileURL path): not tested\n" );
2370 
2371 	//--------------------------------------------------
2372 	// searchFileURL (with a systempath)
2373 	//--------------------------------------------------
2374 
2375 	if ( strSystemPath.getLength() != 0 )
2376 	{
2377 		printf( "\nSearch-Normalized-Path (with a SystemPath) : ");
2378 		printFileName( strSystemPath );
2379 		printf( "\n" );
2380 
2381 		rc=FileBase::searchFileURL( strSystemPath , rtl::OUString() , strResultPath );
2382 
2383 		if ( rc == FileBase::E_None )
2384 		{
2385 			printf( "Result: \t\t\t");
2386 			printFileName( strResultPath );
2387 			printf( "\n" );
2388 		}
2389 		else
2390 			printf( "searchFileURL (with a systempath): Error\n" );
2391 	}
2392 	else
2393 		printf( "searchFileURL (with a systempath): not tested\n" );
2394 
2395 	//--------------------------------------------------
2396 	// searchFileURL (File and no searchpath)
2397 	//--------------------------------------------------
2398 
2399 	printf( "\nsearchFileURL:  File (no searchpath) : ");
2400 	printFileName( file3 );
2401 	printf( "\n" );
2402 
2403 	rc=FileBase::searchFileURL( file3 , rtl::OUString::createFromAscii("") , strResultPath );
2404 
2405 	if ( rc == FileBase::E_None )
2406 	{
2407 		printf( "Result: \t\t\t");
2408 		printFileName( strResultPath );
2409 		printf( "\n" );
2410 	}
2411 	else
2412 		printf( "searchFileURL:  File not found: OK ! \n" );
2413 
2414 	//--------------------------------------------------
2415 	// searchFileURL (File and Path)
2416 	//--------------------------------------------------
2417 
2418 	printf( "\nsearchFileURL:  File : ");
2419 	printFileName( file3 );
2420 	printf( "\tSearchPath ");
2421 	printFileName( dir1 );
2422 	printf( "\n");
2423 
2424 	rc=FileBase::searchFileURL( file3 , dir1 , strResultPath );
2425 
2426 	if ( rc == FileBase::E_None )
2427 	{
2428 		printf( "Result: \t\t\t");
2429 		printFileName( strResultPath );
2430 		printf( "\n");
2431 	}
2432 	else
2433 		printf( "searchFileURL:  File not found: Error\n" );
2434 
2435 	//------------------------------------------------------------
2436 	// searchFileURL (File and searchpath with two entries)
2437 	//------------------------------------------------------------
2438 
2439 	rtl::OUString		strSearchPath( dir_not_exist );
2440 	strSearchPath+=rtl::OUString::createFromAscii(";");
2441 	strSearchPath+=dir_on_server;
2442 
2443 	printf( "\nsearchFileURL:  File : ");
2444 	printFileName( file3 );
2445 	printf( "SearchPath ");
2446 	printFileName( strSearchPath );
2447 	printf( "\n");
2448 
2449 	rc=FileBase::searchFileURL( file3 , strSearchPath , strResultPath );
2450 
2451 	if ( rc == FileBase::E_None )
2452 	{
2453 		printf( "Result: \t\t\t");
2454 		printFileName( strResultPath );
2455 		printf( "\n" );
2456 	}
2457 	else
2458 		printf( "searchFileURL:  File not found: Error\n" );
2459 
2460 	//-------------------------------------------------------------------
2461 	// searchFileURL (File and searchpath (with a wrong semantic))
2462 	//-------------------------------------------------------------------
2463 
2464 	strSearchPath=rtl::OUString( dir_wrong_semantic );
2465 
2466 	printf( "\nsearchFileURL:  File : ");
2467 	printFileName( file3 );
2468 	printf( "SearchPath ");
2469 	printFileName( strSearchPath );
2470 	printf( "\n");
2471 
2472 	rc=FileBase::searchFileURL( file3 , strSearchPath , strResultPath );
2473 
2474 	if ( rc == FileBase::E_None )
2475 		printf( "Error: Wrong Semantich but no error occurs !\n" );
2476 	else
2477 		printf( "searchFileURL:  File not found: OK !\n" );
2478 
2479 	return;
2480 }
2481 
2482 //--------------------------------------------------
2483 // CanonicalNameTest
2484 //--------------------------------------------------
2485 
getCanonicalNameTest(rtl::OUString strPath)2486 void getCanonicalNameTest(rtl::OUString strPath)
2487 {
2488 	FileBase::RC	rc;
2489 
2490 	rtl::OUString	strValid;
2491 
2492 	printf( "Original-Name: \t\t");
2493 	printFileName( strPath );
2494 	printf( "\n" );
2495 
2496 	rc=FileBase::getCanonicalName( strPath, strValid );
2497 
2498 	if ( rc == FileBase::E_None)
2499 	{
2500 		printf( "Canonical-Name: \t");
2501 		printFileName( strValid );
2502 		printf( "\n");
2503 
2504 	}
2505 	else
2506 		printf( "Canonical-Name: Error \n" );
2507 
2508 	printf( "\n" );
2509 	return;
2510 }
2511 
CanonicalNameTest(void)2512 void CanonicalNameTest(void)
2513 {
2514 	printf( "--------------------------------------------\n" );
2515 	printf( "CanonicalName-Test\n" );
2516 	printf( "--------------------------------------------\n\n" );
2517 
2518 	getCanonicalNameTest( dir1 );
2519 	getCanonicalNameTest( dir_on_server );
2520 	getCanonicalNameTest( file1 );
2521 	getCanonicalNameTest( file_on_server );
2522 
2523 	PressKey();
2524 	return;
2525 }
2526 
2527 //--------------------------------------------------
2528 // print_error
2529 //--------------------------------------------------
2530 
print_error(::rtl::OString & str,FileBase::RC rc)2531 void print_error( ::rtl::OString& str, FileBase::RC rc )
2532 {
2533 
2534 	printf( "%s : ",str.getStr() );
2535 	switch(rc)
2536 	{
2537 	case FileBase::E_None:
2538 		printf("OK !\n");
2539 		break;
2540 	case FileBase::E_PERM:
2541 		printf("E_PERM\n");
2542 		break;
2543 	case FileBase::E_NOENT:
2544 		printf("E_NOENT\n");
2545 		break;
2546 	case FileBase::E_SRCH:
2547 		printf("E_SRCH\n");
2548 		break;
2549 	case FileBase::E_INTR:
2550 		printf("E_INTR\n");
2551 		break;
2552 	case FileBase::E_IO:
2553 		printf("E_IO\n");
2554 		break;
2555 	case FileBase::E_NXIO:
2556 		printf("E_NXIO\n");
2557 		break;
2558 	case FileBase::E_2BIG:
2559 		printf("E_2BIG\n");
2560 		break;
2561 	case FileBase::E_NOEXEC:
2562 		printf("E_NOEXEC\n");
2563 		break;
2564 	case FileBase::E_BADF:
2565 		printf("E_BADF\n");
2566 		break;
2567 	case FileBase::E_CHILD:
2568 		printf("E_CHILD\n");
2569 		break;
2570 	case FileBase::E_AGAIN:
2571 		printf("E_AGAIN\n");
2572 		break;
2573 	case FileBase::E_NOMEM:
2574 		printf("E_NOMEM\n");
2575 		break;
2576 	case FileBase::E_ACCES:
2577 		printf("E_ACCES\n");
2578 		break;
2579 	case FileBase::E_FAULT:
2580 		printf("E_FAULT\n");
2581 		break;
2582 	case FileBase::E_BUSY:
2583 		printf("E_BUSY\n");
2584 		break;
2585 	case FileBase::E_EXIST:
2586 		printf("E_EXIST\n");
2587 		break;
2588 	case FileBase::E_XDEV:
2589 		printf("E_XDEV\n");
2590 		break;
2591 	case FileBase::E_NODEV:
2592 		printf("E_NODEV\n");
2593 		break;
2594 	case FileBase::E_NOTDIR:
2595 		printf("E_NOTDIR\n");
2596 		break;
2597 	case FileBase::E_ISDIR:
2598 		printf("E_ISDIR\n");
2599 		break;
2600 	case FileBase::E_INVAL:
2601 		printf("E_INVAL\n");
2602 		break;
2603 	case FileBase::E_NFILE:
2604 		printf("E_NFILE\n");
2605 		break;
2606 	case FileBase::E_MFILE:
2607 		printf("E_MFILE\n");
2608 		break;
2609 	case FileBase::E_NOTTY:
2610 		printf("E_NOTTY\n");
2611 		break;
2612 	case FileBase::E_FBIG:
2613 		printf("E_FBIG\n");
2614 		break;
2615 	case FileBase::E_NOSPC:
2616 		printf("E_NOSPC\n");
2617 		break;
2618 	case FileBase::E_SPIPE:
2619 		printf("E_SPIPE\n");
2620 		break;
2621 	case FileBase::E_ROFS:
2622 		printf("E_ROFS\n");
2623 		break;
2624 	case FileBase::E_MLINK:
2625 		printf("E_MLINK\n");
2626 		break;
2627 	case FileBase::E_PIPE:
2628 		printf("E_PIPE\n");
2629 		break;
2630 	case FileBase::E_DOM:
2631 		printf("E_DOM\n");
2632 		break;
2633 	case FileBase::E_RANGE:
2634 		printf("E_RANGE\n");
2635 		break;
2636 	case FileBase::E_DEADLK:
2637 		printf("E_DEADLK\n");
2638 		break;
2639 	case FileBase::E_NAMETOOLONG:
2640 		printf("E_NAMETOOLONG\n");
2641 		break;
2642 	case FileBase::E_NOLCK:
2643 		printf("E_NOLCK\n");
2644 		break;
2645 	case FileBase::E_NOSYS:
2646 		printf("E_NOSYS\n");
2647 		break;
2648 	case FileBase::E_NOTEMPTY:
2649 		printf("E_NOTEMPTY\n");
2650 		break;
2651 	case FileBase::E_LOOP:
2652 		printf("E_LOOP\n");
2653 		break;
2654 	case FileBase::E_ILSEQ:
2655 		printf("E_ILSEQ\n");
2656 		break;
2657 	case FileBase::E_NOLINK:
2658 		printf("E_NOLINK\n");
2659 		break;
2660 	case FileBase::E_MULTIHOP:
2661 		printf("E_MULTIHOP\n");
2662 		break;
2663 	case FileBase::E_USERS:
2664 		printf("E_USERS\n");
2665 		break;
2666 	case FileBase::E_OVERFLOW:
2667 		printf("E_OVERFLOW\n");
2668 		break;
2669 	default:
2670 		printf("E_Unknown\n");
2671 		break;
2672 	}
2673 	return;
2674 }
2675 
2676 //--------------------------------------------------
2677 // main
2678 //--------------------------------------------------
2679 #if defined WNT
2680         #define MAIN _cdecl main
2681 #else
2682         #define MAIN main
2683 #endif
2684 
MAIN(int argc,char * argv[])2685 int MAIN( int argc, char* argv[] )
2686 {
2687 	sal_Bool fSuccess=sal_False;
2688 
2689 	//Initialization
2690 	fSuccess=Initialize();
2691 	if ( !fSuccess )
2692 	{
2693 		printf("Error during Initialization");
2694 		return -1;
2695 	}
2696 
2697 
2698 	if (argc==1)
2699 	{
2700 		DirectoryOpenAndCloseTest();
2701 		DirectoryCreateAndRemoveTest();
2702 
2703 		FileOpenAndCloseTest();
2704 		FileCreateAndRemoveTest();
2705 		FileWriteAndReadTest();
2706 		FileCopyAndMoveTest();
2707 		FileSizeTest();
2708 		FilePointerTest();
2709 		FileAttributesTest();
2710 		FileTimeTest();
2711 		DirectoryItemTest();
2712 		DirectoryFileStatusTest();
2713 		VolumeFileStatusTest();
2714 		FileFileStatusTest();
2715 		VolumeInfoTest();
2716 		FileBaseTest();
2717 		SearchPathTest();
2718 		AbsolutePathTest();
2719 		CanonicalNameTest();
2720 	}
2721 	// command line arguments ?
2722 	else
2723 	{
2724 		int i=1;
2725 
2726 		while (i<argc)
2727 		{
2728 			if (strcmp(argv[i], "doc")==0)
2729 				DirectoryOpenAndCloseTest();
2730 			else if (strcmp(argv[i], "dcr")==0)
2731 				DirectoryCreateAndRemoveTest();
2732 			else if (strcmp(argv[i], "foc")==0)
2733 				FileOpenAndCloseTest();
2734 			else if (strcmp(argv[i], "fcr")==0)
2735 				FileCreateAndRemoveTest();
2736 			else if (strcmp(argv[i], "fwr")==0)
2737 				FileWriteAndReadTest();
2738 			else if (strcmp(argv[i], "fcm")==0)
2739 				FileCopyAndMoveTest();
2740 			else if (strcmp(argv[i], "fs")==0)
2741 				FileSizeTest();
2742 			else if (strcmp(argv[i], "fp")==0)
2743 				FilePointerTest();
2744 			else if (strcmp(argv[i], "fa")==0)
2745 				FileAttributesTest();
2746 			else if (strcmp(argv[i], "ft")==0)
2747 				FileTimeTest();
2748 			else if (strcmp(argv[i], "di")==0)
2749 				DirectoryItemTest();
2750 			else if (strcmp(argv[i], "dfs")==0)
2751 				DirectoryFileStatusTest();
2752 			else if (strcmp(argv[i], "vfs")==0)
2753 				VolumeFileStatusTest();
2754 			else if (strcmp(argv[i], "ffs")==0)
2755 				FileFileStatusTest();
2756 			else if (strcmp(argv[i], "vi")==0)
2757 				VolumeInfoTest();
2758 			else if (strcmp(argv[i], "fb")==0)
2759 				FileBaseTest();
2760 			else if (strcmp(argv[i], "sp")==0)
2761 				SearchPathTest();
2762 			else if (strcmp(argv[i], "ap")==0)
2763 				AbsolutePathTest();
2764 			else if (strcmp(argv[i], "cn")==0)
2765 				CanonicalNameTest();
2766 
2767 			i++;
2768 		}
2769 	}
2770 
2771 	// Shutdown
2772 	fSuccess=Shutdown();
2773 	if ( !fSuccess )
2774 	{
2775 		printf("Error during Shutdown");
2776 		return -1;
2777 	}
2778 
2779 	return 0;
2780 }
2781 
2782 
2783