Пример #1
0
int
ncp_initlib(void){
	int error;
	size_t len = sizeof(sysentoffset);
	int kv;
	size_t kvlen = sizeof(kv);
	static int ncp_initialized;

	if (ncp_initialized)
		return 0;
	error = sysctlbyname("net.ncp.sysent", &sysentoffset, &len, NULL, 0);
	if (error) {
		fprintf(stderr, "%s: can't find kernel module\n", __func__);
		return error;
	}
	error = sysctlbyname("net.ncp.version", &kv, &kvlen, NULL, 0);
	if (error) {
		fprintf(stderr, "%s: kernel module is old, please recompile it.\n", __func__);
		return error;
	}
	if (NCP_VERSION != kv) {
		fprintf(stderr, "%s: kernel module version(%d) don't match library(%d).\n", __func__, kv, NCP_VERSION);
		return EINVAL;
	}
	if ((error = ncp_nls_setrecode(0)) != 0) {
		fprintf(stderr, "%s: can't initialise recode\n", __func__);
		return error;
	}
	if ((error = ncp_nls_setlocale("")) != 0) {
		fprintf(stderr, "%s: can't initialise locale\n", __func__);
		return error;
	}
	ncp_initialized++;
	return 0;
}
Пример #2
0
int
ncp_nls_setrecode(int scheme) {
	struct ncp_nlsdesc *nd;

	if (scheme == 0) {
#if NCP_NLS_DEFAULT
		scheme = NCP_NLS_DEFAULT;
#else
		scheme = NCP_NLS_AS_IS;
#endif
	}
	for (nd = ncp_nlslist; nd->name; nd++) {
		if (nd->scheme != scheme) continue;
		ncp_nls.u2n = nd->nls.u2n;
		ncp_nls.n2u = nd->nls.n2u;
		return ncp_nls_setlocale("");
	}
	fprintf(stderr, "Character conversion scheme %d was not compiled in\n", scheme);
	return EINVAL;
}