示例#1
0
Bool CloseUserDictionary(uchar * DictName, voc_state *user_dict) {
	if (user_dict -> state & VOC_CHANGED) {
		char w[80];
		int32_t size;
		int16_t h;

		strcpy(w, DictName);
		h = TGOPEN(VC_STREAM, w, O_CREAT, S_IREAD);

		if (h == -1) {
			/* MsgBox("failed to open"); */
			return FALSE;
		}

		size = TGWRITE(h, V_POINT(user_dict ->vocseg, 0), user_dict ->vocfree);
		TGCLOSE(h);

		if (size != (int32_t) user_dict->vocfree) {
			/* MsgBox("wrong size"); */
			return FALSE;
		}

		user_dict -> state &= (~VOC_CHANGED);
	}
	return TRUE;
}
示例#2
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;
}
示例#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;
}