X-Git-Url: http://www.wagner.pp.ru/gitweb/?p=oss%2Fcatdoc.git;a=blobdiff_plain;f=src%2Fxlsparse.c;h=372eb087bbeefbd6f8b132c424514f86410469de;hp=139bcfe7a76a4084b2d505916891cd3ec0957a97;hb=a79f2377217c571396074fccf360e01032cd77bf;hpb=1202f84b0b3c0f7cf474fea44129ce736a3123f1 diff --git a/src/xlsparse.c b/src/xlsparse.c index 139bcfe..372eb08 100644 --- a/src/xlsparse.c +++ b/src/xlsparse.c @@ -51,6 +51,7 @@ void do_table(FILE *input,char *filename) { itemsread=catdoc_read(rec,4,1,input); build_year=getshort(rec+2,0); build_rel=getshort(rec,0); + (void) build_rel; if(build_year > 5 ) { itemsread=catdoc_read(rec,8,1,input); biff_version=8; @@ -84,7 +85,7 @@ void do_table(FILE *input,char *filename) { exit(1); } while(itemsread){ - char buffer[2]; + unsigned char buffer[2]; rectype = 0; itemsread = catdoc_read(buffer, 2, 1, input); if (catdoc_eof(input)) { @@ -130,7 +131,7 @@ int prev_rectype=0; */ unsigned char **saved_reference = NULL; -void process_item (int rectype, int reclen, char *rec) { +void process_item (int rectype, int reclen, unsigned char *rec) { if (rectype != CONTINUE && prev_rectype == SST) { /* we have accumulated unparsed SST, and now encountered * another record, which indicates that SST is ended */ @@ -191,7 +192,7 @@ void process_item (int rectype, int reclen, char *rec) { if (sst != NULL) free(sst); - sstBuffer=(char*)malloc(reclen); + sstBuffer=(unsigned char*)malloc(reclen); sstBytes = reclen; if (sstBuffer == NULL ) { perror("SSTptr alloc error! "); @@ -241,6 +242,7 @@ void process_item (int rectype, int reclen, char *rec) { endcol=getshort(rec,reclen-2); pcell=allocate(row,endcol); *pcell=NULL; + (void)startcol; break; } case CONSTANT_STRING: { @@ -261,13 +263,13 @@ void process_item (int rectype, int reclen, char *rec) { exit(1); } else if (sst[string_no] !=NULL) { int len; - char *outptr; - len=strlen(sst[string_no]); + unsigned char *outptr; + len=strlen((char *)sst[string_no]); outptr=*pcell=malloc(len+1); - strcpy(outptr,sst[string_no]); + strcpy((char *)outptr,(char *)sst[string_no]); } else { *pcell=malloc(1); - strcpy(*pcell,""); + **pcell = 0; } break; } @@ -282,7 +284,7 @@ void process_item (int rectype, int reclen, char *rec) { row = getshort(rec,0)-startrow; col = getshort(rec,2); pcell=allocate(row,col); - *pcell=strdup(format_double(rec,6,getshort(rec,4))); + *pcell=(unsigned char *)strdup(format_double(rec,6,getshort(rec,4))); break; } case INTEGER_CELL: { @@ -292,7 +294,7 @@ void process_item (int rectype, int reclen, char *rec) { row = getshort(rec,0)-startrow; col = getshort(rec,2); pcell=allocate(row,col); - *pcell=strdup(format_int(getshort(rec,7),getshort(rec,4))); + *pcell=(unsigned char *)strdup(format_int(getshort(rec,7),getshort(rec,4))); break; } @@ -305,7 +307,7 @@ void process_item (int rectype, int reclen, char *rec) { col = getshort(rec,2); pcell=allocate(row,col); format_code = getshort(rec,4); - *pcell=strdup(format_rk(rec+6,format_code)); + *pcell=(unsigned char *)strdup(format_rk(rec+6,format_code)); break; } case MULRK: { @@ -319,7 +321,7 @@ void process_item (int rectype, int reclen, char *rec) { for (offset=4,col=startcol;col<=endcol;offset+=6,col++) { pcell=allocate(row,col); format_code=getshort(rec,offset); - *pcell=strdup(format_rk(rec+offset+2,format_code)); + *pcell=(unsigned char *)strdup(format_rk(rec+offset+2,format_code)); } break; @@ -337,17 +339,17 @@ void process_item (int rectype, int reclen, char *rec) { /*boolean*/ char buf[2]="0"; buf[0]+=rec[9]; - *pcell=strdup(buf); + *pcell=(unsigned char *)strdup(buf); } else if (rec[6]==2) { /*error*/ char buf[6]="ERROR"; - *pcell=strdup(buf); + *pcell=(unsigned char *)strdup(buf); } else if (rec[6]==0) { saved_reference=pcell; } } else { int format_code=getshort(rec,4); - *pcell=strdup(format_double(rec,6,format_code)); + *pcell=(unsigned char *)strdup(format_double(rec,6,format_code)); } break; } @@ -415,23 +417,22 @@ void process_item (int rectype, int reclen, char *rec) { /* * Extracts string from sst and returns mallocked copy of it */ -char *copy_unicode_string (unsigned char **src) { +unsigned char *copy_unicode_string (unsigned char **src) { int count=0; int flags = 0; int start_offset=0; - int to_skip=0; /* ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÐÏÄÓÞÅÔÁ ÄÌÉÎÙ ÄÁÎÎÙÈ - * ÚÁ ËÏÎÃÏÍ ÓÔÒÏËÉ */ - int offset = 1; /* ÄÌÑ ÕÞÅÔÁ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ ÐÅÒ×ÏÇÏ ÐÏÌÑ */ + 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; */ - char *dest; /* ËÕÄÁ ÂÕÄÅÍ ËÏÐÉÒÏ×ÁÔØ ÓÔÒÏËÕ */ - char *s,*d,*c; + 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"); */ + /* fprintf(stderr,"\n"); */ flags = *(*src+1+offset); if (! ( flags == 0 || flags == 1 || flags == 8 || flags == 9 || @@ -500,7 +501,7 @@ char *copy_unicode_string (unsigned char **src) { } if ( charsize == 2 ){ u=(unsigned short)getshort(s,0); - c=convert_char(u); + c=(unsigned char *)convert_char(u); /* fprintf(stderr,"char=%02x %02x\n", *s, *(s+1)); */ } else { if (!source_charset) { @@ -509,16 +510,16 @@ char *copy_unicode_string (unsigned char **src) { source_charset=read_charset(source_csname); } u=(unsigned short)to_unicode(source_charset,(unsigned char)*s); - c=convert_char(u); + c=(unsigned char *)convert_char(u); } if (c != NULL) { - int dl = strlen(c); + int dl = strlen((char *)c); while (l+dl>=len) { len+=16; dest=realloc(dest,len+1); } d=dest+l; - strcpy(d,c); + strcpy((char *)d,(char *)c); d+=dl; l+=dl; } @@ -584,8 +585,8 @@ static char FormatIdxUsed[NUMOFDATEFORMATS]; void CleanUpFormatIdxUsed() { int i; - for (i=0;i>2); } else { - union { char cc[8]; + union { unsigned char cc[8]; double d;} dconv; - char *d,*s; + unsigned char *d,*s; for(i=0;i<8;i++) dconv.cc[i]='\0'; # ifdef WORDS_BIGENDIAN @@ -753,7 +754,7 @@ time_t float2date(double f) { /* * Parses SST into array of strings */ -void parse_sst(char *sstbuf,int bufsize) { +void parse_sst(unsigned char *sstbuf,int bufsize) { int i; /* index into sst */ unsigned char *curString; /* pointer into unparsed buffer*/ unsigned char *barrier=(unsigned char *)sstbuf+bufsize; /*pointer to end of buffer*/