+ if (cp_iflag && access(s2, F_OK) == 0) { + weprintf("overwrite '%s'? ", s2); + int c = getchar(); + if (c != 'y' && c != 'Y') + return 0; + + while (getchar() != '\n'); + }
The whole line needs to be read, even when the first char is `y|Y`. Also, getchar may return EOF before newline leading to an infinite loop. Suggestion (untested): int ans = getchar(); for (int c = ans; c != '\n' && c != EOF;) c = getchar(); if (ans != 'Y' && ans != 'y') return 0; - NRK