do {
buffer = g_realloc (buffer, s);
r = getcwd (buffer, s);
fail = (r == NULL && errno == ERANGE);
fail = (r == NULL || errno == ERANGE);
if (fail) {
s <<= 1;
}