Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!rutgers!dptg!att!cbnewsc!gregg From: gregg@cbnewsc.ATT.COM (gregg.g.wonderly) Newsgroups: comp.unix.questions Subject: Re: How does man know? Message-ID: <3559@cbnewsc.ATT.COM> Date: 29 Sep 89 21:43:29 GMT References: <11182@smoke.BRL.MIL> Organization: AT&T Bell Laboratories Lines: 53 From article <11182@smoke.BRL.MIL>, by gwyn@smoke.BRL.MIL (Doug Gwyn): > In article <592@crdos1.crd.ge.COM> davidsen@crdos1.UUCP (bill davidsen) writes: >> And guess what? It *is* convenient to have it work that way. > > No, it isn't. One can easily add pagination in those cases where it > is desired, but it's much more difficult to defeat wired-in pagination > in those cases where it isn't desired. There are many arguments both ways. In a newer version of the man(1) program that I posted to comp.sources years ago, I decided to adopt the following strategy. It provides alternatives for all the choices. if (isatty (1)) { If $MANPAGER is defined { if ($MANPAGER == "") pager = "cat"; else pager = $MANPAGER } else if $PAGER is defined pager = $PAGER else pager = "pg"; } I admit that all of the contortions and exceptions bend the mind a bit. The obvious question is why choose pg(1) by default over cat(1). Especially since a user without PAGER set is probably too naive to know how to use pg(1) anyway. IMHO that a pager should always be available. Naive users probably also don't know how to use noscroll or ^S/^Q either. I prefer to have the pager on by default because I almost always want to use it. I don't know of anything other than the current pagers, such as pg(1) and less(1), that accept a file on standard input and then allow you to page up and down searching (as the original article discussed the need for). > Consider "man whatever > /dev/tty_printer". Why should that try to > paginate? That is precisely where isatty(3) comes in handy. It should not and because you can not possibly program in all the possibilities, the easiest (but not the best) solution is to cover the common cases and let the user who knows more about their environment write frontend and/or backend programs/scripts to take care of that stuff. The best example is printing manual pages. My manual program does NOT provide a printing feature. Instead it provides the capability to return the path to the manual pages so that nroff/troff/whatever can be used to format it. -- ----- gregg.g.wonderly@att.com (AT&T bell laboratories)