Ejemplo n.º 1
0
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()*/;
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
/*
** 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;
	}
}
Ejemplo n.º 6
0
/*
** 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;	
	}		
}
Ejemplo n.º 7
0
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';
    }

}
Ejemplo n.º 8
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;
}
Ejemplo n.º 9
0
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;
} 
Ejemplo n.º 10
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;
}
Ejemplo n.º 11
0
//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;
}
Ejemplo n.º 12
0
/** 
 * 
 * 
 * @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);

	}
	
}
Ejemplo n.º 13
0
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);
			}		       
		}
	} 
}