#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define TTL 1024 //Total
#define HLF 512 //Half
int blk_read(char*, FILE*);
int main() {
FILE *f = fopen("convertor.in", "r"), *g = fopen("convertor.out", "w");
char *line1, *c, a[100], b[100], *p;
int i, ok = 0, nr = 0, k, test = 0;
line1 = calloc(TTL, 1);
memset(a, 0, 100);
memset(b, 0, 100);
ok = fread(line1, 1, TTL, f);
while(ok) {
c = strchr(line1, '"');
while(c && c < line1 + HLF) {
p = strchr(c + 1, '"');
if(!nr) {
strncpy(a, c + 1, p - c - 1);
nr ++;
fprintf(g, "%s,", a);
}
else {
strncpy(b, c + 1, p - c - 1);
if(strcmp(a, b) == 0) {
ok = -1;
break;
}
nr ++;
fprintf(g, "%s,", b);
memset(b, 0, 100);
}
c = p + 1;
while(*c < 33 || *c == ':') {
c++;
if(c - line1 >= TTL) {
ok = blk_read(line1, f);
c = line1;
}
}
if(*c == '"')
c = strchr(c + 1, '"') + 1;
c = strchr(c + 1, '"');
}
ok = blk_read(line1, f);
if(ok == -1)
break;
}
fprintf(g, "\n");
fseek(f, 0, 0);
nr = 4;
k = 0;
ok = fread(line1, 1, TTL, f);
while(ok || test) {
c = strchr(line1, ':');
while(c && c < line1 + HLF) {
for(i = 1; c[i] < 33; i++) {
if(c + i - line1 >= TTL) {
ok = blk_read(line1, f);
c = line1 + HLF;
i = -1;
}
}
if(c[i] == '"') {
i++;
while(c[i] != '"') {
fprintf(g, "%c", c[i]);
i++;
if(c + i - line1 >= TTL) {
ok = blk_read(line1, f);
c = line1 + HLF;
i = 0;
}
}
}
else
while(strchr("0123456789-", c[i])) {
fprintf(g, "%c", c[i]);
i++;
if(c + i - line1 >= TTL) {
ok = blk_read(line1, f);
c = line1 + HLF;
i = 0;
}
}
k++;
fprintf(g, ",");
if(k == nr) {
k = 0;
fprintf(g, "\n");
}
c = strchr(c + i, ':');
}
ok = blk_read(line1, f);
if(test)
break;
if(!ok) {
test = 1;
memcpy(line1 + HLF, line1, HLF);
}
}
free(line1);
fclose(f);
fclose(g);
return 0;
}
int blk_read(char *line, FILE *f) {
memcpy(line, line + HLF, HLF);
memset(line + HLF, 0, HLF);
return fread(line + HLF, 1, HLF, f);
}