1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/patches/uClibc/0.9.29/200-uClibc-0.9.29-fix-fget_putc.patch.dont_apply Tue May 22 20:48:39 2007 +0000
1.3 @@ -0,0 +1,396 @@
1.4 +diff -ur uClibc-0.9.29/libc/inet/rpc/rcmd.c uClibc-0.9.29-patched/libc/inet/rpc/rcmd.c
1.5 +--- uClibc-0.9.29/libc/inet/rpc/rcmd.c 2007-01-10 11:46:19.000000000 -0600
1.6 ++++ uClibc-0.9.29-patched/libc/inet/rpc/rcmd.c 2007-05-09 18:05:21.638421151 -0500
1.7 +@@ -126,7 +126,7 @@
1.8 + libc_hidden_proto(listen)
1.9 + libc_hidden_proto(sigsetmask)
1.10 + libc_hidden_proto(getc_unlocked)
1.11 +-libc_hidden_proto(__fgetc_unlocked)
1.12 ++//libc_hidden_proto(fgetc_unlocked)
1.13 + libc_hidden_proto(fopen)
1.14 + libc_hidden_proto(fclose)
1.15 + libc_hidden_proto(fprintf)
1.16 +diff -ur uClibc-0.9.29/libc/inet/rpc/ruserpass.c uClibc-0.9.29-patched/libc/inet/rpc/ruserpass.c
1.17 +--- uClibc-0.9.29/libc/inet/rpc/ruserpass.c 2006-03-23 05:14:16.000000000 -0600
1.18 ++++ uClibc-0.9.29-patched/libc/inet/rpc/ruserpass.c 2007-05-09 18:05:21.638421151 -0500
1.19 +@@ -63,7 +63,7 @@
1.20 + libc_hidden_proto(fopen)
1.21 + libc_hidden_proto(fclose)
1.22 + libc_hidden_proto(getc_unlocked)
1.23 +-libc_hidden_proto(__fgetc_unlocked)
1.24 ++//libc_hidden_proto(__fgetc_unlocked)
1.25 +
1.26 + #define _(X) (X)
1.27 + /* #include "ftp_var.h" */
1.28 +diff -ur uClibc-0.9.29/libc/misc/error/error.c uClibc-0.9.29-patched/libc/misc/error/error.c
1.29 +--- uClibc-0.9.29/libc/misc/error/error.c 2006-05-04 09:44:13.000000000 -0500
1.30 ++++ uClibc-0.9.29-patched/libc/misc/error/error.c 2007-05-09 18:05:21.646421810 -0500
1.31 +@@ -30,11 +30,14 @@
1.32 + libc_hidden_proto(strerror)
1.33 + libc_hidden_proto(fprintf)
1.34 + libc_hidden_proto(exit)
1.35 ++//#undef putc
1.36 + libc_hidden_proto(putc)
1.37 ++libc_hidden_proto(fputc)
1.38 + libc_hidden_proto(vfprintf)
1.39 + libc_hidden_proto(fflush)
1.40 +-libc_hidden_proto(fputc)
1.41 +-libc_hidden_proto(__fputc_unlocked)
1.42 ++//#ifdef __UCLIBC_HAS_STDIO_PUTC_MACRO__
1.43 ++libc_hidden_proto(fputc_unlocked)
1.44 ++//#endif
1.45 +
1.46 + /* This variable is incremented each time `error' is called. */
1.47 + unsigned int error_message_count = 0;
1.48 +diff -ur uClibc-0.9.29/libc/misc/ttyent/getttyent.c uClibc-0.9.29-patched/libc/misc/ttyent/getttyent.c
1.49 +--- uClibc-0.9.29/libc/misc/ttyent/getttyent.c 2006-12-07 17:24:02.000000000 -0600
1.50 ++++ uClibc-0.9.29-patched/libc/misc/ttyent/getttyent.c 2007-05-09 18:05:21.646421810 -0500
1.51 +@@ -44,8 +44,10 @@
1.52 + libc_hidden_proto(__fsetlocking)
1.53 + libc_hidden_proto(rewind)
1.54 + libc_hidden_proto(fgets_unlocked)
1.55 ++//#undef getc_unlocked
1.56 + libc_hidden_proto(getc_unlocked)
1.57 +-libc_hidden_proto(__fgetc_unlocked)
1.58 ++//#undef fgetc_unlocked
1.59 ++libc_hidden_proto(fgetc_unlocked)
1.60 + libc_hidden_proto(fopen)
1.61 + libc_hidden_proto(fclose)
1.62 + libc_hidden_proto(abort)
1.63 +diff -ur uClibc-0.9.29/libc/pwd_grp/pwd_grp.c uClibc-0.9.29-patched/libc/pwd_grp/pwd_grp.c
1.64 +--- uClibc-0.9.29/libc/pwd_grp/pwd_grp.c 2007-04-13 03:32:18.000000000 -0500
1.65 ++++ uClibc-0.9.29-patched/libc/pwd_grp/pwd_grp.c 2007-05-09 18:05:21.638421151 -0500
1.66 +@@ -43,11 +43,12 @@
1.67 + libc_hidden_proto(strtoul)
1.68 + libc_hidden_proto(rewind)
1.69 + libc_hidden_proto(fgets_unlocked)
1.70 +-libc_hidden_proto(__fputc_unlocked)
1.71 + libc_hidden_proto(sprintf)
1.72 + libc_hidden_proto(fopen)
1.73 + libc_hidden_proto(fclose)
1.74 + libc_hidden_proto(fprintf)
1.75 ++//#undef fputc_unlocked
1.76 ++libc_hidden_proto(fputc_unlocked)
1.77 + #ifdef __UCLIBC_HAS_XLOCALE__
1.78 + libc_hidden_proto(__ctype_b_loc)
1.79 + #elif __UCLIBC_HAS_CTYPE_TABLES__
1.80 +@@ -801,7 +802,7 @@
1.81 +
1.82 + do {
1.83 + if (!*m) {
1.84 +- if (__fputc_unlocked('\n', f) >= 0) {
1.85 ++ if (fputc_unlocked('\n', f) >= 0) {
1.86 + rv = 0;
1.87 + }
1.88 + break;
1.89 +@@ -867,7 +868,7 @@
1.90 + goto DO_UNLOCK;
1.91 + }
1.92 +
1.93 +- if (__fputc_unlocked('\n', stream) > 0) {
1.94 ++ if (fputc_unlocked('\n', stream) > 0) {
1.95 + rv = 0;
1.96 + }
1.97 +
1.98 +diff -ur uClibc-0.9.29/libc/stdio/_scanf.c uClibc-0.9.29-patched/libc/stdio/_scanf.c
1.99 +--- uClibc-0.9.29/libc/stdio/_scanf.c 2007-01-20 12:32:10.000000000 -0600
1.100 ++++ uClibc-0.9.29-patched/libc/stdio/_scanf.c 2007-05-09 18:05:21.642421481 -0500
1.101 +@@ -86,7 +86,8 @@
1.102 + libc_hidden_proto(vsscanf)
1.103 + libc_hidden_proto(fclose)
1.104 + libc_hidden_proto(getc_unlocked)
1.105 +-libc_hidden_proto(__fgetc_unlocked)
1.106 ++//#undef fgetc_unlocked
1.107 ++libc_hidden_proto(fgetc_unlocked)
1.108 + #ifdef __UCLIBC_HAS_WCHAR__
1.109 + libc_hidden_proto(wcslen)
1.110 + libc_hidden_proto(vfwscanf)
1.111 +diff -ur uClibc-0.9.29/libc/stdio/fgetc.c uClibc-0.9.29-patched/libc/stdio/fgetc.c
1.112 +--- uClibc-0.9.29/libc/stdio/fgetc.c 2006-01-15 16:41:03.000000000 -0600
1.113 ++++ uClibc-0.9.29-patched/libc/stdio/fgetc.c 2007-05-09 18:05:21.642421481 -0500
1.114 +@@ -13,13 +13,13 @@
1.115 + #undef getc
1.116 + #undef getc_unlocked
1.117 +
1.118 +-libc_hidden_proto(__fgetc_unlocked)
1.119 ++libc_hidden_proto(fgetc_unlocked)
1.120 +
1.121 + #ifdef __DO_UNLOCKED
1.122 +
1.123 + libc_hidden_proto(fflush_unlocked)
1.124 +
1.125 +-int __fgetc_unlocked(FILE *stream)
1.126 ++int fgetc_unlocked(FILE *stream)
1.127 + {
1.128 + __STDIO_STREAM_VALIDATE(stream);
1.129 +
1.130 +@@ -73,26 +73,22 @@
1.131 +
1.132 + return EOF;
1.133 + }
1.134 +-libc_hidden_def(__fgetc_unlocked)
1.135 +-
1.136 +-libc_hidden_proto(fgetc_unlocked)
1.137 +-strong_alias(__fgetc_unlocked,fgetc_unlocked)
1.138 + libc_hidden_def(fgetc_unlocked)
1.139 +
1.140 + //libc_hidden_proto(__getc_unlocked)
1.141 +-//strong_alias(__fgetc_unlocked,__getc_unlocked)
1.142 ++//strong_alias(fgetc_unlocked,__getc_unlocked)
1.143 + //libc_hidden_def(__getc_unlocked)
1.144 +
1.145 + libc_hidden_proto(getc_unlocked)
1.146 +-strong_alias(__fgetc_unlocked,getc_unlocked)
1.147 ++strong_alias(fgetc_unlocked,getc_unlocked)
1.148 + libc_hidden_def(getc_unlocked)
1.149 +
1.150 + #ifndef __UCLIBC_HAS_THREADS__
1.151 + libc_hidden_proto(fgetc)
1.152 +-strong_alias(__fgetc_unlocked,fgetc)
1.153 ++strong_alias(fgetc_unlocked,fgetc)
1.154 + libc_hidden_def(fgetc)
1.155 +
1.156 +-strong_alias(__fgetc_unlocked,getc)
1.157 ++strong_alias(fgetc_unlocked,getc)
1.158 + #endif
1.159 +
1.160 + #elif defined __UCLIBC_HAS_THREADS__
1.161 +diff -ur uClibc-0.9.29/libc/stdio/fgets.c uClibc-0.9.29-patched/libc/stdio/fgets.c
1.162 +--- uClibc-0.9.29/libc/stdio/fgets.c 2006-01-15 16:41:03.000000000 -0600
1.163 ++++ uClibc-0.9.29-patched/libc/stdio/fgets.c 2007-05-09 18:05:21.638421151 -0500
1.164 +@@ -10,8 +10,7 @@
1.165 + libc_hidden_proto(fgets_unlocked)
1.166 +
1.167 + #ifdef __DO_UNLOCKED
1.168 +-
1.169 +-libc_hidden_proto(__fgetc_unlocked)
1.170 ++libc_hidden_proto(fgetc_unlocked)
1.171 +
1.172 + char *fgets_unlocked(char *__restrict s, int n,
1.173 + register FILE * __restrict stream)
1.174 +@@ -38,7 +37,7 @@
1.175 + break;
1.176 + }
1.177 + } else {
1.178 +- if ((c = __fgetc_unlocked(stream)) == EOF) {
1.179 ++ if ((c = fgetc_unlocked(stream)) == EOF) {
1.180 + if (__FERROR_UNLOCKED(stream)) {
1.181 + goto ERROR;
1.182 + }
1.183 +diff -ur uClibc-0.9.29/libc/stdio/fputc.c uClibc-0.9.29-patched/libc/stdio/fputc.c
1.184 +--- uClibc-0.9.29/libc/stdio/fputc.c 2007-04-14 12:03:18.000000000 -0500
1.185 ++++ uClibc-0.9.29-patched/libc/stdio/fputc.c 2007-05-09 20:50:51.350629927 -0500
1.186 +@@ -16,7 +16,7 @@
1.187 +
1.188 + #ifdef __DO_UNLOCKED
1.189 +
1.190 +-int __fputc_unlocked(int c, register FILE *stream)
1.191 ++int fputc_unlocked(int c, register FILE *stream)
1.192 + {
1.193 + __STDIO_STREAM_VALIDATE(stream);
1.194 +
1.195 +@@ -70,22 +70,22 @@
1.196 + BAD:
1.197 + return EOF;
1.198 + }
1.199 +-libc_hidden_def(__fputc_unlocked)
1.200 ++libc_hidden_def(fputc_unlocked)
1.201 +
1.202 + /* exposing these would be fundamentally *wrong*! fix you, instead! */
1.203 + /* libc_hidden_proto(fputc_unlocked) */
1.204 +-strong_alias(__fputc_unlocked,fputc_unlocked)
1.205 ++/* strong_alias(__fputc_unlocked,fputc_unlocked) */
1.206 + /* exposing these would be fundamentally *wrong*! fix you, instead! */
1.207 + /* libc_hidden_def(fputc_unlocked) */
1.208 +
1.209 + libc_hidden_proto(putc_unlocked)
1.210 +-strong_alias(__fputc_unlocked,putc_unlocked)
1.211 ++strong_alias(fputc_unlocked,putc_unlocked)
1.212 + libc_hidden_def(putc_unlocked)
1.213 + #ifndef __UCLIBC_HAS_THREADS__
1.214 +-strong_alias(__fputc_unlocked,fputc)
1.215 ++strong_alias(fputc_unlocked,fputc)
1.216 +
1.217 + libc_hidden_proto(putc)
1.218 +-strong_alias(__fputc_unlocked,putc)
1.219 ++strong_alias(fputc_unlocked,putc)
1.220 + libc_hidden_def(putc)
1.221 + #endif
1.222 +
1.223 +diff -ur uClibc-0.9.29/libc/stdio/getchar.c uClibc-0.9.29-patched/libc/stdio/getchar.c
1.224 +--- uClibc-0.9.29/libc/stdio/getchar.c 2006-12-19 22:30:25.000000000 -0600
1.225 ++++ uClibc-0.9.29-patched/libc/stdio/getchar.c 2007-05-09 18:05:21.642421481 -0500
1.226 +@@ -7,7 +7,8 @@
1.227 +
1.228 + #include "_stdio.h"
1.229 +
1.230 +-libc_hidden_proto(__fgetc_unlocked)
1.231 ++//#undef fgetc_unlocked
1.232 ++libc_hidden_proto(fgetc_unlocked)
1.233 +
1.234 + #undef getchar
1.235 + #ifdef __DO_UNLOCKED
1.236 +diff -ur uClibc-0.9.29/libc/stdio/getdelim.c uClibc-0.9.29-patched/libc/stdio/getdelim.c
1.237 +--- uClibc-0.9.29/libc/stdio/getdelim.c 2006-02-13 02:52:46.000000000 -0600
1.238 ++++ uClibc-0.9.29-patched/libc/stdio/getdelim.c 2007-05-09 18:05:21.642421481 -0500
1.239 +@@ -11,8 +11,8 @@
1.240 + #include "_stdio.h"
1.241 +
1.242 + libc_hidden_proto(getdelim)
1.243 +-
1.244 +-libc_hidden_proto(__fgetc_unlocked)
1.245 ++//#undef fgetc_unlocked
1.246 ++libc_hidden_proto(fgetc_unlocked)
1.247 +
1.248 + /* Note: There is a defect in this function. (size_t vs ssize_t). */
1.249 +
1.250 +diff -ur uClibc-0.9.29/libc/stdio/old_vfprintf.c uClibc-0.9.29-patched/libc/stdio/old_vfprintf.c
1.251 +--- uClibc-0.9.29/libc/stdio/old_vfprintf.c 2006-01-22 13:35:08.000000000 -0600
1.252 ++++ uClibc-0.9.29-patched/libc/stdio/old_vfprintf.c 2007-05-09 18:05:21.642421481 -0500
1.253 +@@ -149,7 +149,8 @@
1.254 + libc_hidden_proto(strnlen)
1.255 + libc_hidden_proto(memcpy)
1.256 + libc_hidden_proto(putc_unlocked)
1.257 +-libc_hidden_proto(__fputc_unlocked)
1.258 ++//#undef fputc_unlocked
1.259 ++libc_hidden_proto(fputc_unlocked)
1.260 + libc_hidden_proto(__glibc_strerror_r)
1.261 +
1.262 + /* #undef __UCLIBC_HAS_FLOATS__ */
1.263 +diff -ur uClibc-0.9.29/libc/stdio/putchar.c uClibc-0.9.29-patched/libc/stdio/putchar.c
1.264 +--- uClibc-0.9.29/libc/stdio/putchar.c 2006-01-13 18:58:03.000000000 -0600
1.265 ++++ uClibc-0.9.29-patched/libc/stdio/putchar.c 2007-05-09 18:05:21.642421481 -0500
1.266 +@@ -7,7 +7,8 @@
1.267 +
1.268 + #include "_stdio.h"
1.269 +
1.270 +-libc_hidden_proto(__fputc_unlocked)
1.271 ++//#undef fputc_unlocked
1.272 ++libc_hidden_proto(fputc_unlocked)
1.273 +
1.274 + #undef putchar
1.275 + #ifdef __DO_UNLOCKED
1.276 +diff -ur uClibc-0.9.29/libc/stdio/puts.c uClibc-0.9.29-patched/libc/stdio/puts.c
1.277 +--- uClibc-0.9.29/libc/stdio/puts.c 2006-01-13 18:58:03.000000000 -0600
1.278 ++++ uClibc-0.9.29-patched/libc/stdio/puts.c 2007-05-09 18:05:21.642421481 -0500
1.279 +@@ -7,7 +7,8 @@
1.280 +
1.281 + #include "_stdio.h"
1.282 +
1.283 +-libc_hidden_proto(__fputc_unlocked)
1.284 ++//#undef fputc_unlocked
1.285 ++libc_hidden_proto(fputc_unlocked)
1.286 + libc_hidden_proto(fputs_unlocked)
1.287 +
1.288 + int puts(register const char * __restrict s)
1.289 +@@ -25,7 +26,7 @@
1.290 + /* Note: Nonportable as fputs need only return nonnegative on success. */
1.291 + if ((n = fputs_unlocked(s, stream)) != EOF) {
1.292 + ++n;
1.293 +- if (__fputc_unlocked('\n', stream) == EOF) {
1.294 ++ if (fputc_unlocked('\n', stream) == EOF) {
1.295 + n = EOF;
1.296 + }
1.297 + }
1.298 +diff -ur uClibc-0.9.29/libc/stdio/putwchar.c uClibc-0.9.29-patched/libc/stdio/putwchar.c
1.299 +--- uClibc-0.9.29/libc/stdio/putwchar.c 2006-01-14 14:16:19.000000000 -0600
1.300 ++++ uClibc-0.9.29-patched/libc/stdio/putwchar.c 2007-05-09 18:05:21.642421481 -0500
1.301 +@@ -22,7 +22,8 @@
1.302 +
1.303 + #elif defined __UCLIBC_HAS_THREADS__
1.304 +
1.305 +-libc_hidden_proto(__fputc_unlocked)
1.306 ++//#undef fputc_unlocked
1.307 ++libc_hidden_proto(fputc_unlocked)
1.308 + /* psm: should this be fputwc? */
1.309 + libc_hidden_proto(fputc)
1.310 +
1.311 +diff -ur uClibc-0.9.29/libc/sysdeps/linux/common/bits/uClibc_stdio.h uClibc-0.9.29-patched/libc/sysdeps/linux/common/bits/uClibc_stdio.h
1.312 +--- uClibc-0.9.29/libc/sysdeps/linux/common/bits/uClibc_stdio.h 2007-01-28 07:16:58.000000000 -0600
1.313 ++++ uClibc-0.9.29-patched/libc/sysdeps/linux/common/bits/uClibc_stdio.h 2007-05-09 20:56:02.408110608 -0500
1.314 +@@ -381,33 +381,29 @@
1.315 + # define __FEOF(__stream) __FEOF_UNLOCKED(__stream)
1.316 + #endif
1.317 +
1.318 +-extern int __fgetc_unlocked(FILE *__stream);
1.319 +-extern int __fputc_unlocked(int __c, FILE *__stream);
1.320 +-
1.321 + /* First define the default definitions.
1.322 + They are overridden below as necessary. */
1.323 +-#define __FGETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))
1.324 ++#define __FGETC_UNLOCKED(__stream) (fgetc_unlocked)((__stream))
1.325 + #define __FGETC(__stream) (fgetc)((__stream))
1.326 +-#define __GETC_UNLOCKED_MACRO(__stream) (__fgetc_unlocked)((__stream))
1.327 +-#define __GETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))
1.328 ++#define __GETC_UNLOCKED_MACRO(__stream) (fgetc_unlocked)((__stream))
1.329 ++#define __GETC_UNLOCKED(__stream) (fgetc_unlocked)((__stream))
1.330 + #define __GETC(__stream) (fgetc)((__stream))
1.331 +
1.332 +-#define __FPUTC_UNLOCKED(__c, __stream) (__fputc_unlocked)((__c),(__stream))
1.333 ++#define __FPUTC_UNLOCKED(__c, __stream) (fputc_unlocked)((__c),(__stream))
1.334 + #define __FPUTC(__c, __stream) (fputc)((__c),(__stream))
1.335 +-#define __PUTC_UNLOCKED_MACRO(__c, __stream) (__fputc_unlocked)((__c),(__stream))
1.336 +-#define __PUTC_UNLOCKED(__c, __stream) (__fputc_unlocked)((__c),(__stream))
1.337 ++#define __PUTC_UNLOCKED_MACRO(__c, __stream) (fputc_unlocked)((__c),(__stream))
1.338 ++#define __PUTC_UNLOCKED(__c, __stream) (fputc_unlocked)((__c),(__stream))
1.339 + #define __PUTC(__c, __stream) (fputc)((__c),(__stream))
1.340 +
1.341 +
1.342 + #ifdef __STDIO_GETC_MACRO
1.343 +-
1.344 + extern FILE *__stdin; /* For getchar() macro. */
1.345 +
1.346 + # undef __GETC_UNLOCKED_MACRO
1.347 + # define __GETC_UNLOCKED_MACRO(__stream) \
1.348 + ( ((__stream)->__bufpos < (__stream)->__bufgetc_u) \
1.349 + ? (*(__stream)->__bufpos++) \
1.350 +- : __fgetc_unlocked(__stream) )
1.351 ++ : fgetc_unlocked(__stream) )
1.352 +
1.353 + # if 0
1.354 + /* Classic macro approach. getc{_unlocked} can have side effects. */
1.355 +@@ -453,20 +449,17 @@
1.356 + # endif
1.357 + # endif
1.358 +
1.359 +-#else
1.360 +-
1.361 + #endif /* __STDIO_GETC_MACRO */
1.362 +
1.363 +
1.364 + #ifdef __STDIO_PUTC_MACRO
1.365 +-
1.366 + extern FILE *__stdout; /* For putchar() macro. */
1.367 +
1.368 + # undef __PUTC_UNLOCKED_MACRO
1.369 + # define __PUTC_UNLOCKED_MACRO(__c, __stream) \
1.370 + ( ((__stream)->__bufpos < (__stream)->__bufputc_u) \
1.371 + ? (*(__stream)->__bufpos++) = (__c) \
1.372 +- : __fputc_unlocked((__c),(__stream)) )
1.373 ++ : (fputc_unlocked((__c),(__stream)) )
1.374 +
1.375 + # if 0
1.376 + /* Classic macro approach. putc{_unlocked} can have side effects.*/
1.377 +@@ -489,7 +482,8 @@
1.378 + }) )
1.379 +
1.380 + # undef __PUTC_UNLOCKED
1.381 +-# define __PUTC_UNLOCKED(__c, __stream) __FPUTC_UNLOCKED((__c), (__stream))
1.382 ++# define __PUTC_UNLOCKED(__c, __stream) \
1.383 ++ __FPUTC_UNLOCKED((__c), (__stream))
1.384 +
1.385 + # ifdef __UCLIBC_HAS_THREADS__
1.386 + # undef __FPUTC
1.387 +diff -ur uClibc-0.9.29/libc/unistd/getpass.c uClibc-0.9.29-patched/libc/unistd/getpass.c
1.388 +--- uClibc-0.9.29/libc/unistd/getpass.c 2006-07-05 05:58:38.000000000 -0500
1.389 ++++ uClibc-0.9.29-patched/libc/unistd/getpass.c 2007-05-09 18:05:21.642421481 -0500
1.390 +@@ -36,7 +36,8 @@
1.391 + libc_hidden_proto(fputs)
1.392 + libc_hidden_proto(fputc)
1.393 + libc_hidden_proto(putc)
1.394 +-libc_hidden_proto(__fputc_unlocked)
1.395 ++//#undef fputc_unlocked
1.396 ++libc_hidden_proto(fputc_unlocked)
1.397 +
1.398 + /* It is desirable to use this bit on systems that have it.
1.399 + The only bit of terminal state we want to twiddle is echoing, which is