Beispiel #1
0
void test_UnitFromPlatMmap()
{
	unsigned int idx;
	plat_mmap m_mmap;
	size_t offset = 0;
	size_t csize;
	char *data_buf;
	char hard_copy[] = "ji3cp3vu3cj0 vup dj4up <E>";
	int i;

	start_testcase( NULL, fd );

	idx = plat_mmap_create(&m_mmap, TESTDATA, FLAG_ATTRIBUTE_READ);
	ok (idx == 28, "plat_mmap_create");
	if (idx > 0) {
		csize = idx;
		data_buf = (char *) plat_mmap_set_view(&m_mmap, &offset, &csize);
		for (i = 0; i < 26; i++) {
			if (data_buf[i] != hard_copy[i])
				break;
		}
		ok (i == 26, "plat_mmap_set_view");
	}
	plat_mmap_close( &m_mmap );
}
Beispiel #2
0
int InitTree( ChewingData *pgdata, const char * prefix )
{
#ifdef USE_BINARY_DATA
	char filename[ PATH_MAX ];
	size_t len;
	size_t offset;

	len = snprintf( filename, sizeof( filename ), "%s" PLAT_SEPARATOR "%s", prefix, PHONE_TREE_FILE );
	if ( len + 1 > sizeof( filename ) )
		return -1;

	plat_mmap_set_invalid( &pgdata->static_data.tree_mmap );
	pgdata->static_data.tree_size = plat_mmap_create( &pgdata->static_data.tree_mmap, filename, FLAG_ATTRIBUTE_READ );
	if ( pgdata->static_data.tree_size <= 0 )
		return -1;

	offset = 0;
	pgdata->static_data.tree = (TreeType *) plat_mmap_set_view( &pgdata->static_data.tree_mmap, &offset, &pgdata->static_data.tree_size );
	if ( !pgdata->static_data.tree )
		return -1;

	return 0;
#else
	char filename[ PATH_MAX ];
	int len;
	FILE *infile = NULL;
	int i;

	len = snprintf( filename, sizeof( filename ), "%s" PLAT_SEPARATOR "%s", prefix, PHONE_TREE_FILE );
	if ( len + 1 > sizeof( filename ) )
		return -1;

	infile = fopen( filename, "r" );
	if ( !infile )
		return -1;

	pgdata->static_data.tree = ALC( TreeType, TREE_SIZE );
	if ( !pgdata->static_data.tree ) {
		fclose( infile );
		return -1;
	}

	/* XXX: What happen if infile contains more than TREE_SIZE data? */
	for ( i = 0; i < TREE_SIZE; i++ ) {
		if ( fscanf( infile, "%hu%d%d%d",
					&pgdata->static_data.tree[ i ].phone_id,
					&pgdata->static_data.tree[ i ].phrase_id,
					&pgdata->static_data.tree[ i ].child_begin,
					&pgdata->static_data.tree[ i ].child_end ) != 4 )
			break;
	}

	fclose( infile );
	return 0;
#endif
}
Beispiel #3
0
void InitTree( const char *prefix )
{
	char filename[ PATH_MAX ];

#ifdef USE_BINARY_DATA
	size_t offset = 0;
	size_t csize;
#else
	FILE *infile;
	int i;
#endif

	sprintf( filename, "%s" PLAT_SEPARATOR "%s", prefix, PHONE_TREE_FILE );
#ifdef USE_BINARY_DATA
	plat_mmap_set_invalid( &tree_mmap );
	tree_size = plat_mmap_create( &tree_mmap, filename, FLAG_ATTRIBUTE_READ );
	assert( plat_mmap_is_valid( &tree_mmap ) );
	if ( tree_size <= 0 )
		return;

	csize = tree_size;
	tree = (TreeType *) plat_mmap_set_view( &tree_mmap, &offset, &csize );
	assert( tree );
#else
	infile = fopen( filename, "r" );
	assert( infile );
	for ( i = 0; i < TREE_SIZE; i++ ) {
		if ( fscanf( infile, "%hu%d%d%d",
			&tree[ i ].phone_id,
			&tree[ i ].phrase_id,
			&tree[ i ].child_begin,
			&tree[ i ].child_end ) != 4 )
			break;
	}
	fclose( infile );
#endif

	addTerminateService( TerminateTree );
}