+ lwsp_count = 0;
+ lwsp_buf = malloc((lwsp_size+5)*sizeof(char));
+ if (lwsp_buf==NULL) {
+ perror("can't malloc");
+ return -1;
+ }
+ while ((c1=(*i_getc)(f))!=EOF) {
+ switch (c1) {
+ case CR:
+ if ((c1=(*i_getc)(f))!=EOF && c1 == NL) {
+ if ((c1=(*i_getc)(f))!=EOF && c1 == SPACE) {
+ i_ungetc(SPACE,f);
+ continue;
+ } else {
+ i_ungetc(c1,f);
+ }
+ i_ungetc(NL,f);
+ } else {
+ i_ungetc(c1,f);
+ }
+ c1 = CR;
+ break;
+ case SPACE:
+ case TAB:
+ lwsp_buf[lwsp_count] = c1;
+ if (lwsp_count++>lwsp_size){
+ lwsp_size *= 2;
+ lwsp_buf_new = realloc(lwsp_buf, (lwsp_size+5)*sizeof(char));
+ if (lwsp_buf_new==NULL) {
+ free(lwsp_buf);
+ lwsp_buf = NULL;
+ perror("can't realloc");
+ return -1;
+ }
+ lwsp_buf = lwsp_buf_new;
+ }
+ continue;
+ }
+ break;
+ }
+ if (lwsp_count > 0 && c1!='=' && c1!=')') {
+ i_ungetc(c1,f);
+ for(lwsp_count--;lwsp_count>0;lwsp_count--)
+ i_ungetc(lwsp_buf[lwsp_count],f);
+ c1 = lwsp_buf[lwsp_count];
+ }
+ free(lwsp_buf);
+ lwsp_buf = NULL;