⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 step5.cpp

📁 mini http server,可以集成嵌入到程序中,实现简单的web功能
💻 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 + -