Beispiel #1
0
int m17n_ccx_filter(M17nCCX *m17n,FILE *in,FILE *out){
	int rcode = -1;
	int ecode;

	m17n->m_mtext = 0;
	m17n->m_dec = mconv_stream_converter(m17n->m_icode,in);
	if( m17n->m_dec == 0 ){
		m17n_ccx_freeconv(m17n);
		return -1;
	}
	m17n->m_enc = mconv_stream_converter(m17n->m_ocode,out);
	if( m17n->m_enc == 0 ){
		m17n_ccx_freeconv(m17n);
		return -2;
	}

	LAP("converter-set");
	m17n->m_mtext = mtext();
	m17n->m_dec->lenient = 1;
	mconv_decode(m17n->m_dec,m17n->m_mtext);
	LAP("decoded");
	m17n->m_enc->lenient = 1;
	m17n->m_enc->last_block = 1;
	ecode = mconv_encode(m17n->m_enc,m17n->m_mtext);
	rcode = 0;

	LAP("encoded");
	m17n_ccx_freeconv(m17n);
	LAP("filter-done");
	return rcode;
}
Beispiel #2
0
void cCR_CIC_EV::run() {
	for(int i = 0; i < m_pathList.size(); i++)
		m_waitingEnding.insert(m_pathList[i].opposite(this));
	m_mutex.unlock();
	for(int i = 0; i < m_pathListOptimal.size(); i++)
		((cCR_CIC_EV*) m_pathListOptimal[i].opposite(this))->receiveFractDist(this);
	m_state = FRACTSENT;

	while(m_state != RELEASED){
		msleep(100);
		m_mutex.lock();
		if(m_waitingRelease.empty())
			m_state = RELEASED;
		m_mutex.unlock();
	}

	LAP();
	for(int i = 0; i < m_pathList.size(); i++)
		((cCR_CIC_EV*) m_pathList[i].opposite(this))->receiveRelease(this);

	while(!m_waitingEnding.empty()){
		msleep(100);
	}

	if(m_state == SAVED)
		LAP2();

	final();
Beispiel #3
0
int m17n_ccx_init(M17nCCX *m17n,const char *icode,const char *ocode){
	m17n->m_Start = Time();
	if( m17n_lib_init() < 0 ){
		return -1;
	}
	LAP("dylib-done");
	m17n_Init();
	LAP("init-done");
	if( icode == 0 ) icode = "utf-8";
	if( (m17n->m_icode = mconv_resolve_coding(msymbol(icode))) == 0 ){
		fprintf(stderr,"--M17N unknown code: %s\n",icode);
		return -2;
	}
	if( ocode == 0 ) ocode = "utf-8";
	if( (m17n->m_ocode = mconv_resolve_coding(msymbol(ocode))) == 0 ){
		fprintf(stderr,"--M17N unknown code: %s\n",ocode);
		return -3;
	}
	LAP("ccx-init-done");
	return 0;
}
Beispiel #4
0
int m17n_ccx_string(M17nCCX *m17n,const char *istr,int len,char *ostr,int siz){
	const unsigned char *uistr = (const unsigned char*)istr;
	const unsigned char *uostr = (const unsigned char*)ostr;
	int rcode = -1;
	int ecode;
	int oleng = 1;

	m17n->m_mtext = 0;
	m17n->m_dec = mconv_buffer_converter(m17n->m_icode,uistr,len);
	if( m17n->m_dec == 0 ){
		m17n_ccx_freeconv(m17n);
		return -1;
	}
	m17n->m_enc = mconv_buffer_converter(m17n->m_ocode,uostr,siz-1);
	if( m17n->m_enc == 0 ){
		m17n_ccx_freeconv(m17n);
		return -2;
	}
	LAP("converter-set");

	m17n->m_mtext = mtext();
	m17n->m_dec->lenient = 1;
	mconv_decode(m17n->m_dec,m17n->m_mtext);
	LAP("decoded");
	m17n->m_enc->lenient = 1;
	m17n->m_enc->last_block = 1;
	ecode = mconv_encode(m17n->m_enc,m17n->m_mtext);

	oleng = m17n->m_enc->nbytes;
	ostr[oleng] = 0;
	rcode = oleng;

	LAP("encoded");
	m17n_ccx_freeconv(m17n);
	LAP("filter-done");
	return rcode;
}
Beispiel #5
0
void cCR_CIC::run() {
	for(int i = 0; i < m_pathList.size(); i++)
		m_waitingEnding.insert(m_pathList[i].opposite(this));

	m_crList += this;
	for(int i = 0; i < m_pathListOptimal.size(); i++)
		m_crList += (cCR_CIC*) m_pathList[i].opposite(this);

	m_mutex.unlock();
	sendFractDist();

	for(int i = 0; i < m_pathList.size(); i++){
		if(((cCR_CIC*) m_pathList[i].opposite(this))->m_state < FDSENT){
			i--;
			msleep(10);
		}
	}

	while(m_state != RELEASED){
		msleep(100);
		m_mutex.lock();
		if(m_waitingRelease.empty())
			m_state = RELEASED;
		m_mutex.unlock();
	}

	LAP();
	for(int i = 0; i < m_pathList.size(); i++)
		((cCR_CIC*) m_pathList[i].opposite(this))->receiveRelease(this);

	bool wait = true;
	while(wait){
		m_mutex.lock();
		wait = !m_waitingEnding.empty();
		m_mutex.unlock();
		msleep(10);
	}

	LAP2();

	final();
Beispiel #6
0
int m17n_mainX(int ac,const char *av[],FILE *in,FILE *out){
	int ai;
	const char *arg;
	M17nCCX *m17n;
	int fini = 0;

	m17n = (M17nCCX*)m17n_ccx_new(0,0,0,0);
	m17n->m_icnam = "iso-2022-jp";
	m17n->m_ocnam = "iso-2022-jp";
	for( ai = 1; ai < ac; ai++ ){
		arg = av[ai];
		if( strneq(arg,"-i",2) ){
			m17n->m_icnam = arg+2;
		}else
		if( strneq(arg,"-o",2) ){
			m17n->m_ocnam = arg+2;
		}else
		if( strneq(arg,"-d",2) ){
			sscanf(arg+2,"%X",&m17n->m_trace);
		}else
		if( strneq(arg,"-x",2) ){
			fini = 1;
		}
	}
	if( m17n_ccx_init(m17n,m17n->m_icnam,m17n->m_ocnam) != 0 ){
		return -1;
	}
	m17n_ccx_filter(m17n,in,out);
	if( fini ){
		m17n_Fini();
	}
	m17n_ccx_free(m17n);
	LAP("finish");
	fflush(out);
	return 0;
}