Lines Matching refs:mc

212 	register Mc_t*		mc;  in mcopen()  local
243 if (!(vm = vmopen(Vmdcheap, Vmbest, 0)) || !(mc = vmnewof(vm, 0, Mc_t, 1, 0))) in mcopen()
248 mc->vm = vm; in mcopen()
249 mc->cvt = (iconv_t)(-1); in mcopen()
256 if (!(sp = sfgetr(ip, 0, 0)) || !(mc->translation = vmstrdup(vm, sp))) in mcopen()
273 mc->nstrs = sfgetu(ip); in mcopen()
274 mc->nmsgs = sfgetu(ip); in mcopen()
275 mc->num = sfgetu(ip); in mcopen()
279 else if (!(mc->translation = vmnewof(vm, 0, char, 1, 0))) in mcopen()
286 if (!(mc->set = vmnewof(vm, 0, Mcset_t, mc->num + 1, 0))) in mcopen()
289 return mc; in mcopen()
290 if (!(mp = vmnewof(vm, 0, char*, mc->nmsgs + mc->num + 1, 0))) in mcopen()
292 if (!(rp = sp = vmalloc(vm, mc->nstrs + 1))) in mcopen()
301 if (i > mc->num) in mcopen()
304 mc->set[i].num = n; in mcopen()
305 mc->set[i].msg = mp; in mcopen()
313 for (i = 1; i <= mc->num; i++) in mcopen()
314 for (j = 1; j <= mc->set[i].num; j++) in mcopen()
317 mc->set[i].msg[j] = sp; in mcopen()
325 if (sfread(ip, rp, mc->nstrs) != mc->nstrs || sfgetc(ip) != EOF) in mcopen()
327 if (!(mc->tmp = sfstropen())) in mcopen()
329 mc->cvt = iconv_open("", "utf"); in mcopen()
331 return mc; in mcopen()
345 mcget(register Mc_t* mc, int set, int num, const char* msg) in mcget() argument
351 …if (!mc || set < 0 || set > mc->num || num < 1 || num > mc->set[set].num || !(s = mc->set[set].msg… in mcget()
353 if (mc->cvt == (iconv_t)(-1)) in mcget()
355 if ((p = sfstrtell(mc->tmp)) > sfstrsize(mc->tmp) / 2) in mcget()
358 sfstrseek(mc->tmp, p, SEEK_SET); in mcget()
361 iconv_write(mc->cvt, mc->tmp, &s, &n, NiL); in mcget()
362 return sfstrbase(mc->tmp) + p; in mcget()
373 mcput(register Mc_t* mc, int set, int num, const char* msg) in mcput() argument
384 if (!mc || set > MC_SET_MAX || num > MC_NUM_MAX) in mcput()
393 if (set <= mc->num && num <= mc->set[set].num && (s = mc->set[set].msg[num])) in mcput()
399 mc->set[set].msg[num] = 0; in mcput()
400 mc->nstrs -= strlen(s) + 1; in mcput()
401 if (mc->set[set].num == num) in mcput()
407 mp = mc->set[set].msg + num; in mcput()
409 mc->nmsgs -= mc->set[set].num - num; in mcput()
410 if (!(mc->set[set].num = num) && mc->num == set) in mcput()
416 while (num && !mc->set[--num].num); in mcput()
417 mc->num = num; in mcput()
428 if (set > mc->num) in mcput()
430 if (set > mc->gen) in mcput()
433 if (!(sp = vmnewof(mc->vm, 0, Mcset_t, i + 1, 0))) in mcput()
435 mc->gen = i; in mcput()
436 for (i = 1; i <= mc->num; i++) in mcput()
437 sp[i] = mc->set[i]; in mcput()
438 mc->set = sp; in mcput()
440 mc->num = set; in mcput()
442 sp = mc->set + set; in mcput()
452 if (!mc->gen) in mcput()
459 if (!(mp = vmnewof(mc->vm, 0, char*, i + 1, 0))) in mcput()
461 mc->gen = i; in mcput()
468 i = 2 * mc->gen; in mcput()
471 if (!(mp = vmnewof(mc->vm, sp->msg, char*, i + 1, 0))) in mcput()
477 mc->nmsgs += num - sp->num; in mcput()
493 mc->nstrs -= strlen(s) + 1; in mcput()
500 if (!(s = vmstrdup(mc->vm, msg))) in mcput()
503 mc->nstrs += strlen(s) + 1; in mcput()
513 mcdump(register Mc_t* mc, register Sfio_t* op) in mcdump() argument
532 sfputr(op, mc->translation, 0); in mcdump()
546 sfputu(op, mc->nstrs); in mcdump()
547 sfputu(op, mc->nmsgs); in mcdump()
548 sfputu(op, mc->num); in mcdump()
554 for (i = 1; i <= mc->num; i++) in mcdump()
555 if (mc->set[i].num) in mcdump()
558 sfputu(op, mc->set[i].num); in mcdump()
566 for (i = 1; i <= mc->num; i++) in mcdump()
567 if (mc->set[i].num) in mcdump()
569 sp = mc->set + i; in mcdump()
581 for (i = 1; i <= mc->num; i++) in mcdump()
582 if (mc->set[i].num) in mcdump()
584 sp = mc->set + i; in mcdump()
665 mcclose(register Mc_t* mc) in mcclose() argument
667 if (!mc) in mcclose()
669 if (mc->tmp) in mcclose()
670 sfclose(mc->tmp); in mcclose()
671 if (mc->cvt != (iconv_t)(-1)) in mcclose()
672 iconv_close(mc->cvt); in mcclose()
673 vmclose(mc->vm); in mcclose()