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; }
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; }
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; }
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; }