void utf8_to_wchar_buf(const char *src, wchar_t *res, int maxlen) { if (res==NULL || maxlen==0) return; size_t ln = convert_char(get_utf8, put_utf16, src, strlen(src) + 1, NULL);/* | raise_w32_error()*/; if (ln <= 0 || ln/sizeof(wchar_t) > (size_t)maxlen) { *res=L'\0'; return; } convert_char(get_utf8, put_utf16, src, strlen(src)+1, res);/* | raise_w32_error()*/; }
static void dump(const char *timebuf, const char *text, FILE *stream, const unsigned char *ptr, size_t size, trace tracetype, curl_infotype infotype) { size_t i; size_t c; unsigned int width = 0x10; if(tracetype == TRACE_ASCII) /* without the hex output, we can fit more on screen */ width = 0x40; fprintf(stream, "%s%s, %zd bytes (0x%zx)\n", timebuf, text, size, size); for(i = 0; i < size; i += width) { fprintf(stream, "%04zx: ", i); if(tracetype == TRACE_BIN) { /* hex not disabled, show it */ for(c = 0; c < width; c++) if(i+c < size) fprintf(stream, "%02x ", ptr[i+c]); else fputs(" ", stream); } for(c = 0; (c < width) && (i+c < size); c++) { /* check for 0D0A; if found, skip past and start a new line of output */ if((tracetype == TRACE_ASCII) && (i+c+1 < size) && (ptr[i+c] == 0x0D) && (ptr[i+c+1] == 0x0A)) { i += (c+2-width); break; } #ifdef CURL_DOES_CONVERSIONS /* repeat the 0D0A check above but use the host encoding for CRLF */ if((tracetype == TRACE_ASCII) && (i+c+1 < size) && (ptr[i+c] == '\r') && (ptr[i+c+1] == '\n')) { i += (c+2-width); break; } /* convert to host encoding and print this character */ fprintf(stream, "%c", convert_char(infotype, ptr[i+c])); #else (void)infotype; fprintf(stream, "%c", ((ptr[i+c] >= 0x20) && (ptr[i+c] < 0x80)) ? ptr[i+c] : UNPRINTABLE_CHAR); #endif /* CURL_DOES_CONVERSIONS */ /* check again for 0D0A, to avoid an extra \n if it's at width */ if((tracetype == TRACE_ASCII) && (i+c+2 < size) && (ptr[i+c+1] == 0x0D) && (ptr[i+c+2] == 0x0A)) { i += (c+3-width); break; } } fputc('\n', stream); /* newline */ } fflush(stream); }
void calculate_trap(u8 new_data[], block* b) { int i,j; bool binary_data_new[8],binary_data_old[8]; bool binary_trap[8]; void convert_binary(u8, bool []); bool XOR(bool, bool); u8 convert_char(bool []); if(b->index==0) { copy(b->trap_index[b->index].trap_data,new_data); copy(b->curr_data,new_data); } else { for(i=0; i<DATA_SIZE; i++) { convert_binary(new_data[i],binary_data_new); convert_binary(b->curr_data[i],binary_data_old); for(j=0; j<8; j++) { binary_trap[j]=XOR(binary_data_new[j],binary_data_old[j]); } b->trap_index[b->index].trap_data[i]=convert_char(binary_trap); } } time(&b->trap_index[b->index].time_trap); }
static char* wchar_to_utf8(const wchar_t* str) { if (str==NULL) return NULL; //Determine required length size_t ln=convert_char(get_utf16, put_utf8, str, (wcslen(str)+1)*sizeof(wchar_t), NULL); if (ln <= 0) return NULL; char *res=(char *)malloc(sizeof(char)*ln); if (res == NULL) return NULL; //Convert to Unicode convert_char(get_utf16, put_utf8, str, (wcslen(str)+1)*sizeof(wchar_t), res); return res; }
/* ** Convertit un int en une chaine de 2 caracteres hex */ void convertir_8(uint8_t decimal, char* hexa){ hexa[0] = '0'; hexa[1] = '0'; hexa[2] = '\0'; int compteur=1; uint8_t tmp = decimal; while(tmp != 0){ int modulo = tmp%16; hexa[compteur] = convert_char(modulo); compteur--; tmp = tmp/16; } }
/* ** Convertit un int en une chaine de 8 caracteres hex */ void convertir_32(int decimal, char* hexa){ int tmp = decimal; int i=0; for(i=0; i<8; i++){ hexa[i] = '0'; } int compteur=7; while(tmp != 0){ int modulo = tmp%16; hexa[compteur] = convert_char(modulo); compteur--; tmp = tmp/16; } }
void forward_recovery(block *b) { int i,j,k; bool binary_data_old[8], binary_data_new[8]; bool binary_data_data[8]; int index_new; u8 reqd_data[DATA_SIZE]; void convert_binary(u8, bool []); bool XOR(bool, bool); u8 convert_char(bool []); void get_time(time_t *); time_t t; copy(reqd_data,b->Main_Data); reqd_data[DATA_SIZE]='\0'; get_time(&t); index_new=search_trap(t,b); for(i=b->Main_Data_Index+1; i<=index_new; i++) { for(j=0; j<DATA_SIZE; j++) { convert_binary(reqd_data[j],binary_data_old); convert_binary(b->trap_index[i].trap_data[j],binary_data_new); for(k=0; k<8; k++) { binary_data_data[k]=XOR(binary_data_old[k],binary_data_new[k]); } reqd_data[j]=convert_char(binary_data_data); } reqd_data[DATA_SIZE]='\0'; } }
BOOL CheckDataBaseExist()//返回1,则表示数据库已存在;返回0,则表示不存在并创建 { convert_char(_T("\\ResidentFlash\\Config\\RFIDData.db")); int res = sqlite3_open(send_data, &pDB); if(res) { AfxMessageBox(_T("打开数据库错误")); return FALSE; } char* errMsg; CString strTemp; char temp_data[1024]={'\0'}; //Create bus_depart table if(!TableExist(_T("bus_depart"))){ strTemp = "create table bus_depart (bus_run_ID CHAR(30) NOT NULL PRIMARY KEY, bus_ID CHAR(10), driver_ID CHAR(10), teacher_ID CHAR(10), road_ID CHAR(10), student_number INTEGER, remark VARCHAR(255))"; memset(temp_data, 0x00, sizeof(temp_data)); WideCharToMultiByte(CP_ACP,0,(LPCWSTR)strTemp,-1,(LPSTR)temp_data,sizeof(temp_data),NULL,NULL); res = sqlite3_exec(pDB,temp_data,0,0, &errMsg); if (res != SQLITE_OK) { #ifdef DEBUG_YFH AfxMessageBox(_T("创建表1错误")); #endif } }else{ //AfxMessageBox(_T("表1已经存在!")); } //Create bus_stu table if(!TableExist(_T("bus_stu"))){ strTemp = "create table bus_stu (bus_run_ID CHAR(20) NOT NULL, student_ID CHAR(10) NOT NULL, up_station_ID CHAR(10), up_time TIME, down_station_ID CHAR(10), down_time TIME, remark VARCHAR(255), PRIMARY KEY(bus_run_ID, student_ID))"; memset(temp_data, 0x00, sizeof(temp_data)); WideCharToMultiByte(CP_ACP,0,(LPCWSTR)strTemp,-1,(LPSTR)temp_data,sizeof(temp_data),NULL,NULL); res = sqlite3_exec(pDB,temp_data,0,0, &errMsg); if (res != SQLITE_OK) { #ifdef DEBUG_YFH AfxMessageBox(_T("创建表2错误")); #endif } }else{ //AfxMessageBox(_T("表2已经存在!")); } //create schoolbus table if(!TableExist(_T("schoolbus"))){ strTemp = "create table schoolbus (ID INTEGER PRIMARY KEY AUTOINCREMENT, StudentName VARCHAR(16),ParentPhoneNum VARCHAR(16),UpBusTime VARCHAR(10),IsUpMessageSended VARCHAR(10),DownBusTime VARCHAR(10),IsDownMessageSended VARCHAR(10),BusCode VARCHAR(10))"; memset(temp_data, 0x00, sizeof(temp_data)); WideCharToMultiByte(CP_ACP,0,(LPCWSTR)strTemp,-1,(LPSTR)temp_data,sizeof(temp_data),NULL,NULL); res = sqlite3_exec(pDB,temp_data,0,0, &errMsg); if (res != SQLITE_OK) { AfxMessageBox(_T("创建表3错误")); } }else{ //AfxMessageBox(_T("表3已经存在!")); } //AfxMessageBox(_T("现在开始测试数据库!")); TestDatabase(); return TRUE; }
int copy_out (FILE *f,char *header, FILE *out, get_unicode_char_t get_unicode_char, struct ole_params_t *ole_params, struct io_funcs_t *io_funcs) { char *buf= NULL; int count,i; long offset; unsigned short int *buffer = NULL; unsigned char read_buf[256]; int buf_is_unicode = 0; if (get_unicode_char == get_word8_char) { /* non-word file and -u specified. Trying to guess which kind of * unicode is used */ if ((unsigned char)header[0]==0xFE && (unsigned char)header[1]==0xFF) { get_unicode_char = get_utf16msb; fputs(convert_char(header[2]<<8|header[3]),out); fputs(convert_char(header[4]<<8|header[5]),out); fputs(convert_char(header[6]<<8|header[7]),out); } else if ((unsigned char)header[0]!=0xFF || (unsigned char)header[1]!=0xFE) { int c,j,d; /* if it is not utf16, assume it is UTF8. We are told -u, * aren't we */ get_unicode_char = get_utf8; i=0; while (i<8) { c=(unsigned char)header[i++]; if (c >=0x80) { if ( c<0xE0) { c=(c & 0x1F); count =1; } else { c=(c & 0xF); count = 2; } for (j=0;j<count;j++) { if (i<7) { d=(unsigned char) header[i++]; } else { d=fgetc(f); } c=c<<6 | (d & 0x3F); } } fputs (convert_char(c),out); } } else { get_unicode_char = get_utf16lsb; fputs(convert_char(header[3]<<8|header[2]),out); fputs(convert_char(header[5]<<8|header[4]),out); fputs(convert_char(header[7]<<8|header[6]),out); } while (!io_funcs->catdoc_eof(f)) { i=get_unicode_char(f,&offset,0x7FFFFFFF, ole_params, read_buf, &buf_is_unicode, io_funcs); if (i!=EOF) fputs(convert_char(i),out); } } else { for (i=0;i<8;i++) { fputs(convert_char(to_unicode(source_charset,(unsigned char)header[i])),out); } buffer = (unsigned short int*) malloc(PARAGRAPH_BUFFER * sizeof(unsigned short int)); if (!buffer) return -1; buf = (char*)buffer; /* Assuming 8-bit input text */ while ((count = io_funcs->catdoc_read(buf,1,PARAGRAPH_BUFFER,f, ole_params))) { for (i=0;i<count;i++) { fputs(convert_char(to_unicode(source_charset, (unsigned char)buf[i])),out); } } free(buffer); } return 0; }
/* * Extracts string from sst and returns mallocked copy of it */ unsigned char *copy_unicode_string (unsigned char **src) { int count=0; int flags = 0; int start_offset=0; int to_skip=0; /* Used to counmt data after end of string */ int offset = 1; /* Variable length of the first field */ int charsize; /* char *realstart=*src; */ unsigned char *dest;/* where to copy string */ unsigned char *s,*d,*c; int i,u,l,len; /* for(i=0;i<20;i++) */ /* fprintf(stderr,"%02x ",(*src)[i]); */ /* fprintf(stderr,"\n"); */ flags = *(*src+1+offset); if (! ( flags == 0 || flags == 1 || flags == 8 || flags == 9 || flags == 4 || flags == 5 || flags == 0x0c || flags == 0x0d ) ) { count=**src; flags = *(*src+offset); offset --; if (! ( flags == 0 || flags == 1 || flags == 8 || flags == 9 || flags == 4 || flags == 5 || flags == 0x0c || flags == 0x0d ) ) { /* fprintf(stderr,"Strange flags = %d, returning NULL\n", flags); */ return NULL; } } else { count=getshort(*src,0); } charsize=(flags &0x01) ? 2 : 1; switch (flags & 12 ) { case 0x0c: /* Far East with RichText formating */ to_skip=4*getshort(*src,2+offset)+getlong(*src, 4+offset); start_offset=2+offset+2+4; /* fprintf(stderr,"Far East with RichText formating\n"); */ break; case 0x08: /* With RichText formating */ to_skip=4*getshort(*src,2+offset); start_offset=2+offset+2; /* fprintf(stderr,"With RichText formating %d\n",getshort(*src,2+offset)); */ break; case 0x04: /* Far East */ to_skip=getlong(*src, 2+offset); start_offset=2+offset+4; /* fprintf(stderr,"Far East\n"); */ break; default: to_skip=0; start_offset=2+offset; /* fprintf(stderr,"Default string\n"); */ } /* fprintf(stderr,"count=%d skip=%d start_offset=%d\n", */ /* count, to_skip, start_offset); */ /* а здесь мы копируем строку */ if ( (dest=malloc(count+1)) == NULL ) { perror("Dest string alloc error"); *src+=(to_skip+start_offset+(count*charsize)); exit(0); } *src+=start_offset; len = count; *dest=0;l=0; for (s=*src,d=dest,i=0;i<count;i++,s+=charsize) { /* fprintf(stderr,"l=%d len=%d count=%d charsize=%d\n",l,len,count,charsize); */ if ( (charsize == 1 && (*s == 1 || *s == 0)) || (charsize == 2 && (*s == 1 || *s == 0) && *(s+1) != 4)) { /* fprintf(stderr,"extchar (unicode)=%02x %02x\n",*s, *(s+1)); */ charsize=(*s &0x01) ? 2 : 1; if (charsize == 2) s-=1; count++; continue; } if ( charsize == 2 ){ u=(unsigned short)getshort(s,0); c=(unsigned char *)convert_char(u); /* fprintf(stderr,"char=%02x %02x\n", *s, *(s+1)); */ } else { if (!source_charset) { check_charset(&source_csname,source_csname); /* fprintf(stderr,"charset=%s\n",source_csname);*/ source_charset=read_charset(source_csname); } u=(unsigned short)to_unicode(source_charset,(unsigned char)*s); c=(unsigned char *)convert_char(u); } if (c != NULL) { int dl = strlen((char *)c); while (l+dl>=len) { len+=16; dest=realloc(dest,len+1); } d=dest+l; strcpy((char *)d,(char *)c); l+=dl; } } *src=s+to_skip; return dest; }
//converts an ASCII string to the Telegram equivalent with consecutive //spaces removed from the final string. char *ascii_to_tgm(char *msg) { char *buf = strdup(msg); if (buf == NULL) { fprintf(stderr, "%s\n", "ascii_to_tgm: allocaton failure."); exit(1); } char *buf_index = buf; char *tmp3 = buf; char c; //first run-through: converts to equivalent or discards while (*msg != '\0') { if ((c = convert_char(*msg)) == '!') msg++; else { *buf_index = c; msg++; buf_index++; } } *buf_index = '\0'; //second run-through: removes consecutive white spaces char *buf2 = strdup(buf); if (buf2 == NULL) { fprintf(stderr, "%s\n", "ascii_to_tgm: allocaton failure."); exit(1); } char *buf2_index = buf2; int counter = 0; while (*tmp3 != '\0') { if (*tmp3 == ' ' && *(tmp3+1) != '\0' && *(tmp3+1) == ' ') tmp3++; else { *buf2_index = *tmp3; buf2_index++; tmp3++; counter++; } } *buf2_index = '\0'; char *buf3 = malloc(sizeof(char) * ++counter); if (buf3 == NULL) { fprintf(stderr, "%s\n", "ascii_to_tgm: allocaton failure."); exit(1); } memcpy(buf3, buf2, counter); free(buf2); free(buf); return buf3; }
/** * * * @param rectype * @param reclen * @param input */ static void process_item (int rectype, long reclen, FILE* input) { int i=0, u; static char buf[2]; switch(rectype) { case DOCUMENT_END: /* fprintf(stderr,"End of document, ended at %ld\n",catdoc_tell(input)); */ catdoc_seek(input, reclen, SEEK_CUR); break; case DOCUMENT: /* fprintf(stderr,"Start of document, reclen=%ld, started at %ld\n", reclen, */ /* catdoc_tell(input)); */ break; case DOCUMENT_ATOM: /* fprintf(stderr,"DocumentAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case SLIDE: /* fprintf(stderr,"Slide, reclen=%ld\n", reclen); */ /* fputs("---------------------------------------\n",stderr); */ break; case SLIDE_ATOM: /* fprintf(stderr,"SlideAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case SLIDE_BASE: /* fprintf(stderr,"SlideBase, reclen=%ld\n", reclen); */ break; case SLIDE_BASE_ATOM: /* fprintf(stderr,"SlideBaseAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case NOTES: /* fprintf(stderr,"Notes, reclen=%ld\n", reclen); */ break; case NOTES_ATOM: /* fprintf(stderr,"NotesAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case HEADERS_FOOTERS: /* fprintf(stderr,"HeadersFooters, reclen=%ld\n", reclen); */ break; case HEADERS_FOOTERS_ATOM: /* fprintf(stderr,"HeadersFootersAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case MAIN_MASTER: /* fprintf(stderr,"MainMaster, reclen=%ld\n", reclen); */ break; case TEXT_BYTES_ATOM: { /* fprintf(stderr,"TextBytes, reclen=%ld\n", reclen); */ for(i=0; i < reclen; i++) { catdoc_read(buf,1,1,input); if((unsigned char)*buf!=0x0d) fputs(convert_char((unsigned char)*buf),stdout); else fputc('\n',stdout); } fputc('\n',stdout); } break; case TEXT_CHARS_ATOM: case CSTRING: { long text_len; /* fprintf(stderr,"CString, reclen=%ld\n", reclen); */ text_len=reclen/2; for(i=0; i < text_len; i++) { catdoc_read(buf,2,1,input); u=(unsigned short)getshort(buf,0); if(u!=0x0d) fputs(convert_char(u),stdout); else fputc('\n',stdout); } fputc('\n',stdout); } break; case USER_EDIT_ATOM: /* fprintf(stderr,"UserEditAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case COLOR_SCHEME_ATOM: /* fprintf(stderr,"ColorSchemeAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case PPDRAWING: /* fprintf(stderr,"PPDrawing, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case ENVIRONMENT: /* fprintf(stderr,"Environment, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case SSDOC_INFO_ATOM: /* fprintf(stderr,"SSDocInfoAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case SSSLIDE_INFO_ATOM: /* fprintf(stderr,"SSSlideInfoAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case PROG_TAGS: /* fprintf(stderr,"ProgTags, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case PROG_STRING_TAG: /* fprintf(stderr,"ProgStringTag, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case PROG_BINARY_TAG: /* fprintf(stderr,"ProgBinaryTag, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case LIST: /* fprintf(stderr,"List, reclen=%ld\n", reclen); */ break; case SLIDE_LIST_WITH_TEXT: /* fprintf(stderr,"SlideListWithText, reclen=%ld\n", reclen); */ /* fputs("---------------------------------------\n",stderr); */ break; case PERSIST_PTR_INCREMENTAL_BLOCK: /* fprintf(stderr,"PersistPtrIncrementalBlock, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case EX_OLE_OBJ_STG: /* fprintf(stderr,"ExOleObjStg, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case PPDRAWING_GROUP: /* fprintf(stderr,"PpdrawingGroup, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case EX_OBJ_LIST: /* fprintf(stderr,"ExObjList, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case TX_MASTER_STYLE_ATOM: /* fprintf(stderr,"TxMasterStyleAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case HANDOUT: /* fprintf(stderr,"Handout, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case SLIDE_PERSIST_ATOM: /* fprintf(stderr,"SlidePersistAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case TEXT_HEADER_ATOM: /* fprintf(stderr,"TextHeaderAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case TEXT_SPEC_INFO: /* fprintf(stderr,"TextSpecInfo, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; case STYLE_TEXT_PROP_ATOM: /* fprintf(stderr,"StyleTextPropAtom, reclen=%ld\n", reclen); */ catdoc_seek(input, reclen, SEEK_CUR); break; /* case : fprintf(stderr,", reclen=%ld\n", reclen); catdoc_seek(input, reclen, SEEK_CUR); break;*/ /* case : fprintf(stderr,", reclen=%ld\n", reclen); catdoc_seek(input, reclen, SEEK_CUR); break;*/ default: /* fprintf(stderr,"Default action for rectype=%d reclen=%ld\n", */ /* rectype, reclen); */ catdoc_seek(input, reclen, SEEK_CUR); } }
void copy_out (FILE *f,char *header) { char *buf=(char *)buffer; int count,i; long offset; if (get_unicode_char == get_word8_char) { /* non-word file and -u specified. Trying to guess which kind of * unicode is used */ if ((unsigned char)header[0]==0xFE && (unsigned char)header[1]==0xFF) { get_unicode_char = get_utf16msb; fputs(convert_char(header[2]<<8|header[3]),output_file); fputs(convert_char(header[4]<<8|header[5]),output_file); fputs(convert_char(header[6]<<8|header[7]),output_file); } else if ((unsigned char)header[0]!=0xFF || (unsigned char)header[1]!=0xFE) { int c,j,d; /* if it is not utf16, assume it is UTF8. We are told -u, * aren't we */ get_unicode_char = get_utf8; i=0; while (i<8) { c=(unsigned char)header[i++]; if (c >=0x80) { if ( c<0xE0) { c=(c & 0x1F); count =1; } else { c=(c & 0xF); count = 2; } for (j=0;j<count;j++) { if (i<7) { d=(unsigned char) header[i++]; } else { d=fgetc(f); } c=c<<6 | (d & 0x3F); } } fputs (convert_char(c),output_file); } } else { get_unicode_char = get_utf16lsb; fputs(convert_char(header[3]<<8|header[2]),output_file); fputs(convert_char(header[5]<<8|header[4]),output_file); fputs(convert_char(header[7]<<8|header[6]),output_file); } while (!catdoc_eof(f)) { i=get_unicode_char(f,&offset,0x7FFFFFFF); if (i!=EOF) fputs(convert_char(i),output_file); } } else { for (i=0;i<8;i++) { fputs(convert_char(to_unicode(source_charset,(unsigned char)header[i])),output_file); } /* Assuming 8-bit input text */ while ((count = catdoc_read(buf,1,PARAGRAPH_BUFFER,f))) { for (i=0;i<count;i++) { fputs(convert_char(to_unicode(source_charset, (unsigned char)buf[i])),output_file); } } } }