40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
}
int ch;
char *tmp = malloc(512);
size_t s = 512;
size_t r = 0;
while ((ch = fgetc(h)) != EOF) {
if (r == s) {
// grow the array (by golden ratio)
char *ttmp = realloc(tmp, (13*s) / 8);
if (ttmp) {
tmp = ttmp;
s = (13*s) / 8;
} else {
free(tmp);
return 0;
}
}
tmp[r++] = ch;
}
fclose(h);
*dst = tmp;
return r;
}
unsigned distance(unsigned a, unsigned b) {
if (a > b) return a - b;
|
|
>
|
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
}
int ch;
char *tmp = malloc(512);
size_t s = 512;
size_t r = 0;
while ((ch = fgetc(h)) != EOF) {
if (r+1 == s) {
// grow the array (by golden ratio)
char *ttmp = realloc(tmp, (13*s) / 8);
if (ttmp) {
tmp = ttmp;
s = (13*s) / 8;
} else {
free(tmp);
return 0;
}
}
tmp[r++] = ch;
}
fclose(h);
tmp[r] = 0;
*dst = tmp;
return r;
}
unsigned distance(unsigned a, unsigned b) {
if (a > b) return a - b;
|