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; }
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); } }
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; }