This was my fault, and it happened because I confronted DMR about the -u flag for cat. He said it was there because it seemed important that cat be writable in stdio, which was new at the time. I agreed but said the point had been made and avoiding unnecessary flags was a higher goal. So cat was simplified to do what it said, no more and no less, with read and write and no nonsense. -rob On Fri, Sep 20, 2019 at 4:51 AM Norman Wilson wrote: > KatolaZ: > > We can discuss whether the split was necessary or "right" in the first > > instance, as we could discuss whether it was good or not for cat(1) to > > leave Murray Hill in 1979 with no options and come back from Berkley > > with a source code doubled in size and 9 options in 1982. > > We needn't discuss that (though of course there are opinions and > mine are the correct ones), but in the interest of historic accuracy, > I should point out by 1979 (V7) cat had developed a single option -u > to turn off stdio buffering. > > Sometime before 1984 or so, that option was removed, and cat was > simplified to just > while ((n = read(fd, buf, sizeof(buf))) > 0) > write(1, buf, n) > (error checking elided for clarity) > which worked just fine for the rest of the life of the Research > system. > > So it's true that BSD added needless (in my humble but correct > opinion) options, but not that it had none before they touched it. > Unless all those other programs were stuffed into cat in an earlier > Berkeley system, but I don't think they were. > > Norman Wilson > Toronto ON > (Three cats, no options) >