Esempio n. 1
0
WORDORIGIN trim_punc_utf8(WORDORIGIN word)
{
    int len = g_utf8_strlen(word.str, word.size);
    int i;
    int size = 0;
    for(i = 0; i < len; i++)
    {
        size = get_word_n(word.str, i);
        if(is_punc_utf8(word.str + size))
        {
            break;
        }
    }
    word.size = get_word_n(word.str, i);
    return word;
}
Esempio n. 2
0
void mc6809_show_vectors(dispc_t *pc, int mode) 
{
	int i, p;
	label_t *l;
	char str[128];

	for(i=0;i<16;i+=2) {
		p=get_word_n(pc,i+((pc->total_len-1)&0xfff0));
		l=find_label(0xfff0+i);
		if (l)
			sprintf(str,"%s",l->name);
		else
			sprintf(str,"$%04x",p);

		// 6809
		if(mode==0)
		{
			if (pc->pc+pc->base>0xffef) {
				if (i==0)
					printf("\n; 6809 Hardware Vectors\n");
				printf("%04x\t%02x %02x\t\tDC.W\t%s\t; %s\n",0xfff0+i,p>>8,p&0xff,str,mc6809_vectors[i>>1]);
			}

			store_label(mc6809_vectors[i>>1],p,p,0,'l',0,0);
		} 
		
		// 6309
		else 
		{
			if (pc->pc+pc->base>0xffef) {
				if (i==0)
					printf("\n; 6309 Hardware Vectors\n");
				printf("%04x\t%02x %02x\t\tDC.W\t%s\t; %s\n",0xfff0+i,p>>8,p&0xff,str,mc6309_vectors[i>>1]);
			}

			store_label(mc6309_vectors[i>>1],p,p,0,'l',0,0);
		}
	}
Esempio n. 3
0
char *create_tidy_str(const char *fin_path, char **pbuf, int* plen)
{
    FILE *fp_in, *fp_out;
    fp_in = fopen(fin_path,"rb");

    if(fp_in == NULL)
    {
        return;
    }

    fseek(fp_in, 0L, SEEK_END);
    int size = ftell(fp_in);
    fseek(fp_in, 0L, SEEK_SET);

    char *buf,*buf2;
    buf = (char*)malloc(size+1);
    buf2 = (char*)malloc(size+1);

    int len = fread(buf,1,size,fp_in);
    buf[len] = '\0';
    bzero(buf2,size+1);

    char *p = buf;
    char *p2 = buf2;
    char *start = buf;
    int n;
    // 汉字或汉字之后EN_LENGHT个英文之内保留
    do
    {
        // TODO is_chinese -> !is_ascii
        if(is_chinese(p))
        {
            write_chinese(&p, &p2);
            start = p;
        }
        else
        {
            //printf("end:0x%x,p:0x%x\n",buf+len,p);
            // 非英文不保留,英文则保留有限位数
            // TODO 判断英文不正确 会有一个英文多出来
            if(!is_english(p))
            {
                start = buf;
                p = forward_a_char(p);
            }
            else if(get_word_n(start, p - start) <= EN_LENGHT)
            {
                n = get_word_n(p, 1);
                memcpy(p2, p, n);
                p += n;
                p2 += n;
            }
            else if(get_word_n(start, p - start) == EN_LENGHT + 1)
            {
                addsep(&p2);
                p = forward_a_char(p);
            }
            else
            {
                p = forward_a_char(p);
            }
        }
    }while(*p != '\0');

    free(buf);
    fclose(fp_in);

    *pbuf = buf2;
    *plen = strlen(buf2);
    return *pbuf;
}