예제 #1
0
파일: regcomp.c 프로젝트: DragonQuan/minix3
/*
 - 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);
}
예제 #2
0
파일: regcomp.c 프로젝트: DragonQuan/minix3
/*
 - 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);
}
예제 #3
0
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);
}