In check-in [6d258c3c7ecafa11](https://sqlite.org/src/info/6d258c3c7ecafa11) the ".read" command added a check to not error on directories, by checking if the file is a regular file. However, there are other types of files one might want to read, for example a named pipe. Use case for this is generating SQL on the fly and piping it to the sqlite executable. It is a bit more flexible compared to the `.read '|script.sh'` approach. Minimal reproduction: ``` sqlite3 :memory: ".read "<(echo "SELECT 1;") ``` Run with for example bash or any other shell that supports process substitution. On older versions, this would correctly print `1`. Now we instead get `Error: cannot open "/dev/fd/63"`. Suggested fix would be to replace the `notNormalFile()` function with one that also accepts named pipes. (Perhaps other people have use cases for even more unsual types such as character devices? Transmitting SQL commands straight over a serial port into sqlite seems funky, but I guess in good Unix tradition we should give people the freedom to shoot themselves in the foot. :) )