Hi, This diff removes the useless FILE* parameter of get_line(). In every call this parameter is always "stdin". Thus, we can replace ever use of the variable iop with stdin.
Like every other diff, I tested this diff with the ftpd regression tests. OK? bye, Jan Index: extern.h =================================================================== RCS file: /cvs/src/libexec/ftpd/extern.h,v retrieving revision 1.21 diff -u -p -r1.21 extern.h --- extern.h 15 Jan 2020 22:06:59 -0000 1.21 +++ extern.h 16 May 2021 15:36:27 -0000 @@ -69,7 +69,7 @@ void dologout(int); void fatal(char *); int ftpd_pclose(FILE *, pid_t); FILE *ftpd_ls(const char *, pid_t *); -int get_line(char *, int, FILE *); +int get_line(char *, int); void ftpdlogwtmp(char *, char *, char *); void lreply(int, const char *, ...); void makedir(char *); Index: ftpcmd.y =================================================================== RCS file: /cvs/src/libexec/ftpd/ftpcmd.y,v retrieving revision 1.69 diff -u -p -r1.69 ftpcmd.y --- ftpcmd.y 4 Mar 2020 20:17:48 -0000 1.69 +++ ftpcmd.y 16 May 2021 15:38:07 -0000 @@ -1089,10 +1089,9 @@ lookup(p, cmd) * get_line - a hacked up version of fgets to ignore TELNET escape codes. */ int -get_line(s, n, iop) +get_line(s, n) char *s; int n; - FILE *iop; { int c; char *cs; @@ -1111,21 +1110,21 @@ get_line(s, n, iop) if (c == 0) tmpline[0] = '\0'; } - while ((c = getc(iop)) != EOF) { + while ((c = getc(stdin)) != EOF) { c &= 0377; if (c == IAC) { - if ((c = getc(iop)) != EOF) { + if ((c = getc(stdin)) != EOF) { c &= 0377; switch (c) { case WILL: case WONT: - c = getc(iop); + c = getc(stdin); printf("%c%c%c", IAC, DONT, 0377&c); (void) fflush(stdout); continue; case DO: case DONT: - c = getc(iop); + c = getc(stdin); printf("%c%c%c", IAC, WONT, 0377&c); (void) fflush(stdout); continue; @@ -1144,7 +1143,7 @@ get_line(s, n, iop) * This prevents the command to be split up into * multiple commands. */ - while (c != '\n' && (c = getc(iop)) != EOF) + while (c != '\n' && (c = getc(stdin)) != EOF) ; return (-2); } @@ -1204,7 +1203,7 @@ yylex() case CMD: (void) alarm((unsigned) timeout); - n = get_line(cbuf, sizeof(cbuf)-1, stdin); + n = get_line(cbuf, sizeof(cbuf)-1); if (n == -1) { reply(221, "You could at least say goodbye."); dologout(0); Index: ftpd.c =================================================================== RCS file: /cvs/src/libexec/ftpd/ftpd.c,v retrieving revision 1.229 diff -u -p -r1.229 ftpd.c --- ftpd.c 15 Jan 2020 22:06:59 -0000 1.229 +++ ftpd.c 16 May 2021 15:44:17 -0000 @@ -2179,7 +2179,7 @@ myoob(void) if (!transflag) return; cp = tmpline; - ret = get_line(cp, sizeof(tmpline)-1, stdin); + ret = get_line(cp, sizeof(tmpline)-1); if (ret == -1) { reply(221, "You could at least say goodbye."); dologout(0);