📄 step5.cpp
字号:
/*
* Step5:
* Test some of the file stuff including PIFInfo and PIFMap
*/
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include "PiAPI.h"
#include "TestOS.h"
#define TEST_STRING "Hello World from John"
int iRet;
void Step5()
{
iRet = -1;
int iLen = strlen( TEST_STRING );
char *pFileName = tmpnam( 0 );
if ( !pFileName ) { MAYBE; return; };
cout << "Filename is '" << pFileName << "'" << endl;
PIFInfo *pInfo = PIFInfo_new( pFileName );
if ( !pInfo ) { FAILED(1); return; };
if ( PIFInfo_exists( pInfo ) ) { FAILED(2); return; };
if ( PIFInfo_delete( pInfo ) ) { FAILED(3); return; };
FILE *pFile = fopen( pFileName, "w" );
if ( !pFile ) { MAYBE; return; };
if ( feof(pFile) || ferror(pFile) ) { MAYBE; return; };
fprintf( pFile, TEST_STRING );
if ( feof(pFile) || ferror(pFile) ) { MAYBE; return; };
fclose( pFile );
int iSize = -1;
int iTmpLen = -1;
PIFMap *pMap = 0;
char *pAddr = 0;
pInfo = PIFInfo_new( pFileName );
if ( !pInfo ) { FAILED(4); goto done; };
if ( !PIFInfo_exists( pInfo ) ) { FAILED(5); goto done; };
if ( !PIFInfo_isRegular( pInfo ) ) { FAILED(6); goto done; };
if ( !PIFInfo_isReadable( pInfo ) ) { FAILED(7); goto done; };
if ( PIFInfo_isDirectory( pInfo ) ) { FAILED(8); goto done; };
if ( PIFInfo_isLink( pInfo ) ) { FAILED(9); goto done; };
iSize = PIFInfo_getSize( pInfo );
if ( iSize!=iLen ) { FAILED(10); goto done; };
/* ---
Check out file mapping
--- */
pMap = PIFMap_new( pInfo );
if ( !pMap )
{ FAILED(13); goto done; };
pAddr = (char *)PIFMap_lock( pMap, &iTmpLen );
if ( !pAddr )
{ FAILED(15); goto done; };
if ( iTmpLen!=iSize )
{ FAILED(16); goto done; };
if ( strcmp( pAddr, TEST_STRING ) )
{ FAILED(17); goto done; };
if ( PIFMap_unlock( pMap ) )
{ FAILED(18); goto done; };
if ( PIFMap_delete( pMap ) )
{ FAILED(14); goto done; };
done:
if ( pInfo )
{ if ( PIFInfo_delete( pInfo ) ) { FAILED(11); return; }; };
remove( pFileName );
OK;
iRet = 0;
}
int main()
{
if ( PIPlatform_enter( "dummy", PIPLATFORM_VERSION_1_0, Step5 ) )
{
cout << "Platform_enter() failed." << endl;
FAILED(12);
exit( 1 );
};
return iRet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -