Re: dwb : groff replacement proposal



Hi,

it works w/ a little change for now.
I made it compile under cygwin but more work is needed.
out of the box, makefiles don't install everything :-(
whenever I have time, I'll make it a port... so, you'll
have the possibility to evaluate it.
one "major" problem is than nroff uses nterm definitions,
this would have to be ported to termcap/terminfo or to
convert termcap/terminfo entries to nterm ones ?
one minor problem is that everything has to be rearanged
to match today's file structure :-)

in attachment, you'll find :

dwb.txt : the actual directory listing
faucet.txt : nroff -Tlp -rd4 -rm1 -ry93 -man | col
faucet.ps : troff -man | dpost
faucet2.ps : nroff ... | postprint

faucet.1 is a standard manual page from netpipes.

how do you found the rendering ?

in fact, this remember me the nroff/troff Solaris
package in regard of dpost filter, etc.

Regards,

Cyrille Lefevre
--
mailto:Cyrille.Lefevre-lists@xxxxxxxxxxx
/opt/dwb/bin/
/opt/dwb/bin/.man.swp
/opt/dwb/bin/atoL1
/opt/dwb/bin/checkdoc
/opt/dwb/bin/col
/opt/dwb/bin/diffmk
/opt/dwb/bin/dnroff
/opt/dwb/bin/dpcl
/opt/dwb/bin/dpost
/opt/dwb/bin/dsplit
/opt/dwb/bin/dwbv
/opt/dwb/bin/eqn
/opt/dwb/bin/gc2pic
/opt/dwb/bin/grap
/opt/dwb/bin/hyphen
/opt/dwb/bin/man
/opt/dwb/bin/mm
/opt/dwb/bin/mmt
/opt/dwb/bin/mvt
/opt/dwb/bin/ndx
/opt/dwb/bin/neqn
/opt/dwb/bin/nroff
/opt/dwb/bin/otbl
/opt/dwb/bin/pic
/opt/dwb/bin/picasso
/opt/dwb/bin/picpack
/opt/dwb/bin/ptx
/opt/dwb/bin/subj
/opt/dwb/bin/tbl
/opt/dwb/bin/tc
/opt/dwb/bin/troff
/opt/dwb/lbin/
/opt/dwb/lbin/postscript
/opt/dwb/lbin/postscript/buildtables
/opt/dwb/lbin/postscript/cropmarks
/opt/dwb/lbin/postscript/download
/opt/dwb/lbin/postscript/grabit
/opt/dwb/lbin/postscript/hardcopy
/opt/dwb/lbin/postscript/postbgi
/opt/dwb/lbin/postscript/postdaisy
/opt/dwb/lbin/postscript/postdmd
/opt/dwb/lbin/postscript/postgif
/opt/dwb/lbin/postscript/postio
/opt/dwb/lbin/postscript/postmd
/opt/dwb/lbin/postscript/postplot
/opt/dwb/lbin/postscript/postprint
/opt/dwb/lbin/postscript/postreverse
/opt/dwb/lbin/postscript/posttek
/opt/dwb/lbin/postscript/printfont
/opt/dwb/lbin/postscript/psencoding
/opt/dwb/lbin/postscript/trofftable
/opt/dwb/lib/
/opt/dwb/lib/dwb
/opt/dwb/lib/dwb/deroff
/opt/dwb/lib/dwb/xpand
/opt/dwb/lib/font
/opt/dwb/lib/font/devLatin1
/opt/dwb/lib/font/devLatin1/AB
/opt/dwb/lib/font/devLatin1/AI
/opt/dwb/lib/font/devLatin1/AR
/opt/dwb/lib/font/devLatin1/AX
/opt/dwb/lib/font/devLatin1/B
/opt/dwb/lib/font/devLatin1/BI
/opt/dwb/lib/font/devLatin1/C
/opt/dwb/lib/font/devLatin1/CB
/opt/dwb/lib/font/devLatin1/charlib
/opt/dwb/lib/font/devLatin1/charlib/12
/opt/dwb/lib/font/devLatin1/charlib/14
/opt/dwb/lib/font/devLatin1/charlib/34
/opt/dwb/lib/font/devLatin1/charlib/bx
/opt/dwb/lib/font/devLatin1/charlib/ci
/opt/dwb/lib/font/devLatin1/charlib/DG
/opt/dwb/lib/font/devLatin1/charlib/ff
/opt/dwb/lib/font/devLatin1/charlib/Fi
/opt/dwb/lib/font/devLatin1/charlib/Fl
/opt/dwb/lib/font/devLatin1/charlib/L1
/opt/dwb/lib/font/devLatin1/charlib/LA
/opt/dwb/lib/font/devLatin1/charlib/lc
/opt/dwb/lib/font/devLatin1/charlib/lf
/opt/dwb/lib/font/devLatin1/charlib/LH
/opt/dwb/lib/font/devLatin1/charlib/lH
/opt/dwb/lib/font/devLatin1/charlib/lh
/opt/dwb/lib/font/devLatin1/charlib/LH.example
/opt/dwb/lib/font/devLatin1/charlib/LV
/opt/dwb/lib/font/devLatin1/charlib/ob
/opt/dwb/lib/font/devLatin1/charlib/PC
/opt/dwb/lib/font/devLatin1/charlib/RC
/opt/dwb/lib/font/devLatin1/charlib/rc
/opt/dwb/lib/font/devLatin1/charlib/README
/opt/dwb/lib/font/devLatin1/charlib/rf
/opt/dwb/lib/font/devLatin1/charlib/rH
/opt/dwb/lib/font/devLatin1/charlib/rh
/opt/dwb/lib/font/devLatin1/charlib/Sl
/opt/dwb/lib/font/devLatin1/charlib/sq
/opt/dwb/lib/font/devLatin1/charlib/~=
/opt/dwb/lib/font/devLatin1/CI
/opt/dwb/lib/font/devLatin1/CO
/opt/dwb/lib/font/devLatin1/CW
/opt/dwb/lib/font/devLatin1/CX
/opt/dwb/lib/font/devLatin1/DESC
/opt/dwb/lib/font/devLatin1/GR
/opt/dwb/lib/font/devLatin1/H
/opt/dwb/lib/font/devLatin1/HB
/opt/dwb/lib/font/devLatin1/Hb
/opt/dwb/lib/font/devLatin1/HI
/opt/dwb/lib/font/devLatin1/Hi
/opt/dwb/lib/font/devLatin1/HK
/opt/dwb/lib/font/devLatin1/HL
/opt/dwb/lib/font/devLatin1/HM
/opt/dwb/lib/font/devLatin1/Hr
/opt/dwb/lib/font/devLatin1/HX
/opt/dwb/lib/font/devLatin1/Hx
/opt/dwb/lib/font/devLatin1/I
/opt/dwb/lib/font/devLatin1/KB
/opt/dwb/lib/font/devLatin1/KI
/opt/dwb/lib/font/devLatin1/KR
/opt/dwb/lib/font/devLatin1/KX
/opt/dwb/lib/font/devLatin1/NB
/opt/dwb/lib/font/devLatin1/NI
/opt/dwb/lib/font/devLatin1/NR
/opt/dwb/lib/font/devLatin1/NX
/opt/dwb/lib/font/devLatin1/PA
/opt/dwb/lib/font/devLatin1/PB
/opt/dwb/lib/font/devLatin1/PI
/opt/dwb/lib/font/devLatin1/PX
/opt/dwb/lib/font/devLatin1/R
/opt/dwb/lib/font/devLatin1/S
/opt/dwb/lib/font/devLatin1/S1
/opt/dwb/lib/font/devLatin1/shell.lib
/opt/dwb/lib/font/devLatin1/shell.lib.last
/opt/dwb/lib/font/devLatin1/shell.lib.old
/opt/dwb/lib/font/devLatin1/ZD
/opt/dwb/lib/font/devLatin1/ZI
/opt/dwb/lib/font/devnroff
/opt/dwb/lib/font/devnroff/B
/opt/dwb/lib/font/devnroff/CW
/opt/dwb/lib/font/devnroff/DESC
/opt/dwb/lib/font/devnroff/I
/opt/dwb/lib/font/devnroff/R
/opt/dwb/lib/font/devnroff/S
/opt/dwb/lib/font/devnroff-12
/opt/dwb/lib/font/devnroff-12/B
/opt/dwb/lib/font/devnroff-12/CW
/opt/dwb/lib/font/devnroff-12/DESC
/opt/dwb/lib/font/devnroff-12/I
/opt/dwb/lib/font/devnroff-12/R
/opt/dwb/lib/font/devnroff-12/S
/opt/dwb/lib/font/devopost
/opt/dwb/lib/font/devopost/AB
/opt/dwb/lib/font/devopost/AI
/opt/dwb/lib/font/devopost/AR
/opt/dwb/lib/font/devopost/AX
/opt/dwb/lib/font/devopost/B
/opt/dwb/lib/font/devopost/BI
/opt/dwb/lib/font/devopost/CB
/opt/dwb/lib/font/devopost/charlib
/opt/dwb/lib/font/devopost/charlib/12
/opt/dwb/lib/font/devopost/charlib/14
/opt/dwb/lib/font/devopost/charlib/34
/opt/dwb/lib/font/devopost/charlib/BRACKETS_NOTE
/opt/dwb/lib/font/devopost/charlib/bx
/opt/dwb/lib/font/devopost/charlib/ci
/opt/dwb/lib/font/devopost/charlib/ff
/opt/dwb/lib/font/devopost/charlib/Fi
/opt/dwb/lib/font/devopost/charlib/Fl
/opt/dwb/lib/font/devopost/charlib/L1
/opt/dwb/lib/font/devopost/charlib/L1.map
/opt/dwb/lib/font/devopost/charlib/Lb
/opt/dwb/lib/font/devopost/charlib/Lb.map
/opt/dwb/lib/font/devopost/charlib/lc
/opt/dwb/lib/font/devopost/charlib/lf
/opt/dwb/lib/font/devopost/charlib/LH
/opt/dwb/lib/font/devopost/charlib/lh
/opt/dwb/lib/font/devopost/charlib/LH.map
/opt/dwb/lib/font/devopost/charlib/ob
/opt/dwb/lib/font/devopost/charlib/rc
/opt/dwb/lib/font/devopost/charlib/README
/opt/dwb/lib/font/devopost/charlib/rf
/opt/dwb/lib/font/devopost/charlib/rh
/opt/dwb/lib/font/devopost/charlib/Sl
/opt/dwb/lib/font/devopost/charlib/sq
/opt/dwb/lib/font/devopost/charlib/~=
/opt/dwb/lib/font/devopost/CI
/opt/dwb/lib/font/devopost/CO
/opt/dwb/lib/font/devopost/CW
/opt/dwb/lib/font/devopost/CX
/opt/dwb/lib/font/devopost/DESC
/opt/dwb/lib/font/devopost/GR
/opt/dwb/lib/font/devopost/H
/opt/dwb/lib/font/devopost/HB
/opt/dwb/lib/font/devopost/Hb
/opt/dwb/lib/font/devopost/HI
/opt/dwb/lib/font/devopost/Hi
/opt/dwb/lib/font/devopost/Hr
/opt/dwb/lib/font/devopost/HX
/opt/dwb/lib/font/devopost/Hx
/opt/dwb/lib/font/devopost/I
/opt/dwb/lib/font/devopost/KB
/opt/dwb/lib/font/devopost/KI
/opt/dwb/lib/font/devopost/KR
/opt/dwb/lib/font/devopost/KX
/opt/dwb/lib/font/devopost/NB
/opt/dwb/lib/font/devopost/NI
/opt/dwb/lib/font/devopost/NR
/opt/dwb/lib/font/devopost/NX
/opt/dwb/lib/font/devopost/PA
/opt/dwb/lib/font/devopost/PB
/opt/dwb/lib/font/devopost/PI
/opt/dwb/lib/font/devopost/PX
/opt/dwb/lib/font/devopost/R
/opt/dwb/lib/font/devopost/S
/opt/dwb/lib/font/devopost/S1
/opt/dwb/lib/font/devopost/ZD
/opt/dwb/lib/font/devopost/ZI
/opt/dwb/lib/font/devpcl
/opt/dwb/lib/font/devpcl/B
/opt/dwb/lib/font/devpcl/BI
/opt/dwb/lib/font/devpcl/CB
/opt/dwb/lib/font/devpcl/CW
/opt/dwb/lib/font/devpcl/DESC
/opt/dwb/lib/font/devpcl/G
/opt/dwb/lib/font/devpcl/GI
/opt/dwb/lib/font/devpcl/GR
/opt/dwb/lib/font/devpcl/H
/opt/dwb/lib/font/devpcl/HB
/opt/dwb/lib/font/devpcl/HI
/opt/dwb/lib/font/devpcl/HK
/opt/dwb/lib/font/devpcl/HL
/opt/dwb/lib/font/devpcl/HM
/opt/dwb/lib/font/devpcl/HX
/opt/dwb/lib/font/devpcl/I
/opt/dwb/lib/font/devpcl/LO
/opt/dwb/lib/font/devpcl/PA
/opt/dwb/lib/font/devpcl/PI
/opt/dwb/lib/font/devpcl/R
/opt/dwb/lib/font/devpcl/S
/opt/dwb/lib/font/devpcl/S1
/opt/dwb/lib/font/devpcl/S2
/opt/dwb/lib/font/devpcl/S3
/opt/dwb/lib/font/devpost
/opt/dwb/lib/font/devpost/a1
/opt/dwb/lib/font/devpost/a2
/opt/dwb/lib/font/devpost/AB
/opt/dwb/lib/font/devpost/AI
/opt/dwb/lib/font/devpost/AR
/opt/dwb/lib/font/devpost/AX
/opt/dwb/lib/font/devpost/B
/opt/dwb/lib/font/devpost/BI
/opt/dwb/lib/font/devpost/C
/opt/dwb/lib/font/devpost/C1
/opt/dwb/lib/font/devpost/c1
/opt/dwb/lib/font/devpost/C2
/opt/dwb/lib/font/devpost/c2
/opt/dwb/lib/font/devpost/C3
/opt/dwb/lib/font/devpost/c3
/opt/dwb/lib/font/devpost/CB
/opt/dwb/lib/font/devpost/charlib
/opt/dwb/lib/font/devpost/charlib/12
/opt/dwb/lib/font/devpost/charlib/14
/opt/dwb/lib/font/devpost/charlib/34
/opt/dwb/lib/font/devpost/charlib/bx
/opt/dwb/lib/font/devpost/charlib/ci
/opt/dwb/lib/font/devpost/charlib/DG
/opt/dwb/lib/font/devpost/charlib/ff
/opt/dwb/lib/font/devpost/charlib/Fi
/opt/dwb/lib/font/devpost/charlib/Fl
/opt/dwb/lib/font/devpost/charlib/L1
/opt/dwb/lib/font/devpost/charlib/LA
/opt/dwb/lib/font/devpost/charlib/lc
/opt/dwb/lib/font/devpost/charlib/lf
/opt/dwb/lib/font/devpost/charlib/LH
/opt/dwb/lib/font/devpost/charlib/lH
/opt/dwb/lib/font/devpost/charlib/lh
/opt/dwb/lib/font/devpost/charlib/LH.example
/opt/dwb/lib/font/devpost/charlib/LV
/opt/dwb/lib/font/devpost/charlib/ob
/opt/dwb/lib/font/devpost/charlib/PC
/opt/dwb/lib/font/devpost/charlib/RC
/opt/dwb/lib/font/devpost/charlib/rc
/opt/dwb/lib/font/devpost/charlib/README
/opt/dwb/lib/font/devpost/charlib/rf
/opt/dwb/lib/font/devpost/charlib/rH
/opt/dwb/lib/font/devpost/charlib/rh
/opt/dwb/lib/font/devpost/charlib/Sl
/opt/dwb/lib/font/devpost/charlib/sq
/opt/dwb/lib/font/devpost/charlib/~=
/opt/dwb/lib/font/devpost/CI
/opt/dwb/lib/font/devpost/CO
/opt/dwb/lib/font/devpost/CW
/opt/dwb/lib/font/devpost/CX
/opt/dwb/lib/font/devpost/DESC
/opt/dwb/lib/font/devpost/devpost.mk
/opt/dwb/lib/font/devpost/F1
/opt/dwb/lib/font/devpost/F2
/opt/dwb/lib/font/devpost/F3
/opt/dwb/lib/font/devpost/F4
/opt/dwb/lib/font/devpost/F5
/opt/dwb/lib/font/devpost/F6
/opt/dwb/lib/font/devpost/G1
/opt/dwb/lib/font/devpost/G2
/opt/dwb/lib/font/devpost/G3
/opt/dwb/lib/font/devpost/G4
/opt/dwb/lib/font/devpost/Gb
/opt/dwb/lib/font/devpost/Gi
/opt/dwb/lib/font/devpost/GR
/opt/dwb/lib/font/devpost/Gr
/opt/dwb/lib/font/devpost/Gx
/opt/dwb/lib/font/devpost/H
/opt/dwb/lib/font/devpost/H1
/opt/dwb/lib/font/devpost/H2
/opt/dwb/lib/font/devpost/H3
/opt/dwb/lib/font/devpost/H4
/opt/dwb/lib/font/devpost/H5
/opt/dwb/lib/font/devpost/H6
/opt/dwb/lib/font/devpost/H7
/opt/dwb/lib/font/devpost/H8
/opt/dwb/lib/font/devpost/HB
/opt/dwb/lib/font/devpost/Hb
/opt/dwb/lib/font/devpost/HC
/opt/dwb/lib/font/devpost/HI
/opt/dwb/lib/font/devpost/Hi
/opt/dwb/lib/font/devpost/HK
/opt/dwb/lib/font/devpost/HL
/opt/dwb/lib/font/devpost/HM
/opt/dwb/lib/font/devpost/Hr
/opt/dwb/lib/font/devpost/HX
/opt/dwb/lib/font/devpost/Hx
/opt/dwb/lib/font/devpost/HY
/opt/dwb/lib/font/devpost/I
/opt/dwb/lib/font/devpost/KB
/opt/dwb/lib/font/devpost/KI
/opt/dwb/lib/font/devpost/KR
/opt/dwb/lib/font/devpost/KX
/opt/dwb/lib/font/devpost/LINKFILE
/opt/dwb/lib/font/devpost/MU
/opt/dwb/lib/font/devpost/NB
/opt/dwb/lib/font/devpost/NI
/opt/dwb/lib/font/devpost/NR
/opt/dwb/lib/font/devpost/NX
/opt/dwb/lib/font/devpost/OA
/opt/dwb/lib/font/devpost/OB
/opt/dwb/lib/font/devpost/OI
/opt/dwb/lib/font/devpost/OX
/opt/dwb/lib/font/devpost/PA
/opt/dwb/lib/font/devpost/PB
/opt/dwb/lib/font/devpost/PI
/opt/dwb/lib/font/devpost/PX
/opt/dwb/lib/font/devpost/R
/opt/dwb/lib/font/devpost/S
/opt/dwb/lib/font/devpost/S1
/opt/dwb/lib/font/devpost/shell.lib
/opt/dwb/lib/font/devpost/shell.lib.bak
/opt/dwb/lib/font/devpost/ZD
/opt/dwb/lib/font/devpost/ZI
/opt/dwb/lib/font/postscript
/opt/dwb/lib/macros
/opt/dwb/lib/macros/an
/opt/dwb/lib/macros/color
/opt/dwb/lib/macros/csmacros
/opt/dwb/lib/macros/mmn
/opt/dwb/lib/macros/mmt
/opt/dwb/lib/macros/pictures
/opt/dwb/lib/macros/ptx
/opt/dwb/lib/macros/safe
/opt/dwb/lib/macros/strings.mm
/opt/dwb/lib/macros/v
/opt/dwb/lib/macros/view
/opt/dwb/lib/manprog
/opt/dwb/lib/nterm
/opt/dwb/lib/nterm/tab.2631
/opt/dwb/lib/nterm/tab.2631-c
/opt/dwb/lib/nterm/tab.2631-e
/opt/dwb/lib/nterm/tab.300
/opt/dwb/lib/nterm/tab.300-12
/opt/dwb/lib/nterm/tab.300S
/opt/dwb/lib/nterm/tab.300s
/opt/dwb/lib/nterm/tab.300S-12
/opt/dwb/lib/nterm/tab.300s-12
/opt/dwb/lib/nterm/tab.37
/opt/dwb/lib/nterm/tab.382
/opt/dwb/lib/nterm/tab.4000A
/opt/dwb/lib/nterm/tab.4000a
/opt/dwb/lib/nterm/tab.450
/opt/dwb/lib/nterm/tab.450-12
/opt/dwb/lib/nterm/tab.832
/opt/dwb/lib/nterm/tab.8510
/opt/dwb/lib/nterm/tab.lp
/opt/dwb/lib/nterm/tab.lpr
/opt/dwb/lib/nterm/tab.man
/opt/dwb/lib/nterm/tab.tn300
/opt/dwb/lib/nterm/tab.X
/opt/dwb/lib/nterm/tab.X97
/opt/dwb/lib/nterm/tab.X97ni
/opt/dwb/lib/nterm/tab.X97test
/opt/dwb/lib/postscript
/opt/dwb/lib/postscript/aps.ps
/opt/dwb/lib/postscript/banner.ps
/opt/dwb/lib/postscript/baseline.ps
/opt/dwb/lib/postscript/color.ps
/opt/dwb/lib/postscript/cropmarks.ps
/opt/dwb/lib/postscript/dpost.ps
/opt/dwb/lib/postscript/draw.ps
/opt/dwb/lib/postscript/fatcourier.ps
/opt/dwb/lib/postscript/forms.ps
/opt/dwb/lib/postscript/grabit.ps
/opt/dwb/lib/postscript/hardcopy.ps
/opt/dwb/lib/postscript/Nroundpage.ps
/opt/dwb/lib/postscript/postbgi.ps
/opt/dwb/lib/postscript/postdaisy.ps
/opt/dwb/lib/postscript/postdmd.ps
/opt/dwb/lib/postscript/postgif.ps
/opt/dwb/lib/postscript/postmd.ps
/opt/dwb/lib/postscript/postnprint.ps
/opt/dwb/lib/postscript/postplot.ps
/opt/dwb/lib/postscript/postprint.ps
/opt/dwb/lib/postscript/posttek.ps
/opt/dwb/lib/postscript/printfont.ps
/opt/dwb/lib/postscript/ps.requests
/opt/dwb/lib/postscript/ps_include.ps
/opt/dwb/lib/postscript/roundpage.ps
/opt/dwb/lib/postscript/setbaud.ps
/opt/dwb/lib/postscript/shade.ps
/opt/dwb/lib/postscript/trofftable.ps
/opt/dwb/lib/postscript/unbind.ps
/opt/dwb/lib/raster
/opt/dwb/lib/raster/rastpcl
/opt/dwb/lib/raster/rastpcl/B.10
/opt/dwb/lib/raster/rastpcl/B.11
/opt/dwb/lib/raster/rastpcl/B.12
/opt/dwb/lib/raster/rastpcl/B.14
/opt/dwb/lib/raster/rastpcl/B.16
/opt/dwb/lib/raster/rastpcl/B.18
/opt/dwb/lib/raster/rastpcl/B.20
/opt/dwb/lib/raster/rastpcl/B.22
/opt/dwb/lib/raster/rastpcl/B.24
/opt/dwb/lib/raster/rastpcl/B.28
/opt/dwb/lib/raster/rastpcl/B.36
/opt/dwb/lib/raster/rastpcl/B.6
/opt/dwb/lib/raster/rastpcl/B.7
/opt/dwb/lib/raster/rastpcl/B.8
/opt/dwb/lib/raster/rastpcl/B.9
/opt/dwb/lib/raster/rastpcl/BI.10
/opt/dwb/lib/raster/rastpcl/BI.11
/opt/dwb/lib/raster/rastpcl/BI.12
/opt/dwb/lib/raster/rastpcl/BI.14
/opt/dwb/lib/raster/rastpcl/BI.16
/opt/dwb/lib/raster/rastpcl/BI.18
/opt/dwb/lib/raster/rastpcl/BI.20
/opt/dwb/lib/raster/rastpcl/BI.22
/opt/dwb/lib/raster/rastpcl/BI.24
/opt/dwb/lib/raster/rastpcl/BI.28
/opt/dwb/lib/raster/rastpcl/BI.36
/opt/dwb/lib/raster/rastpcl/BI.6
/opt/dwb/lib/raster/rastpcl/BI.7
/opt/dwb/lib/raster/rastpcl/BI.8
/opt/dwb/lib/raster/rastpcl/BI.9
/opt/dwb/lib/raster/rastpcl/CW.10
/opt/dwb/lib/raster/rastpcl/CW.11
/opt/dwb/lib/raster/rastpcl/CW.12
/opt/dwb/lib/raster/rastpcl/CW.14
/opt/dwb/lib/raster/rastpcl/CW.16
/opt/dwb/lib/raster/rastpcl/CW.18
/opt/dwb/lib/raster/rastpcl/CW.20
/opt/dwb/lib/raster/rastpcl/CW.22
/opt/dwb/lib/raster/rastpcl/CW.24
/opt/dwb/lib/raster/rastpcl/CW.28
/opt/dwb/lib/raster/rastpcl/CW.36
/opt/dwb/lib/raster/rastpcl/CW.6
/opt/dwb/lib/raster/rastpcl/CW.7
/opt/dwb/lib/raster/rastpcl/CW.8
/opt/dwb/lib/raster/rastpcl/CW.9
/opt/dwb/lib/raster/rastpcl/GR.10
/opt/dwb/lib/raster/rastpcl/GR.11
/opt/dwb/lib/raster/rastpcl/GR.12
/opt/dwb/lib/raster/rastpcl/GR.14
/opt/dwb/lib/raster/rastpcl/GR.16
/opt/dwb/lib/raster/rastpcl/GR.18
/opt/dwb/lib/raster/rastpcl/GR.20
/opt/dwb/lib/raster/rastpcl/GR.22
/opt/dwb/lib/raster/rastpcl/GR.24
/opt/dwb/lib/raster/rastpcl/GR.28
/opt/dwb/lib/raster/rastpcl/GR.36
/opt/dwb/lib/raster/rastpcl/GR.6
/opt/dwb/lib/raster/rastpcl/GR.7
/opt/dwb/lib/raster/rastpcl/GR.8
/opt/dwb/lib/raster/rastpcl/GR.9
/opt/dwb/lib/raster/rastpcl/H.10
/opt/dwb/lib/raster/rastpcl/H.11
/opt/dwb/lib/raster/rastpcl/H.12
/opt/dwb/lib/raster/rastpcl/H.14
/opt/dwb/lib/raster/rastpcl/H.16
/opt/dwb/lib/raster/rastpcl/H.18
/opt/dwb/lib/raster/rastpcl/H.20
/opt/dwb/lib/raster/rastpcl/H.22
/opt/dwb/lib/raster/rastpcl/H.24
/opt/dwb/lib/raster/rastpcl/H.28
/opt/dwb/lib/raster/rastpcl/H.36
/opt/dwb/lib/raster/rastpcl/H.6
/opt/dwb/lib/raster/rastpcl/H.7
/opt/dwb/lib/raster/rastpcl/H.8
/opt/dwb/lib/raster/rastpcl/H.9
/opt/dwb/lib/raster/rastpcl/HI.10
/opt/dwb/lib/raster/rastpcl/HI.11
/opt/dwb/lib/raster/rastpcl/HI.12
/opt/dwb/lib/raster/rastpcl/HI.14
/opt/dwb/lib/raster/rastpcl/HI.16
/opt/dwb/lib/raster/rastpcl/HI.18
/opt/dwb/lib/raster/rastpcl/HI.20
/opt/dwb/lib/raster/rastpcl/HI.22
/opt/dwb/lib/raster/rastpcl/HI.24
/opt/dwb/lib/raster/rastpcl/HI.28
/opt/dwb/lib/raster/rastpcl/HI.36
/opt/dwb/lib/raster/rastpcl/HI.6
/opt/dwb/lib/raster/rastpcl/HI.7
/opt/dwb/lib/raster/rastpcl/HI.8
/opt/dwb/lib/raster/rastpcl/HI.9
/opt/dwb/lib/raster/rastpcl/I.10
/opt/dwb/lib/raster/rastpcl/I.11
/opt/dwb/lib/raster/rastpcl/I.12
/opt/dwb/lib/raster/rastpcl/I.14
/opt/dwb/lib/raster/rastpcl/I.16
/opt/dwb/lib/raster/rastpcl/I.18
/opt/dwb/lib/raster/rastpcl/I.20
/opt/dwb/lib/raster/rastpcl/I.22
/opt/dwb/lib/raster/rastpcl/I.24
/opt/dwb/lib/raster/rastpcl/I.28
/opt/dwb/lib/raster/rastpcl/I.36
/opt/dwb/lib/raster/rastpcl/I.6
/opt/dwb/lib/raster/rastpcl/I.7
/opt/dwb/lib/raster/rastpcl/I.8
/opt/dwb/lib/raster/rastpcl/I.9
/opt/dwb/lib/raster/rastpcl/LO.36
/opt/dwb/lib/raster/rastpcl/PA.10
/opt/dwb/lib/raster/rastpcl/PA.11
/opt/dwb/lib/raster/rastpcl/PA.12
/opt/dwb/lib/raster/rastpcl/PA.14
/opt/dwb/lib/raster/rastpcl/PA.16
/opt/dwb/lib/raster/rastpcl/PA.18
/opt/dwb/lib/raster/rastpcl/PA.20
/opt/dwb/lib/raster/rastpcl/PA.22
/opt/dwb/lib/raster/rastpcl/PA.24
/opt/dwb/lib/raster/rastpcl/PA.28
/opt/dwb/lib/raster/rastpcl/PA.36
/opt/dwb/lib/raster/rastpcl/PA.6
/opt/dwb/lib/raster/rastpcl/PA.7
/opt/dwb/lib/raster/rastpcl/PA.8
/opt/dwb/lib/raster/rastpcl/PA.9
/opt/dwb/lib/raster/rastpcl/PI.10
/opt/dwb/lib/raster/rastpcl/PI.11
/opt/dwb/lib/raster/rastpcl/PI.12
/opt/dwb/lib/raster/rastpcl/PI.14
/opt/dwb/lib/raster/rastpcl/PI.16
/opt/dwb/lib/raster/rastpcl/PI.18
/opt/dwb/lib/raster/rastpcl/PI.20
/opt/dwb/lib/raster/rastpcl/PI.22
/opt/dwb/lib/raster/rastpcl/PI.24
/opt/dwb/lib/raster/rastpcl/PI.28
/opt/dwb/lib/raster/rastpcl/PI.36
/opt/dwb/lib/raster/rastpcl/PI.6
/opt/dwb/lib/raster/rastpcl/PI.7
/opt/dwb/lib/raster/rastpcl/PI.8
/opt/dwb/lib/raster/rastpcl/PI.9
/opt/dwb/lib/raster/rastpcl/R.10
/opt/dwb/lib/raster/rastpcl/R.11
/opt/dwb/lib/raster/rastpcl/R.12
/opt/dwb/lib/raster/rastpcl/R.14
/opt/dwb/lib/raster/rastpcl/R.16
/opt/dwb/lib/raster/rastpcl/R.18
/opt/dwb/lib/raster/rastpcl/R.20
/opt/dwb/lib/raster/rastpcl/R.22
/opt/dwb/lib/raster/rastpcl/R.24
/opt/dwb/lib/raster/rastpcl/R.28
/opt/dwb/lib/raster/rastpcl/R.36
/opt/dwb/lib/raster/rastpcl/R.6
/opt/dwb/lib/raster/rastpcl/R.7
/opt/dwb/lib/raster/rastpcl/R.8
/opt/dwb/lib/raster/rastpcl/R.9
/opt/dwb/lib/raster/rastpcl/RASTERDATA
/opt/dwb/lib/raster/rastpcl/RASTERLIST
/opt/dwb/lib/raster/rastpcl/S.10
/opt/dwb/lib/raster/rastpcl/S.11
/opt/dwb/lib/raster/rastpcl/S.12
/opt/dwb/lib/raster/rastpcl/S.14
/opt/dwb/lib/raster/rastpcl/S.16
/opt/dwb/lib/raster/rastpcl/S.18
/opt/dwb/lib/raster/rastpcl/S.20
/opt/dwb/lib/raster/rastpcl/S.22
/opt/dwb/lib/raster/rastpcl/S.24
/opt/dwb/lib/raster/rastpcl/S.28
/opt/dwb/lib/raster/rastpcl/S.36
/opt/dwb/lib/raster/rastpcl/S.6
/opt/dwb/lib/raster/rastpcl/S.7
/opt/dwb/lib/raster/rastpcl/S.8
/opt/dwb/lib/raster/rastpcl/S.9
/opt/dwb/lib/raster/rastpcl/S1.10
/opt/dwb/lib/raster/rastpcl/S1.11
/opt/dwb/lib/raster/rastpcl/S1.12
/opt/dwb/lib/raster/rastpcl/S1.14
/opt/dwb/lib/raster/rastpcl/S1.16
/opt/dwb/lib/raster/rastpcl/S1.18
/opt/dwb/lib/raster/rastpcl/S1.20
/opt/dwb/lib/raster/rastpcl/S1.22
/opt/dwb/lib/raster/rastpcl/S1.24
/opt/dwb/lib/raster/rastpcl/S1.28
/opt/dwb/lib/raster/rastpcl/S1.36
/opt/dwb/lib/raster/rastpcl/S1.6
/opt/dwb/lib/raster/rastpcl/S1.7
/opt/dwb/lib/raster/rastpcl/S1.8
/opt/dwb/lib/raster/rastpcl/S1.9
/opt/dwb/lib/raster/rastpcl/S2.10
/opt/dwb/lib/raster/rastpcl/S2.11
/opt/dwb/lib/raster/rastpcl/S2.12
/opt/dwb/lib/raster/rastpcl/S2.14
/opt/dwb/lib/raster/rastpcl/S2.16
/opt/dwb/lib/raster/rastpcl/S2.18
/opt/dwb/lib/raster/rastpcl/S2.20
/opt/dwb/lib/raster/rastpcl/S2.22
/opt/dwb/lib/raster/rastpcl/S2.24
/opt/dwb/lib/raster/rastpcl/S2.28
/opt/dwb/lib/raster/rastpcl/S2.36
/opt/dwb/lib/raster/rastpcl/S2.6
/opt/dwb/lib/raster/rastpcl/S2.7
/opt/dwb/lib/raster/rastpcl/S2.8
/opt/dwb/lib/raster/rastpcl/S2.9
/opt/dwb/lib/raster/rastpcl/S3.10
/opt/dwb/lib/raster/rastpcl/S3.11
/opt/dwb/lib/raster/rastpcl/S3.12
/opt/dwb/lib/raster/rastpcl/S3.14
/opt/dwb/lib/raster/rastpcl/S3.16
/opt/dwb/lib/raster/rastpcl/S3.18
/opt/dwb/lib/raster/rastpcl/S3.20
/opt/dwb/lib/raster/rastpcl/S3.22
/opt/dwb/lib/raster/rastpcl/S3.24
/opt/dwb/lib/raster/rastpcl/S3.28
/opt/dwb/lib/raster/rastpcl/S3.36
/opt/dwb/lib/raster/rastpcl/S3.6
/opt/dwb/lib/raster/rastpcl/S3.7
/opt/dwb/lib/raster/rastpcl/S3.8
/opt/dwb/lib/raster/rastpcl/S3.9
/opt/dwb/lib/term
/opt/dwb/lib/tmac
/opt/dwb/lib/tmac/hyphen.tex
/opt/dwb/lib/tmac/tmac.an
/opt/dwb/lib/tmac/tmac.color
/opt/dwb/lib/tmac/tmac.cs
/opt/dwb/lib/tmac/tmac.m
/opt/dwb/lib/tmac/tmac.pictures
/opt/dwb/lib/tmac/tmac.ps
/opt/dwb/lib/tmac/tmac.s
/opt/dwb/lib/tmac/tmac.safe
/opt/dwb/lib/tmac/tmac.scover
/opt/dwb/lib/tmac/tmac.sdisp
/opt/dwb/lib/tmac/tmac.skeep
/opt/dwb/lib/tmac/tmac.srefs
/opt/dwb/lib/tmac/tmac.v
/opt/dwb/lib/tmac/tmac.view
/opt/dwb/man/
/opt/dwb/man/man1
/opt/dwb/man/man1/atoL1.1
/opt/dwb/man/man1/atoL1sim.1
/opt/dwb/man/man1/buildtables.1
/opt/dwb/man/man1/checkdoc.1
/opt/dwb/man/man1/col.1
/opt/dwb/man/man1/cropmarks.1
/opt/dwb/man/man1/diffmk.1
/opt/dwb/man/man1/download.1
/opt/dwb/man/man1/dpost.1
/opt/dwb/man/man1/dsplit.1
/opt/dwb/man/man1/dwbv.1
/opt/dwb/man/man1/eqn.1
/opt/dwb/man/man1/gc2pic.1
/opt/dwb/man/man1/grabit.1
/opt/dwb/man/man1/grap.1
/opt/dwb/man/man1/hardcopy.1
/opt/dwb/man/man1/hyphen.1
/opt/dwb/man/man1/L1toa.1
/opt/dwb/man/man1/laserbar.1
/opt/dwb/man/man1/mm.1
/opt/dwb/man/man1/mmt.1
/opt/dwb/man/man1/mvt.1
/opt/dwb/man/man1/neqn.1
/opt/dwb/man/man1/nroff.1
/opt/dwb/man/man1/otbl.1
/opt/dwb/man/man1/pic.1
/opt/dwb/man/man1/picasso.1
/opt/dwb/man/man1/picpack.1
/opt/dwb/man/man1/postbgi.1
/opt/dwb/man/man1/postdaisy.1
/opt/dwb/man/man1/postdmd.1
/opt/dwb/man/man1/postgif.1
/opt/dwb/man/man1/postio.1
/opt/dwb/man/man1/postmd.1
/opt/dwb/man/man1/postnprint.1
/opt/dwb/man/man1/postplot.1
/opt/dwb/man/man1/postprint.1
/opt/dwb/man/man1/postreverse.1
/opt/dwb/man/man1/posttek.1
/opt/dwb/man/man1/printfont.1
/opt/dwb/man/man1/psencoding.1
/opt/dwb/man/man1/tbl.1
/opt/dwb/man/man1/tc.1
/opt/dwb/man/man1/troff.1
/opt/dwb/man/man1/trofftable.1
/opt/dwb/man/man5
/opt/dwb/man/man5/eqnchar.5
/opt/dwb/man/man5/font.5
/opt/dwb/man/man5/man.5
/opt/dwb/man/man5/mcolor.5
/opt/dwb/man/man5/mcs.5
/opt/dwb/man/man5/mm.5
/opt/dwb/man/man5/mpictures.5
/opt/dwb/man/man5/mpm.5
/opt/dwb/man/man5/mps.5
/opt/dwb/man/man5/ms.5
/opt/dwb/man/man5/msafe.5
/opt/dwb/man/man5/mv.5
/opt/dwb/man/man5/mview.5
/opt/dwb/man/man5/nterm.5
/opt/dwb/man/man5/troff.5
/opt/dwb/man/man5/xpand.5
/opt/dwb/pub/
/opt/dwb/pub/cateqnchar
/opt/dwb/pub/DWB3.3.ps
/opt/dwb/pub/eqnchar
/opt/dwb/pub/i300eqnchar
/opt/dwb/pub/latin1.add.ps
/opt/dwb/pub/mm.notes.ps
/opt/dwb/pub/post.add.ps
/opt/dwb/pub/posteqnchar
/opt/dwb/pub/tbl.notes.ps
/opt/dwb/pub/terminals



FFFFAAAAUUUUCCCCEEEETTTT((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((OOOOccccttttoooobbbbeeeerrrr 22228888,,,, 1111999999998888)))) FFFFAAAAUUUUCCCCEEEETTTT((((1111))))



NNNNAAAAMMMMEEEE
faucet - a fixture for a BSD network pipe

netpipes 4.2


SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
ffffaaaauuuucccceeeetttt _p_o_r_t (--------iiiinnnn|--------oooouuuutttt|--------eeeerrrrrrrr|--------ffffdddd _n)+ [--------oooonnnncccceeee] [--------vvvveeeerrrrbbbboooosssseeee]
[--------qqqquuuuiiiieeeetttt] [--------uuuunnnniiiixxxx] [--------ffffoooorrrreeeeiiiiggggnnnnhhhhoooosssstttt _a_d_d_r] [--------ffffoooorrrreeeeiiiiggggnnnnppppoooorrrrtttt _p_o_r_t]
[--------llllooooccccaaaallllhhhhoooosssstttt _a_d_d_r] [--------sssseeeerrrriiiiaaaallll] [--------ddddaaaaeeeemmmmoooonnnn] [--------sssshhhhuuuuttttddddoooowwwwnnnn (r|w) ]
[--------ppppiiiiddddffffiiiilllleeee _f_i_l_e_n_a_m_e] [--------nnnnoooorrrreeeeuuuusssseeeeaaaaddddddddrrrr] [--------bbbbaaaacccckkkklllloooogggg _n]
[----[iiii][oooo][eeee][####_3[,_4[,_5...]]][vvvv][1111][qqqq][uuuu][dddd][ssss]] [----pppp
_f_o_r_e_i_g_n-_p_o_r_t] [----hhhh _f_o_r_e_i_g_n-_h_o_s_t] [----HHHH _l_o_c_a_l-_h_o_s_t] _c_o_m_m_a_n_d _a_r_g_s


DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
ffffaaaauuuucccceeeetttt attempts to provide the functionality of pipes over
the network. It behaves as the server end of a
server-client connection. When used with hhhhoooosssseeee((((1111)))) it can
function as a replacement for

tar -cf - . | rsh other "cd destdir; tar -xf -"

ffffaaaauuuucccceeeetttt and hhhhoooosssseeee are especially useful when you don't have
easy non-interactive access to the destination account (such
as a root account where .rhosts are a bad idea).

ffffaaaauuuucccceeeetttt creates a BSD socket, binds it to the _p_o_r_t specified
on the command line, and listens for connections.

Every time ffffaaaauuuucccceeeetttt gets a connection it exec(2)s _c_o_m_m_a_n_d and
its _a_r_g_s with stdin, stdout, stderr, and/or arbitrary file
descriptors redirected according to the --------iiiinnnn --------oooouuuutttt --------eeeerrrrrrrr
--------ffffdddd _n flags. ffffaaaauuuucccceeeetttt also automagically shuts down the
unused half of the connection if only --------iiiinnnn is specified or
if only --------oooouuuutttt and/or --------eeeerrrrrrrr are specified. See the --------sssshhhhuuuutttt----
ddddoooowwwwnnnn option for more information.


OOOOPPPPTTTTIIIIOOOONNNNSSSS
If the --------oooonnnncccceeee flag is specified, ffffaaaauuuucccceeeetttt will exec(2) the
_c_o_m_m_a_n_d instead of fork(2)ing and exec(2)ing. --------oooonnnncccceeee means
that the network pipe is only good for one shot.

The --------vvvveeeerrrrbbbboooosssseeee flag specifies that ffffaaaauuuucccceeeetttt should print infor-
mation about connecting hosts. This information includes
the numeric host address, host names, and foreign port num-
bers. The --------qqqquuuuiiiieeeetttt flag specifies that ffffaaaauuuucccceeeetttt should NOT
print such info. --------qqqquuuuiiiieeeetttt is the default.

The --------uuuunnnniiiixxxx flag specifies that the _p_o_r_t is not an internet
port number or service name, but instead it is a file name



Page 1 (last mod. 2/4/93)






FFFFAAAAUUUUCCCCEEEETTTT((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((OOOOccccttttoooobbbbeeeerrrr 22228888,,,, 1111999999998888)))) FFFFAAAAUUUUCCCCEEEETTTT((((1111))))



for a UNIX domain socket.

The --------ffffoooorrrreeeeiiiiggggnnnnhhhhoooosssstttt option specifies that faucet should reject
all connections that do not come from the _h_o_s_t machine.
Similarly --------ffffoooorrrreeeeiiiiggggnnnnppppoooorrrrtttt specifies that faucet should reject
all connections that are not bound on their local machine to
the _p_o_r_t argument. The above two options allow a crude form
of authentication. Note that on UNIX systems only root can
bind a socket to a port number below 1024.

PPPPlllleeeeaaaasssseeee do not be fooled into thinking this makes faucet
secure. There are ways to spoof IP numbers that have been
known for years (but only publicized recently). I do think
that this method is safe from DNS spoofs, but you probably
should have nnnnoooossssppppooooooooffff oooonnnn in /etc/host.conf anyway.

--------llllooooccccaaaallllhhhhoooosssstttt specifies that the listening socket should be
bound to a specific internet address on this host. This is
only useful on hosts with several internet numbers.

--------ddddaaaaeeeemmmmoooonnnn specifies that the faucet should disassociate from
the controlling terminal once it has started listening on
the socket. This is done using the setsid() system call.
If you don't have setsid on your system, it uses the stan-
dard ``close all file descriptors, ioctl TIOCNOTTY, fork()
and parent exit'' sequence.

--------sssshhhhuuuuttttddddoooowwwwnnnn is used to turn the (normally) bi-directional
socket into a uni-directional one If the `r' is present,
then ffffaaaauuuucccceeeetttt will close half the connection to make it a
read-only socket. If we try to write, it will fail. If the
remote connection tries to read, it will percieve the socket
as closed. If instead the `w' is present, then ffffaaaauuuucccceeeetttt will
close the other half of the connection to make it a
write-only socket. If we try to read, we will percieve the
socket as closed. If the remote connection tries to write,
it will fail. The default behavior is to leave both halves
open, however the shutdown of half of the connection is
automagically done by certain combinations of the --------iiiinnnn,
--------oooouuuutttt, and --------eeeerrrrrrrr flags. To suppress their automagic behav-
ior you can use (respectively) --fd 0, --fd 1, and --fd 2.

--------sssshhhhuuuuttttddddoooowwwwnnnn may not be used with some internet servers (such
as certain httpds) because they interpret the closing of one
half of the connection as a close on the entire connection.
This warning applies to --------iiiinnnn, --------oooouuuutttt, and --------eeeerrrrrrrr.

--------sssseeeerrrriiiiaaaallll causes faucet to wait for one child to finish
before accepting any more connections. Serialization is a
very crude form of critical-section management.

--------ppppiiiiddddffffiiiilllleeee _f_i_l_e_n_a_m_e commands ffffaaaauuuucccceeeetttt to write its process id



Page 2 (last mod. 2/4/93)






FFFFAAAAUUUUCCCCEEEETTTT((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((OOOOccccttttoooobbbbeeeerrrr 22228888,,,, 1111999999998888)))) FFFFAAAAUUUUCCCCEEEETTTT((((1111))))



into _f_i_l_e_n_a_m_e. This is useful when faucet is part of a
larger system and a controlling process might want to kill
the faucet. --------ppppiiiiddddffffiiiilllleeee functions properly when using the
--------ddddaaaaeeeemmmmoooonnnn option.

By default, ffffaaaauuuucccceeeetttt performs a

setsockopt(fd, SOL_SOCKET, SO_REUSEADDR...)

which prevents the ``Address in use'' problem that
``plagued'' netpipes versions 4.0 and earlier. --------nnnnoooorrrreeeeuuuusssseeee----
aaaaddddddddrrrr tells faucet to skip that system call, and revert to
pre-4.1 behavior. Without this call, the socket is not
always available for immediate reuse after the faucet exits.

--------bbbbaaaacccckkkklllloooogggg _n allows you to specify the second parameter to
the listen(2) system call. The default is 5.


SSSSHHHHOOOORRRRTTTT FFFFLLLLAAAAGGGGSSSS
To reduce the typing requirements for arguments (and to pay
homage to the age-old tradition of UNIX cryptotaxonomy) I
have added some short forms of the flags. Here is a corre-
spondence chart:

box; |lw(0.4i)|lw(1.2i)| |cBw(0.4i)|lBw(1.2i)|.
Short Long iiii iiiinnnn oooo oooouuuutttt eeee eeeerrrrrrrr ####_n ffffdddd_n
vvvv vvvveeeerrrrbbbboooosssseeee 1111 oooonnnncccceeee qqqq qqqquuuuiiiieeeetttt uuuu uuuunnnniiiixxxx dddd ddddaaaaeeeemmmmoooonnnn
ssss sssseeeerrrriiiiaaaallll pppp ffffoooorrrreeeeiiiiggggnnnnppppoooorrrrtttt hhhh ffffoooorrrreeeeiiiiggggnnnnhhhhoooosssstttt HHHH llllooooccccaaaallllhhhhoooosssstttt

For example, the following command

example$ faucet 3000 --out --verbose --once --foreignhost client echo blah

could be written

example$ faucet 3000 -ov1h client echo blah

The ----pppp, ----hhhh, and ----HHHH flags take an argument, but the flags may
be grouped into one argument. They then grab the arguments
they need from the command line in the order the flags
appear.

example$ faucet 3000 -hpHov1 client 2999 example-le2 echo blah

Whereas each --------ffffdddd word flag required an individual descrip-
tor, the ----#### character flag can take multiple descriptors.
The following are equivalent:

example$ faucet 3000 --fd 0 --fd 1 --verbose --once echo blah
example$ faucet 3000 -#0,1v --once echo blah
example$ faucet 3000 -v1#0,1 echo blah



Page 3 (last mod. 2/4/93)






FFFFAAAAUUUUCCCCEEEETTTT((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((OOOOccccttttoooobbbbeeeerrrr 22228888,,,, 1111999999998888)))) FFFFAAAAUUUUCCCCEEEETTTT((((1111))))



example$ faucet 3000 -#0,1v1 echo blah

Note that you have to pay attention when using the ----#### char-
acter flag and the ----1111 character flag in the same argument.
Also, remember the special shutdown(2) semantics of ----iiiinnnn and
----oooouuuutttt.


EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
This creates a TCP-IP socket on the local machine bound to
port 3000.

example$ faucet 3000 --out --verbose tar -cf - .

Every time some process (from any machine) attempts to con-
nect to port 3000 on this machine the ffffaaaauuuucccceeeetttt program will
fork(2) a process and the child will exec(2) a

tar -cf - .

The --------oooouuuutttt option means that the output of the child process
will have been redirected into the new socket retrieved by
the accept(2) call. --------vvvveeeerrrrbbbboooosssseeee means that faucet will print
information about each new connection.

This creates a UNIX domain socket in the current directory

example$ faucet u-socket --out --err --once --unix csh -c \
"dd if=angio.pgm | funky.perl.script"

The --------oooouuuutttt --------eeeerrrrrrrr option means that stdout and stderr will be
redirected in the child process. The --------oooonnnncccceeee option means
that the faucet will not fork(2), but exec(2) the process so
that only the first process can connect to the u-socket
before the faucet becomes unavailable.

This example listens on a socket until the first connection
comes through. It then spawns a bidirectional copy that is
similar to hose -slave.

faucet 3000 -1v --fd 3 sh -c 'cat <&3 & cat >&3 ; sockdown 3'


SSSSEEEEEEEE AAAALLLLSSSSOOOO
netpipes (1), hose (1), sockdown (1), getpeername (1),
socket (2), bind (2), listen (2), accept (2), shutdown (2),
services (5), gethostbyaddr (3)


BBBBUUUUGGGGSSSS
There is a problem with almost every OS I have used faucet
on. Ports are sometimes not recycled swiftly enough. If



Page 4 (last mod. 2/4/93)






FFFFAAAAUUUUCCCCEEEETTTT((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((OOOOccccttttoooobbbbeeeerrrr 22228888,,,, 1111999999998888)))) FFFFAAAAUUUUCCCCEEEETTTT((((1111))))



you kill one faucet and try to start another that wants to
listen on the same port you will often see pre-4.1 faucets
print the following warning over and over again:

faucet: Address 3000 in use, sleeping 10.
faucet: Trying again . . .

but you won't actually be able to connect(2) to that port
(with hhhhoooosssseeee(1), for example) because you'll get a ``connec-
tion refused''.

There was also an experimental Linux kernel that NEVER recy-
cled ports (I quickly switched back to my old kernel).

I have been informed that this is a side-effect of the TCP
specification and that I should use the SO_REUSEADDR option
to work around it, so I do.


NNNNOOOOTTTTEEEESSSS
Doubtless there are bugs in this program, especially in the
unix domain socket portions. I welcome problem reports and
would like to make these programs as "clean" (no leftover
files, sockets) as possible.

4.1 added --------bbbbaaaacccckkkklllloooogggg and --------nnnnoooorrrreeeeuuuusssseeeeaaaaddddddddrrrr. --------nnnnoooorrrreeeeuuuusssseeeeaaaaddddddddrrrr
reflects the fact that 4.1 also added the SO_REUSEADDR
socket option as the default.

4.0 made the full-word arguments use -- like many GNU pro-
grams. They are still available with a single - for
backward-compatibility.

3.1 added the single-character flags and the -pidfile
option. It also switched to the setsid(2) system call to
detach itself from the process group for the -daemon flag.
I've been hacking at UNIX for years, but there are still
some things that I never really learned, and others that
have been changing. I need to buy a book.

Release 2.3 added support for multi-homed hosts: hosts with
multiple internet numbers (such as gateways). Before this
faucet assumed that the first internet number that gethost-
byname returned was the only one. --------ffffoooorrrreeeeiiiiggggnnnnhhhhoooosssstttt authentica-
tion was weakened by this inadequacy so I beefed up the
algorithms. --------ffffoooorrrreeeeiiiiggggnnnnhhhhoooosssstttt will accept a connection from any
of the internet numbers associated with the host name.


CCCCRRRREEEEDDDDIIIITTTTSSSS
Thanks to Steve Clift <clift@xxxxxxxxxxx> for SGI (SysV)
patches.



Page 5 (last mod. 2/4/93)






FFFFAAAAUUUUCCCCEEEETTTT((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((OOOOccccttttoooobbbbeeeerrrr 22228888,,,, 1111999999998888)))) FFFFAAAAUUUUCCCCEEEETTTT((((1111))))



Many people complained about the old way of specifying the
command. Thanks to whoever gave me the alternative which is
now implemented. It is much better.

Randy Fischer <fischer@xxxxxxxxxxxx> finally prodded me into
fixing the old lame non-handling of multi-homed host.

Thanks to all who suggested I use setsid() for -daemon mode.

Thanks to the Spring 1996 UF CIS consulting staff
<consult@xxxxxxxxxxx> for pointing out the sys_errlist[]
declaration conflict on FreeBSD. Sometimes I hate Sun
Microsystems.

Thanks to Daniel O'Connor
<doconnor@xxxxxxxxxxxxxxxxxxxxxxxx> for suggesting the -pid-
file flag.

Big thanks to Joe Traister <traister@xxxxxxxx> for his sig-
nal handling patches, strerror surrogate, and other assorted
hacks.

Thanks to Thomas A. Endo <tendo@xxxxxxxxxx> for dropping an
SO_REUSEADDR patch in my lap. Otherwise I wouldn't have
gotten to it till 2001.


CCCCOOOOPPPPYYYYRRRRIIIIGGGGHHHHTTTT
Copyright (C) 1992-98 Robert Forsman

This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later ver-
sion.

This program is distributed in the hope that it will be use-
ful, but WITHOUT ANY WARRANTY; without even the implied war-
ranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PUR-
POSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public
License along with this program; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
02139, USA.


AAAAUUUUTTTTHHHHOOOORRRR
Robert Forsman
thoth@xxxxxxxxxxxxxx
Purple Frog Software
http://web.purplefrog.com/~thoth/



Page 6 (last mod. 2/4/93)



_______________________________________________
freebsd-arch@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-unsubscribe@xxxxxxxxxxx"

Relevant Pages

  • Re: Communicating with a servlet using NIO?
    ... TCP/IP uses the same port number as the listening ... port for incoming connections. ... connection to it - all communication beyond the initial connection by ... and returns the descriptor for the new socket. ...
    (comp.lang.java.programmer)
  • Re: Definition of a socket on Suns website
    ... the server gets a new socket bound to a different port. ... It needs a new socket (and consequently a different port number) so that it can continue to listen to the original socket for connection requests while tending to the needs of the connected client. ...
    (comp.lang.java.programmer)
  • Re: Socket and cycle problem
    ... listening this port countinously. ... So I need make some loop to print data from 3883 port permanent. ... the data it receives from each connection after the remote side drops ... If you were to use the socket module, then it would look something like this: ...
    (comp.lang.python)
  • Re: fork + socket -server fails
    ... If I use from either Expect or Tclx in combination with [socket ... On FC-4 I can telnet to port ... 8015 and the script prints out the expected "Accepted connection:" ... puts "Accepted connection: $args" ...
    (comp.lang.tcl)
  • Re: Socket class, connect to an endpoint with port 21
    ... It seems that you might have a FTP proxy server soemwhere in between. ... I'm developing a FTP Client using the socket class. ... to verify the connection I always use the Socket.Connected var. ... it always connects if the remote Endpoint uses the port ...
    (microsoft.public.dotnet.languages.csharp)