예제 #1
0
int16_t _IsUserDict (char * name)
{
  char buff[128];
  int16_t f;
  int32_t ret;

  f = TGOPEN( (int16_t)VC_STREAM, name, (int16_t)(O_RDONLY|O_BINARY), S_IREAD );
  if ( f ==-1) {
    return UD_NOTEXIST;
  }

  ret = TGREAD (f, buff, sizeof(DYN_DICT_HEADER));
  if ( ret != sizeof(DYN_DICT_HEADER)) {
    return UD_WRONGHEAD;
  }

  buff[sizeof(DYN_DICT_HEADER)] = 0;
  if ( strcmp(buff,DYN_DICT_HEADER) ) {
    return UD_WRONGHEAD;
  }

  TGCLOSE(f);

  return UD_PERMITTED;
}
예제 #2
0
void read_rec_file(int16_t fileno, puchar pool, puchar * end) {
	uint32_t l;
	int16_t h;

	h = TBOPEN(fileno, -1, (int16_t) (O_RDONLY | O_BINARY), 0);

	if (h == -1)
		ErrorExit(RLING_ERROR_CANT_OPEN_TABLE);

	l = TGREAD(h, pool, 0x100000);
	TGCLOSE(h);
	l = (l + 15) & -16;
	*end = pool + l;
}
예제 #3
0
uint32_t LoadUserDict(char *DictName, char *pool, uint32_t pool_size,
		voc_state *user_dict) {
	int32_t size;
	pool_size = pool_size;
	if (_IsUserDict(DictName) != UD_PERMITTED)
		return 0;

#ifdef TURBO_C
	if(TEST_PRPH(pool))
	pool=ALI_PR(pool);
#endif

	user_dict -> vocseg = (uchar *) SET_VOC_ROOT(pool);

	{
		int16_t Fh;
		char nm[128];
		strcpy(nm, DictName);
		Fh = TGOPEN(VC_STREAM, nm, (int16_t)(O_RDONLY | O_BINARY), S_IREAD);
		if (Fh == -1)
			return 0;
		if (TGFILELTH(Fh) > MAX_VOC_SIZE) {
			TGCLOSE(Fh);
			return 0;
		}
		size = TGREAD(Fh, V_POINT(user_dict -> vocseg, 0), TGFILELTH(Fh));
		TGCLOSE(Fh);
	}
	if (size <= 0)
		return 0;
	else {
		voc_open(user_dict);
		user_dict -> vocfree = (uint16_t) size;
	}
	return MAX_VOC_SIZE;
}
예제 #4
0
Bool loadArtBase (int16_t CountryCode)
{
	int16_t h;
	TabFH f;
	int16_t   i;

	// 08-13-93 09:44pm, Mike
	// Load *.tab file.
	if (vocs_NOK)
		return FALSE;

	h = TBOPEN( (int16_t)9, (int16_t)language, (int16_t)(O_RDONLY|O_BINARY), (int16_t)S_IREAD );
	if ( h == -1)
	{
		vocs_NOK |= 1<<9;
		return FALSE;
	}
	if ( TGREAD(h, (char *) (&f), sizeof (f))!= sizeof(f))
	{
		TGCLOSE(h);
		return FALSE;
	}
	if (strcmp (f.id, TABFILE_ID))
	{
		TGCLOSE(h);
		return FALSE;
	}

	if ( !AlreadyLoaded )
	{
		for ( i = 1; i <MAX_ARTS; i++)
		{
			if ( !artbase[i].sr1 )
			{
				break;
			}
		}
		AlreadyLoaded = 1;
		Built_inSize  = i;
	}
	else
	{
		i = Built_inSize;
	}

	if (MAX_ARTS -i < f.rep_no)
	{
		TGCLOSE(h);
		return FALSE;
	}

	//memset( artbase+i, 0, sizeof(ARTS)*(MAX_ARTS-i) ); // Bound
	memset( &artbase[i], 0, (&artbase[MAX_ARTS] - &artbase[i]) ); // Bound

	if ( TGREAD( h, (char *) (artbase+i), sizeof(ARTS)*f.rep_no ) != (int32_t)(sizeof(ARTS)*f.rep_no) )
	{
		TGCLOSE(h);
		return FALSE;
	}

	max_art = i +f.rep_no -1;
	TGCLOSE(h);

	CountryCode=0;
	return TRUE;
}