Not A Typewriter - Occurrence

Occurrence

In some cases, this message will occur even when no ioctl has been issued by the program. This is due to the way the isatty library routine works. The error code errno is only set when a system call fails. One of the first system calls made by the C standard I/O library is in an isatty call used to determine if the program is being run interactively by a human (in which case isatty will succeed and the library will write its output a line at a time so the user sees a regular flow of text) or as part of a pipeline (in which case it writes a block at a time for efficiency). If a library routine fails for some reason unrelated to a system call (for example, because a user name wasn't found in the password file) and a naïve programmer blindly calls the normal error reporting routine perror on every failure, the leftover ENOTTY will result in an utterly inappropriate "Not a typewriter" (or "Not a teletype", or "Inappropriate ioctl for device") being delivered to the user.

For many years the UNIX mail program sendmail contained this bug: when mail was delivered from another system, the mail program was (of course) being run non-interactively. If the destination address was local, but referred to a user name not found in the local password file, the message sent back to the originator of the email was the announcement that the person they were attempting to communicate with was not a typewriter.

Read more about this topic:  Not A Typewriter

Famous quotes containing the word occurrence:

    One is absolutely sickened, not by the crimes that the wicked have committed, but by the punishments that the good have inflicted; and a community is infinitely more brutalised by the habitual employment of punishment than it is by the occasional occurrence of crime.
    Oscar Wilde (1854–1900)