/* - mcsub - subtract a collating element from a cset == static void mcsub(cset *cs, char *cp); */ static void mcsub( cset *cs, char *cp) { char *fp; size_t len; _DIAGASSERT(cs != NULL); _DIAGASSERT(cp != NULL); fp = mcfind(cs, cp); len = strlen(fp); assert(fp != NULL); (void) memmove(fp, fp + len + 1, cs->smultis - (fp + len + 1 - cs->multis)); cs->smultis -= len; if (cs->smultis == 0) { free(cs->multis); cs->multis = NULL; return; } cs->multis = realloc(cs->multis, cs->smultis); assert(cs->multis != NULL); }
/* - mcin - is a collating element in a cset? == static int mcin(cset *cs, char *cp); */ static int mcin( cset *cs, char *cp) { _DIAGASSERT(cs != NULL); _DIAGASSERT(cp != NULL); return(mcfind(cs, cp) != NULL); }
static nl_catd find(const char* locale, const char* catalog) { char path[PATH_MAX]; #if DEBUG_trace const char* ocatalog = catalog; #endif if (mcfind(path, locale, catalog, LC_MESSAGES, 0)) catalog = (const char*)path; #if DEBUG_trace sfprintf(sfstderr, "AHA#%d:%s %s %s %s\n", __LINE__, __FILE__, locale, ocatalog, catalog); #endif return catopen(catalog, NL_CAT_LOCALE); }